ã¯ããã«
ROSã«ã¯ïŒããããã®èªåŸç§»åãå®çŸããNavigation Stack ãšããæ çµã¿ãååšããŸãïŒ
ROSã®ãçŽ äººã§ããç§ããããšåºäŒã£ããšãïŒããæããŸããïŒ
ããã£ããã£ããããŒwã
äžæè ã®ç§ã¯ïŒçµè·¯æ¢çŽ¢ïŒèªå·±äœçœ®æšå®ïŒå°å³çæãªã©ã®æ©èœã«å¯ŸããŠïŒçš®ã ã®ã»ã³ãµãæ å ±ãã©ã®ããã«äœçšããŠããã®ãïŒäžã å šäœåãææ¡ã§ããªããŸãŸäœãšãªã䜿ãããŠããã£ãŠããŸããïŒ
ãã®ãŸãŸã§ã¯ãããïŒãšããããã§ïŒNavigation Stack ã®ãœãããŠã§ã¢ã®æ§æãšïŒåã¢ãžã¥ãŒã«ããããšãããã¡ãã»ãŒãžã®é¢ä¿æ§ãããçšåºŠåããããã«ãªãããšãç®æšã«ïŒã¡ã¢ãæžããŸãïŒ
ç¹ã«ïŒèªå·±äœçœ®æšå®ãšå°å³çæã«ã€ããŠã¯ïŒãã®åçãçŽæçã«çè§£ã§ããããã«ã€ã©ã¹ãã䜿ã£ã説æã詊ã¿ãŸãïŒãããã®ä»çµã¿ã¯S Thrunã, Probabilistic Roboticsãå šé¢çã«åèã«ãããŠé ããŸããïŒåœæ¹ã®èšäºã«èªèã®èª€ãïŒãææãããããŸãããïŒãææãé ããŸããã幞ãã§ãïŒ
ç®æ¬¡
- å°å ¥
- move_base (ããã²ãŒã·ã§ã³)
- ROSã§éãã§ã¿ã
- ãœãããŠã§ã¢æ§æãã¿ã
- amcl (èªå·±äœçœ®æšå®)
- ROSã§éãã§ã¿ã
- ãœãããŠã§ã¢æ§æãã¿ã
- åçãã¿ã (æºåç·š)
- åçãã¿ã (å¿çšç·š)
- gmapping (å°å³çæ)
- ROSã§éãã§ã¿ã
- ãœãããŠã§ã¢æ§æãã¿ã
- åçãã¿ã(å¿çšç·š)
- åçãã¿ã(æºåç·š ãã®1)
- åçãã¿ã(æºåç·š ãã®2)
-
Navigation Stack ã®äžå¿èŠçŽ ã§ããïŒããã²ãŒã·ã§ã³ïŒèªå·±äœçœ®æšå®ïŒå°å³çæã®åç¯ã«ã€ããŠïŒROSã®ããã±ãŒãžã§éãã§ã¿ãé ïŒãœãããŠã§ã¢æ§æãã¿ãé ïŒãã®åçãã¿ãé ã«åããŠèšè¿°ããŸãïŒ
-
ããã²ãŒã·ã§ã³ã«ã€ããŠã¯ïŒå, "ROSã®æŽ»çšã«ããå±å€ã®æ©è¡è 空éã«é©å¿ããèªåŸç§»åããããã®éçº", ããããå·¥åŠã»ãããŒ, 2015. ãšãã倧å€åãããããè³æãããïŒçŸç¶ã«ãããç§ã®çè§£ã§ã¯ãã®è³æä»¥äžã®æ å ±ãæäŸã§ããªãã®ã§ïŒåœè©²ç¯ã«ã€ããŠè©³çްãªåçã«ã€ããŠã¯æžããŸããïŒ
-
ä»ã®ç¯ã«ã€ããŠãïŒãã¡ããåå çã®è³æã§çŽ æŽããã解説ããããŠããã®ã§ïŒç§ã®ãããªãçŽ äººããããããšã¯å°ãªãã®ã§ãïŒ
-
ããã§ïŒããã§ã¯ç§ã®ãããªæ¬åœã«ç¡ç¥ãªäººéãæåãçŽæçã«çè§£ããããã«å¿ èŠãšãªããããªïŒããå°ã现ããã¹ããããŸã§åè§£ããã€ã©ã¹ãããä»äžããŠèª¬æããããšã«ãã©ãŒã«ã¹ããŸããïŒä»ã®è³æãšå°ããªãŒãã©ããããŠããŸãéšåã¯ãããŸããïŒèª¬æã®ããã«å¿ èŠãªéã«ããããšãå¿ãããŸãïŒ
䜿çšããããããã¢ãã«
ããã§ã¯ïŒHusky ãšãã4茪ããããã®ã¢ãã«ãGazeboäžã§åãããªããçè§£ãæ·±ããããšæããŸãïŒhusky_navigation ã®ãã¥ãŒããªã¢ã«ãåèã«é²ããŠãããŸãïŒ
Navigation Stack ã§ããããããš
ãããããã®èªåé転ãå®çŸããããïŒããã«å°œããŸãïŒ
å®çŸãããŠããæè¡ã§è¿ãäŸãšããŠïŒã«ãŒãããæããããŸãïŒè¡ãããå Žæãå ¥åããã°çŸåšå°ããã®ã«ãŒããæ¢çŽ¢ãïŒäº€å·®ç¹ã§ã®é²è¡æ¹åã瀺ããŠãããŸãïŒããã¯ïŒç®æšäœçœ®ïŒè»ã®çŸåšäœçœ®ïŒéè·¯å°å³ãšãã£ãæ å ±ãå©çšããããšã§å®çŸãããŠããŸãïŒ
ãã ãïŒã¢ã¯ã»ã«ãèžãã§ãã³ãã«ãåãã®ã¯äººéã§ãïŒããããèªååããŠãããã®ããNavigation Stackãã®ä»çµã¿ã§ãïŒãããããããã«ããããã ãã§æ°ãã€ããªããã°ãªããªãããšãè²ã ããã®ã§ããïŒåºæ¬çãªæ©èœã¯ãã®äžã§ç¶²çŸ ãããŠããïŒROSã§èªåé転ããããªããŸãã¯ã³ã¬ïŒãšããã¬ãã«ã®éèŠãªèŠçŽ ãšãªã£ãŠããããã§ãïŒ
èªåŸé転ã®å®èšŒå®éšãããžã§ã¯ãã§ããã€ãã°ãã£ã¬ã³ãžã§ãïŒããŒã¹ãšããŠNavigation Stack ã䜿ã£ãŠããããŒã ãååšããŸãïŒ
æšä»éçºãçãã«ãªã£ãŠããèªåé転æè¡ã®äžæ žãšãªãæè¡ïŒäœãšãªãã§ãç¥ã£ãŠããããã§ããïŒ
ROSã®åããã±ãŒãžã®äœçœ®ã¥ã
ããŠïŒROSããã±ãŒãžã®äœçœ®ã¥ãã«ã€ããŠç¢ºèªããŸãïŒãããïŒå, ROSã®æŽ»çšã«ããå±å€ã®æ©è¡è 空éã«é©å¿ããèªåŸç§»åããããã®éçºã§è©³çްã«è§£èª¬ãããŠããã®ã§ããïŒããã§ã¯ãããåèã«ããŠïŒãçŽ äººã®ç§èªèº«ããšããããå šäœãææ¡ããããšãç®æšã«ããèšè¿°ãããŸãïŒ
æãæ¬çãªèŠçŽ ã«åè§£ãããšïŒ2ã€ã«å€§å¥ãããŸãïŒããã²ãŒã·ã§ã³é¢é£ã®ããã±ãŒãžäžåŒãæ ŒçŽããnavigationã¡ã¿ããã±ãŒãžãšïŒå°å³çæãåžãslam_gmappingã¡ã¿ããã±ãŒãžã§ãïŒ
æé ãšããŠã¯ïŒæ¬¡ã®ããã«è¡ãã®ãäžè¬çã§ãïŒ
- gmapping ã§å°å³ãäœæããŠããŒã¿ãšããŠä¿åãã
- move_base, amcl, map_server ã䜿ã£ãŠç²ŸåºŠã®è¯ããããŒã·ã§ã³ããã
ãã ãïŒäžå³ã¯èª¬æã®ããã«ç°¡ç¥åãããŠããŸãïŒãããªãµãã«æããšïŒãŸãã§gmapping ãnavigation ãšå®å šã«ç¬ç«ããååšã®æ§ã«èŠããŠããŸããŸããïŒããã§ã¯ãããŸããïŒgmapping ã§å°å³ãäœæãããšãã¯èªå·±äœçœ®æšå®ãããŠããïŒãã®æ å ±ã䜿ã£ãŠnavigation ããããšãã§ããŸãïŒãŸãïŒäœæããå°å³ã¯map_server ã䜿ã£ãŠä¿åããŸãïŒãããã£ãŠïŒå°å³çææã®ãœãããŠã§ã¢æ§æã¯ïŒããå°ãæ£ç¢ºã«æããšïŒäžå³ã®ããã«ãªããŸãïŒ
äœãšãªãå³ãçºããŠïŒãµããããªãã®ããšãªã£ãïŒïŒïŒãšããã§ïŒåããã±ãŒãžã®æŠèŠã以äžã«ç€ºããŸãïŒ
ã¡ã¿ããã±ãŒãžïŒnavigation
å
éšã«ã¯æŽã«è€æ°ã®ROSããã±ãŒãžãå«ãŸããŠããŸãïŒã³ã¢ãšãªãã®ãïŒmove_base(çµè·¯èšç»ãšããã²ãŒã·ã§ã³)ïŒamcl(èªå·±äœçœ®æšå®)ïŒmap_server(å°å³ç®¡ç)ã®ããã±ãŒãžã§ãïŒç¹ã«èŠªåçãªåœ¹å²ãæ
ãã®ãmove_baseã§ãïŒ
å°å³ãšèªå·±äœçœ®æšå®ã®éšåã¯å®ã¯ãªãã·ã§ã³ãšããäœçœ®ã¥ããªã®ã§å¥œããªææ³ãåœãŠã¯ããŠããã®ã§ããïŒããã§ã¯æãäžè¬çãªamclãšmap_serverãæããŠãããŸãïŒ
ããã±ãŒãžïŒmove_base
ç®æšäœçœ®ãšèªå·±äœçœ®ãå
ã«ïŒçµè·¯èšç»ãšããã²ãŒã·ã§ã³ãè¡ã£ãŠãããŸãïŒããã¯ïŒamclãšmap_serverããªããŠãåç¬ã§åããããšã¯ã§ããŸãïŒèŠªåã§ãããïŒãã ãïŒããã¯äººãç®ãã€ã¶ã£ããŸãŸãåºãããããããªç¶æ
ã«çžåœãéåžžã«å±ãªãã®ã§ïŒæ®éã¯å°å³ãšèªå·±äœçœ®æšå®ãšããååãçµã¿èŸŒãã§ïŒããæ£ç¢ºãªããã²ãŒã·ã§ã³ãã§ããããã«ããŸãïŒ
ããã±ãŒãžïŒamcl
å°å³ïŒåäœã¢ãã«ïŒã»ã³ãµæ å ±ã䜿ã£ãŠèªå·±äœçœ®æšå®ãè¡ãããã±ãŒãžã§ãïŒããŒãã£ã¯ã«ãã£ã«ã¿ã掻çšããèªå·±äœçœ®æšå®æ³ã§ïŒç°å¢ã®å€åã«åŒ·ããšããç¹é·ããããŸãïŒ
ããã±ãŒãžïŒmap_server
å°å³ã管çããããã±ãŒãžã§ãïŒmove_baseãamclãšãã£ãä»ã®ããŒãããå°å³ãåç
§ã§ããããã«å°å³æ
å ±ãæäŸããŠãããŸãïŒå°å³ã®ããŒã¿ã¯ç»å圢åŒã§æäŸãããŸãïŒ
ã¡ã¿ããã±ãŒãžïŒslam_gmapping
ãããŸã§ã®èª¬æã§ã¯ïŒå°å³ã倩äžãã§ç»å ŽããŠããŸããïŒåœç¶å°å³ã ã£ãŠäœãå¿ èŠãããããã§ãïŒããã§ïŒSLAM (Simultaneous Localization And Mapping) ãšããæè¡ã§å°å³ãäœæããã®ãïŒæ¬ã¡ã¿ãã±ãŒãžã§ãïŒ
ããã±ãŒãžïŒgmapping
çŸç¶ïŒslam_gmappingã®äžã«ã¯ïŒgmappingãšããããã±ãŒãžã®ã¿ååšããŸãïŒgmappingã§ã¯ïŒåäœã¢ãã«ãšã»ã³ãµæ
å ±ãå
ã«å°å³ãäœæããŸãïŒããã§ãäžæ žããªãæè¡ã¯ããŒãã£ã¯ã«ãã£ã«ã¿ã§ãïŒããŒãã£ã¯ã«ãã£ã¿ã®ç¹é·ã«ã€ããŠã¯ïŒMyEnigma-Particle Filterã䜿çšããèªå·±äœçœ®æšå®MATLABãµã³ãã«ããã°ã©ã ã§ç°¡æœã«åããããããŸãšããããŠããŸãïŒ
SLAMã®ROSããã±ãŒãžãšããŠæåãªãã®ãšããŠïŒhector_slamãæããããŸãïŒãã®ææ³ã®ç¹é·ã¯ïŒgmappingã§ã¯å¿
èŠã ã£ãåäœã¢ãã«ãšãªãã¡ããªã®æ
å ±ã¯äžèŠãšãªãïŒã»ã³ãµæ
å ±ã ãã§å°å³ãäœæãããšããããšã§ãïŒ
ãã®èšäºã§ã¯ïŒåè
ã®gmappingã ããæ±ããŸãïŒgmappingã®æ¹ãamclããã®é¡æšãçŽæ¥çã§ïŒæŽã«ããŒãã£ã¯ã«ãã£ã«ã¿ã®çè§£ã«åœ¹ç«ã€ãããšãèšããŸããïŒåœæ¹ãhector_slamã䜿ã£ãããšãç¡ããããšãããããŒãçç±ãã¡ã€ã³ãããããªãã§ããïŒãŸãïŒããã§ãç¬ïŒ
ãããã«
以äžãå šäœåã§ãïŒãããŸã§èªèããäžã§ïŒããäžåºŠåé ã®å³ãèŠãŠã¿ããšïŒå°ãåãã£ãæ°ã«ãªããŸãïŒ
ããããè€æ°åã«æž¡ã£ãŠïŒå°ããã€ãã®äžèº«ãçŽè§£ããŠããããšæããŸãïŒå°çã®ã€ããªãæç« ã«ãä»ãåãé ããã°å¹žãã§ãïŒ
Next: 2.1 move_base: ROSã§éãã§ã¿ã
åèæç®
- S Thrun, et al., "Probabilistic Robotics", the MIT Press, 2005.
- å, "ROSã®æŽ»çšã«ããå±å€ã®æ©è¡è 空éã«é©å¿ããèªåŸç§»åããããã®éçº", ããããå·¥åŠã»ãããŒ, 2015.
- Atsushi(ããã°ãããã£ãŒã«ãã), "Particle Filterã䜿çšããèªå·±äœçœ®æšå®MATLABãµã³ãã«ããã°ã©ã ", MyEnigma, 2014.
- ROS Wiki.
- "ros-planning/navigation", github.
- "ros-perception/slam_gmapping", github.
- "tu-darmstadt-ros-pkg/hector_slam", github.
- "ç²åãã£ã«ã¿", Wikipedia.




