JetBot ROS AI Kit 教程二、SLAM激光雷达建图
来自Waveshare Wiki
JetBot ROS AI Kit 进阶教程目录
- JetBot ROS AI Kit 教程一、雷达数据分析
- JetBot ROS AI Kit 教程二、SLAM激光雷达建图
- JetBot ROS AI Kit 教程三、自主导航
- JetBot ROS AI Kit 教程四、ROS OpenCV
- JetBot ROS AI Kit 教程五、ROS智能语音
- JetBot ROS AI Kit 教程六、Jetson nano 安装ROS系统及环境配置
- JetBot ROS AI Kit 教程七、Ubuntu 虚拟机安装ROS系统及环境配置
- JetBot ROS AI Kit 教程八、ROS语音环境配置
- JetBot ROS AI Kit 主页
步骤1、启动slam建图节点
- 首先开启雷达电源,保持雷达正常转动,在机器人端,运行如下命令启动激光雷达节点
【注意:启动slam建图节点时会默认开启底盘节点和雷达节点,所以请先关闭机器人底盘节点和雷达节点,避免启动slam建图节点时发生冲突,产生错误】
roslaunch jetbot_pro slam.launch #建图算法默认使用gmapping
- 在虚拟机中运行如下命令启动rviz图像工具查看。此启动文件同时启动游戏手柄遥控节点,所以运行命令前需要先将游戏手柄接收区连接到虚拟机中。
- rviz启动后将显示雷达信息,摄像头图像,地图数据,TF坐标等信息。用游戏手柄控制机械运动扫描地图。
roslaunch jetbot_pro view_slam.launch #显示地图
- 若在显示地图时发生如下错误时,请检查遥控器手柄是否接入,其中 /dev/input/js0 为遥控器手柄设备
步骤2、保存地图文件
- 当扫描完成地图后,在机器人中新开一个终端运行如下命令保存构建好的地图文件。
cd ~/catkin_ws/src/jetbot_pro/maps rosrun map_server map_saver -f mymap
- 运行ls命令可以查看保存的地图信息
ls
- 其中:mymap.pgm为地图数据,mymap.yaml为地图信息,savemap.sh为保存地图脚本。因此也可以运行此脚本保存地图
cd ~/catkin_ws/src/jetbot_pro/maps && ./savemap.sh
步骤3、多种建图算法实现
- 程序支持gmapping,hector,karto,cartographer四种建图算法,默认使用的是gmapping算法,也可以通过map_type参数选择对应的建图算法。
- 以下是选择不同的map_type参数命令输入
roslaunch jetbot_pro slam.launch map_type:=gmapping #gmapping 算法(默认) roslaunch jetbot_pro slam.launch map_type:=hector #hector 算法 roslaunch jetbot_pro slam.launch map_type:=karto #karto 算法 roslaunch jetbot_pro slam.launch map_type:=cartographer #cartographer算法
- 在虚拟机端,用算法 gmapping、hector、karto 都可以运行如下命令显示地图
roslaunch jetbot_pro view_slam.launch #显示地图
- 若使用算法 cartographer 则rviz的配置不一样,需要使用如下命令显示地图
roslaunch jetbot_pro view_slam.launch map_type:=cartographer #显示地图
- hector 算法建图效果
- karto 算法建图效果
- cartographer 算法建图效果。图中绿色点为点云数据而非雷达数据,蓝色为小车运动路径
- 注意:使用算法gmapping、hector、karto 建图时,可以通过map_server 命令直接保存地图;而 cartographer 算法建图后,则需要先将 pbstream 转为 map才能保存,即我们可以使用如下脚本保存地图
cd ~/catkin_ws/src/jetbot_pro/maps && ./carto_savemap.sh