您的位置:首页 > 移动开发

ros中如何模拟建图(gmapping/hector/cartographer)

2018-01-23 14:19 1756 查看
ros中有一个模拟器组建,turtlebot_gazebo,上面可以模拟建图和导航的过程。不过由于turtlebot_gazebo中的场景是模拟的,扫描数据(/scan)也是模拟的,雷达/深度摄像头都是虚拟的,生成的scan数据里面有很多的参数可以调试。

在正常场景中,雷达的性能也要考虑进去,扫描的数据也会因为环境变化也发生变化,这里就介绍下如何用现实场景的扫描数据模拟建图场景。

建图使用gmapping算法:

确定gmapping订阅的主题,http://wiki.ros.org/gmapping



然后启动rosbag命令,保存机器人移动过程中的/tf,/scan数据。命令如下

rosbag record -O mylaserdata /scan /tf

模拟建立地图命令如下:

roscore

rosparam set use_sim_time true

rosrun gmapping slam_gmapping scan:=scan

rosbag play --clock <name of the bag that you downloaded / created >

等待rosbag play完成,保存地图。

rosrun map_server map_saver -f <map_name>

这样就可以调试gmapping参数而不用没有都要移动机器人跑图。

参考链接:http://wiki.ros.org/slam_gmapping/Tutorials/MappingFromLoggedData

建图使用hector算法:

hector算法分成两种,带odom的,和不带odom。这里将带odom的。也就是替换掉gmapping就可以。

在机器人移动过程中rosbag记录
rosbag record -O mylaserdata /scan /tf 

模拟建立地图命令如下:

roscore
rosparam set use_sim_time true
roslaunch hector_mapping mapping_default.launch 
rosbag play --clock <name of the bag that you downloaded / created >

保存Geo tiff 地图命令:

rostopic pub syscommand std_msgs/String "savegeotiff"

参考链接:http://wiki.ros.org/hector_slam/Tutorials/MappingUsingLoggedData

建图使用cartographer算法:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: