1、简述
ROS1导航模块navigation,它从里程计、传感器流和目标姿势中获取信息,并将速度、角速度控制命令发送至差速控制单元。
因为是ROS1,所以下面的内容只是一带而过,没有深入学习总结。详细内容可参考官网:http://wiki.ros.org/navigation
2、硬件要求
1)仅适用于差动驱动机器人,原因是navigation向控制单元发送的命令形式为:x 速度、y 速度、theta 速度;
2)需要在底盘上配置激光扫描传感器,用于地图构建和定位;
3)机器人本身的形状要规则,比如为方形或者圆形
3、框架
导航模块navigation的组件(功能包)框架:
白色组件是ROS已经实现的必需组件;
灰色组件是ROS已经实现的可选组件
蓝色组件需要自己来实现的必须组件。
4、功能包介绍
1)sensor transforms:坐标转换,机器人使用tf发布有关坐标系之间的关系
2)sensor sources:依靠传感器信息来避开障碍物,通过 ROS发布sensor_msgs/LaserScan或sensor_msgs/PointCloud消息来获取
3)odometry source:通过里程计来计算所处的位置
4)base controller:发送控制电机的速度命令,相关话题“cmd_vel”的结构为cmd_vel.linear.x, cmd_vel.linear.y, cmd_vel.angular.z
5)map_server:地图服务,没有地图也能运行,机器人可以边走边建图
6)
5、安装
在Ubuntu20.04上安装为例
sudo apt install ros-noetic-navigation
6、名词解释
Goal:目标,从A点出发,自主导航到B点;
AMCL:定位,输入是激光来获取位置,或者通过(里程计)编码器积分来获取位置
Path Planner:路径规划,比如SLAM,
move_base:全局规划和本地规划,一边走、一边避障
/cmd_vel + /odom:发送运动控制指令
Base Controller:地盘控制电机
Motor Speeds:电机运动
map_server:地图功能包,非必须,如果没有,认为是空地图
7、官网
http://wiki.ros.org/navigation
http://wiki.ros.org/move_base