目录
使用激光雷达的 SLAM 建图功能 ,建图算法使用cartographer。
1 建图流程
- 机器人端执行 slam 的 launch 文件
roslaunch robot_navigation robot_slam_laser.launch slam_methods:=cartographer
rostopic list
- PC 端执行 rviz 图形化监控程序
(载入 rviz 配置文件) 雷达 SLAM 建图已经正常启动,rviz 工具下可以看到以机器人为中心已经建立了一个初步的地图。
roslaunch robot_navigation slam_rviz.launch
roslaunch robot_navigation navigation_rviz.launch
- 移动机器人位置完善整个地图
在机器人端启动一个键盘控制程序 ,建议将遥控速度调低以改善建图效果,建议速度不大于 0.25m/s 。
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
2 建图保存
当地图四周边界已经全部闭合或者想要保存地图时候,在机器人端,进入到想要保存地图的位置:
roscd robot_navigation/maps
请求/finish_trajectory服务,完成轨迹,不再接收数据:
rosservice call /finish_trajectory 0
请求/write_state服务,保存当前状态,其中路径可以根据需要自行更改:
rosservice call /write_state "{filename: '/home/bingda/catkin_ws/src/robot_navigation/maps/mymap.pbstream'}"
3 建图效果可视化
地图中黑色边框部分就实际地形中的墙壁,在地图中是以边界的形式显示出来的。
这里可以看到雷达数据,它通过激光扫面周围一圈。根据远近将障碍物以点的形式绘制出来。(雷达是单线的扫面范围只有雷达发射窗口所在高度的平面,高或者低于这个高度的物体扫描不到)