博主的实验室之前购买了HANDSFREE 2代的小车,因为手头没有激光雷达,所以使用了华硕的xtion pro摄像头来进行建图和导航
由于HANDSFREE 2代小车原生支持激光雷达,所以我们要用xtion pro进行建图的时候要更改一些地方
首先是handsfree_hw下的handsfree_hw.launch文件
如图,这是修改后的配置文件,将原本的urdf文件注释了,并且将下边的node发布的remap等注释掉
然后是修改handsfree_bringup下的xtion_fake_laser_openni2.launch
在这里发布一个静态tf转换,添加一个base_link到camera_link的静态tf转换,如图
接下来,切换到handsfree_2dnav
roscd handsfree_2dnav/move_base_config
vim slam_gmapping.xml
<launch>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
<param name="odom_frame" value="odom"/>
<param name="map_update_interval" value="4.0"/>
<param name="minimumScore" value="700"/> //这里参数做了修改
<param name="maxUrange" value="5.0"/> //这里参数做了修改
<param name="sigma" value="0.05"/>
<param name="kernelSize" value="1"/>
<param name="lstep" value="0.05"/>
<param name="astep" value="0.05"/>
<param name="iterations" value="5"/>
<param name="lsigma" value="0.075"/>
<param name="ogain" value="3.0"/>
<param name="lskip" value="0"/>
<param name="srr" value="0.01"/>
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<param name="linearUpdate" value="0.5"/>
<param name="angularUpdate" value="0.436"/>
<param name="temporalUpdate" value="-1.0"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="80"/>
<param name="xmin" value="-10.0"/>
<param name="ymin" value="-10.0"/>
<param name="xmax" value="10.0"/>
<param name="ymax" value="10.0"/>
<param name="delta" value="0.05"/>
<param name="llsamplerange" value="0.01"/>
<param name="llsamplestep" value="0.01"/>
<param name="lasamplerange" value="0.005"/>
<param name="lasamplestep" value="0.005"/>
<param name="map_frame" value="map"/> //额外添加项
<param name="base_frame" value="base_link"/> //额外添加项
</node>
</launch>
以上是完整的配置的文件
*********
请注意,该配置文件中我修改了一些参数,以获得更好的建图效果
以上,HANDSFREE的gmapping建图部分结束
-------------------------------------------------------------------
amcl部分测试通畅,用上边的方法完成建图之后,便可实现导航功能
*********
注意,在运行amcl的launch文件之前,将其中的默认的地图文件路径改成自己的