cartographer与move_base的故事

来源:互联网 发布:网络惊魂 百度云 编辑:程序博客网 时间:2024/05/19 22:04

最近我一直是用cartographer建好图后再用AMCL做导航用的定位,但是一直有这样那样的问题。 于是我就萌生了导航算法直接结合cartographer的想法。参考amcl_demo.launch, 我们在cartographer_turtlebot里建立文件turtlebot_urg_lidar_2d_move_base.launch,内容如下:

<launch>  <param name="urg_node/frame_id" value="pole_top_0_link" />  <node name="urg_node" pkg="urg_node" type="urg_node" />  <include file="$(find cartographer_turtlebot)/launch/turtlebot.launch">    <arg name="configuration_basename" value="turtlebot_urg_lidar_2d.lua" />  </include>  <!-- Move base -->  <include file="$(find cartographer_turtlebot)/launch/includes/move_base.launch.xml">  </include></launch>
这里遇到了几个问题,首先就是运行的时候,总显示origin out of map。我修改了半天的move_base 配置文件并不起作用,最后用了一个比较tricky的办法,在tf系统里,原本laser是在plate_top_link位置上,但是这个位置值为负数,所以我把它换成了pole_top_0_link,如上。 然后我们来讨论一下move_base的配置。首先让我盗图一张move_base, 可以看到导航分为局部和全局,需要分别配置。 对于全局导航,其costmap,global_frame: /map, robot_base_frame: /base_footprint, 我把更新频率提高了, 所以有update_frequency: 1.0, 比较奇怪的是这里static_map: true也行,尽管我们是动态更新地图,理论上static_map应该为false,然后设置rolling_window为true,设置窗口大小,分辨率之类的,如同local_costmap那样。local_costmap不同的地方如上所述。参考这两个链接基本能搞定所有move_base配置问题costmap_2d,RobotSetup。turtleBot_navigation里面有个现成的move_base.launch.xml,除了少量的修改外基本可以套用。最后的结果不太理想,我猜应该是我跑机器人的策略问题,回环太少,应该构建更多回环才是。上一个失败的图算了,传了5min图都上传不了,是时候换家用了。