ros之模拟导航算法 - maohaihua/ros_study GitHub Wiki
https://blog.csdn.net/sunyoop/article/details/79153568
导航算法在move_base节点中,当修改一些规划路线的参数时,又不想每次实际去跑,又想有定量的分析。
就可以用rosbag方式。
实现步骤:
1.记录log数据
rosbag recoved -O mydata /tf /scan /map /map_metadata /odom /tf_static /move_base_simple/goal
2.模拟运行
roscore
rosparam set use_sim_time true
roslaunch turtlebot_navigation move_base_only.launch
rosbag play --clock mydata
3.查看
看路线:roslaunch turtlebot_rviz_launch view_navigation.launch
看下发的控制命令:rostopic echo /navigation_velocity_smoother/raw_cmd_vel
ros中如何模拟建图(gmapping/hector/cartographer)
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算法: