连载文章,长期更新,欢迎关注:
对于大多数ROS学习者,最先接触到的导航系统基本都是ros-navigation。不过机器人领域的导航系统实现并不只有ros-navigation,这里要介绍的riskrrt就是另外一种导航系统实现。riskrrt的系统框架基本与ros-navigation一样,也就是地图供应、全局定位和路径规划这些主要模块。riskrrt的特别之处体现在对动态障碍物的处理更加严格,在走廊、机场、路口等人流量大的场景中对机器人与动态障碍物发生碰撞的风险把控更加严格,这种对动态障碍物碰撞的风险把控通过基于风险的RRT全局路径规划实现。
riskrrt的代码框架如图12-14所示,由3个主节点riskrrt_planner、controller和og_builder*构成。障碍物融合处理节点og_builder*通过订阅地图/map和移动障碍物位姿/robot_*/base_pose_ground_truth,然后将融合了动态障碍信息的/ogarray提供给全局路径规划节点riskrrt_planner。全局路径规划节点riskrrt_planner订阅导航目标点/goal、机器人里程计/odom、障碍信息/ogarray和全局定位信息/amcl_pose,然后将求出的全局路径/traj提供给轨迹跟踪节点controller。轨迹跟踪节点controller订阅全局路径/traj和全局定位信息/amcl_pose,然后将轨迹跟踪过程生成的速度控制量/cmd_vel输出给机器人来实现导航。其中/goal由外界提供,/odom由机器人轮式里程计之类的里程计提供,/amcl_pose由amcl全局定位节点提供,/map由SLAM或者静态地图提供,/robot_*/base_pose_ground_truth由特定感知算法提取出的动态障碍物位姿提供。
图12-14 riskrrt代码框架
与ros-navigation类似,riskrrt也是先通过源码编译安装,然后按照官方wiki教程配置后启动,具体过程就不再展开了。
源码仓库
-
Gitee下载(国内访问速度快):gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation