ROS:WarningNomapreceived
最近新换了个机器⼈,重新跑slam建图的时候⿎捣了半天发现scan有数据map却始终接收不到数据,在rviz下打开topic显
⽰“Warning "No map received",研究了下,发现还不少⼈碰见了这个问题,把我⾃⼰的认识记录以下,希望能帮到⼤家。
⾸先,map的数据哪⾥来的呢?很显然是从从激光雷达scan经过tf变换来的,所以,map没有数据可能有两种情况
1.scan的话题不对,⽐如你直接启动
rosrun gmapping slam_gmapping
那么,默认的激光话题就是/scan,所以第⼀点就要确认你的雷达发布话题是不是scan,如果不是就得加个参数映射,⽐如
rosrun gmapping slam_gmapping scan:=lidar/scan
2.缺少对应tf的转换关系
如果你运⾏gmapping出现类似这种输出
Failed to compute laser pose, aborting initialization ("base_link" passed to lookupTransform argument target_frame does not exist. )
那就是说默认是base_link到⽬标的tf变换缺少,需要添加对应的变换关系,⽐如
<param name ="base_frame" value="base_footprint" />
这⾥的value对应你⾃⼰的机器⼈底座tf。
当然,最好把这些参数都写到launch⽂件⾥,这⾥附上我⾃⼰的launch⽂件
<!--slam_gmapping-->
<launch>
<arg name="scan_topic" default="lidar/scan" />
<arg name="base_frame" default="base_footprint" />
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true"> <param name ="base_frame" value="$(arg base_frame)" />
<param name="map_update_interval" value="30.0"/>
<!-- Set maxUrange < actual maximum range of the Laser -->
<param name="maxRange" value="5.0"/>
<param name="maxUrange" value="4.5"/>
<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="-1.0"/>
<param name="ymin" value="-1.0"/>
<param name="xmax" value="1.0"/>
<param name="ymax" value="1.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"/>
<remap from="scan" to="$(arg scan_topic)"/>
</node>
param name</launch>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论