Navigation介绍
Navigation是ROS提供的二维导航包。
导航模块的作用:输入传感器信息、地图信息、机器人位姿以及目标点,计算并且输出安全可靠的速度控制指令(是对机器人的底座下方控制命令),全局路径和局部轨迹。
Navigation软件包的架构
- map_server:地图服务器,主要功能是保存地图和导入地图。
- costmap_2d:可以生产代价地图,以及提供各种相关的函数。
- robot_pose_ekf:扩展卡尔曼滤波器,输入是里程计、IMU、VO中的任意两个或者三个,输出是一个融合之后的pose。
- localization:这里是两个定位用的package。fake_localization一般是仿真用的,amcl才是实际定位用的package。
- nav_core:这里面只有三个文件,对应的是全局路径规划、局部路径规划、recovery_action的通用接口定义,具体功能实现则是在各个对应的规划器package里。
- move_base:这里实现的是整个导航的流程。什么时候调用全局路径规划、什么时候调用局部路径规划、什么时候调用recovery_action都是这个package管的。就是下图中间方框里做的事情,可以说是整个navigation stack的核心。
定位:
fake_localization : 一般是仿真用的定位
amcl:蒙特卡洛定位
全局规划:
global_planner : 提供dijstra和A算法
navfn : 提供dijstra和A算法
局部规划:
dwa_local_planner: 动态窗口法
base_local_planner:trajectory_planner 轨迹规划器
恢复行为:
move_slow_and_clear : 清除代价地图中信息并且限制机器人移动速度
clear_costmap_recovery:清理代价地图 rotate_recovery:旋转,清理代价地图