前几篇文章中分别讲了如何在gazebo中加载多机器人,在gazebo中多机器人的编队以及如何在rviz中实现多机器人仿真。这一篇文章的主要内容是将前几篇文章所讲内容做一个集合,实现在ROS环境下的多机器人导航加编队的仿真。
1.自主导航+编队框架
前两篇文章已经分别介绍了移动机器人自主导航以及多移动机器人编队的软件框架。这一节介绍如何将其二者结合,思路为将领航者作为自主导航的机器人,跟随者在保持队形的同时进行避障,以避免发生事故。这样结合的好处是仅领航者需要自主导航,编队中其余机器人只需要保持编队和避障即可,使系统的整体工作量减少,系统实现难度减小。图1-1为导航+编队程序框架图。
图1-2是仿真中运行移动机器人自主导航以及编队时的节点关系图。图中ares1作为领航者,ares2作为跟随者。ares1接收move_base规划路径的运动指令, ares2接收领航者与自己的位置偏差,在slave节点中作出控制指令并发布,从而实现编队。
2.效果展示 运行指令: 启动仿真环境:roslaunch ares_gazebo ares_cloister_gazebo.launch
打开rviz,进行领航者导航:roslaunch ares_navigation navigation_demo.launch
启动编队程序:roslaunch stage_first OnYourMarkGetSetGo.launch
效果展示:
3.实现步骤 1)在gazebo中实现多机器人仿真,各个机器人运动可独立控制。 具体实现步骤:《如何在gazebo中实现多机器人仿真》。 2)在gazebo多机器人仿真条件下,在rviz中实现其中任何一机器人的自主导航。 具体实现步骤:《如何在RVIZ中实现多机器人导航仿真》。 3)将实现自主导航的小车指定为领航者,其余机器人小车指定为跟随者,从而实现在指定环境中的自主导航加仿真。 编队原理及具体实现步骤:《基于ROS的多机器人编队仿真》
4.总结与展望
前前后后也写了四篇文章,从最基础的在gazebo中加载多个机器人,到一步步实现导航即编队功能,最后将其结合,这期间走过不少弯路,不过也是跌跌撞撞地做出了简单的效果。对于整个项目,我认为还有以下可以改进的地方,希望以后可以升级完善: 1) 编队队形较简易单一,编队控制为最基础的开环控制,之后可以将论文中的控制理论在此系统中验证; 2) 由于项目需要,多机器人的导航中只指定编队中领航者小车实现自主导航。理论上是可以同时实现多车导航的,有兴趣的小伙伴也可以参考项目进行配置; 3) 有关多机器人协作方面,项目中只实现了简单的编队及编队导航效果。系统搭建好后多机器人还可以进行多方面的协作,比如多机器人共同建图等。 当下多机器人协作方向在机器人研究领域越来越火,在此方向的论文理论也层出不穷;ROS作为机器人系统的应用也越来越普遍,众多实践也证明了ROS的优越性。综其二者,多机器人协作在ROS上的运用看来也会是大势所趋。而在学习过程中,ROS1对于多机器人仿真实验的众多不方便也逐渐体现了出来,具体在前文中都有所提及,在ROS2中应该也会相应的得到改进。 “怕什么真理无穷,进一寸有一寸的欢喜。”学习工作及文章多有不足疏漏之处,希望大家来一起学习探讨!