最近新换了个机器人,重新跑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" />