1.map_server保存二维栅格地图
octomap生成的二维栅格地图可以用map_server保存
map_server是个功能包,这个功能包可以单独下载,也可以直接下载navigation包,navigation包里包括了map_server,建议直接下载navigation,因为后续路径规划仿真也要用到这个功能包.地址如下
https://github.com/ros-planning/navigation
我的是kenetic版本,注意别下载错了版本.
下载编译好之后,用命令
rosrun map_server map_saver map:=/projected_map -f xxx
因为octomap生成的二维栅格地图的话题是/projected_map
后边的xxx是文件名,可以自己随便改.
保存好之后会生成两个文件,一个xxx.pgm,一个xxx.yaml
要进行后续的路径规划仿真需要对yaml文件修改一下,点开xxx.yaml,具体内容如下:
image: xxx.pgm
resolution: 0.100000
origin: [-141.900006, -183.199994, -nan]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
把origin的z轴坐标-nan改成0.000000,不然之后用rbx1打不开地图,改好如下所示.
image: xxx.pgm
resolution: 0.100000
origin: [-141.900006, -183.199994, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
如果是Gmapping这种二维slam算法,应该是没有z轴坐标的,可能因为我建图用的是LIO-SAM,所以要把这个-nan改成0.000000.
2.move_base路径规划仿真
需要用到的包:
1.rbx1
2.arbotix
3.navigation(上一步装过就不用装了)
全部下载好并编译好了之后运行仿真
首先启动仿真节点:
roslaunch rbx1_bringup fake_turtlebot.launch
然后启动定位节点
roslaunch rbx1_nav fake_amcl.launch map:=xxx.yaml
这里的xxx就是你之前的地图名字xxx.
最后启动rviz可视化节点:
rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
move_base全局路径规划默认是用Dijkstra,但是可以改成A*.
3更改move_base全局路径规划为A*
(1)修改rbx1中的fake_move_base_amcl.launch,将其改为
<launch>
<node pkg="move_base" type="move_base" respawn="true" name="move_base" output="screen" clear_params="true">
<rosparam file="$(find rbx1_nav)/config/fake/costmap_common_params.yaml" command="load" ns=