ros导航原理
1、导航整体架构
每个矩形代表一个独立节点
move_base:导航节点,里面的椭圆是它的组件,只要运行起来move_base就行了。
map_server:地图服务节点,获取全局地图。
sensor sources:传感器节点。
odometry_source:里程计节点。
sensor transforms:传感器位置的tf。
amcl:定位节点,在已知地图上定位(定位在当前地图的位置)
base controller:控制节点。
1、move_base
global_planner:全局规划器(输入起始地和目的地,生成路径),常见的全局规划器:Navfn、Global_planner、Carrot_planner。前两种都有迪杰斯特拉和A*,但是第一款有点bug没人修复,所以出了Global_planner
local costmap:局部地图(主要是给局部规划器避障用,一般还需要给机器人加膨胀,因为机器人会有大小)
loacal planner:实际的控制运动的轨迹(因为可能全局规划的路径在局部地方有些障碍)
recovery behaviors:恢复行为(全局规划的路线出现障碍走不通,就需要走这个恢复行为)
2、导航client节点(move_base就相当于是server节点)
action是ros的一种通信方式,消息包通信是双向的(client和server)。
通过action,client给服务器发送导航请求(包含导航目标点,期望的姿态等)。server会向client实时反馈导航进展,导航结束还能给client返回成功和失败的消息