Navigation
Navigation实训整理
乱七八糟的东西记了很多,放在这做个纪念吧
1. SLAM和Navigation整体流程
SLAM即实时定位与建图技术,要点有两点即定位和建图。定位要求能都依据里程计和imu的信息并结合雷达的修正得到实时准确位置。而建图则依据雷达或相机的信息,并据此得到该位置处环境中实物的距离和方位角,通过某种算法得到代价栅格地图。
Navigation包含如下步骤:
- mapserver节点把SLAM或者其他方法得到的地图传到move_base并在此生成Costmap,之后以此作为避障的依据;
- amcl节点订阅odom(里程计信息)并订阅Laser(需要有laser到root_link的TF)将实时场景与静态全局地图匹配来修正odom到map的偏移;
- move_base调用全局规划器调用作为插件存在的全局规划器、局部规划器完成路径规划生成目标轨迹并发送cmd_vel指令到控制器;
- 控制器依据具体硬件结构将cmd_vel信息转为各个轮子的转速或转矩信号并发送给执行器。
定位的核心是维护一条准确且实时更新的从map到base_link的TF树;路径规划的核心是生成global_costmap和local_costmap并调用路径规算法。
ROS定位与导航框架
导航消息类型,此外导航涉及到许多的话题和服务,这些通讯模式有自己的消息格式,学习过程中了解消息类型也很重要。
2. Navigation运行了那些节点,各有何特点:
AMCL:通过雷达实时信息与静态地图匹配计算出对里程计长距离移动引起的误差进行修正;
- 需要配置好Laser和inu到root_link的TF;
- 更改机器人对应基坐标系名称;
- 配置里程计模型参数(diff、omni)
move_base:全局路径规划、局部避障、速度指令生成;
Laser启动节点:发布laser信息,为amcl和mov