gmapping建图与rviz实时显示中出现的问题记录

网上关于gmapping建图教程基本都是:
用ros的数据记录指令rosbag去记录数据,然后再通过rviz去显示记录的数据。
其实可以用rviz去实时显示构建地图的过程,但是需要去配置ROS:

  1. 首先,要了解gmapping 功能包。首先下载功能包,对于ubuntu 18.04来说,下载命令为:sudo apt-get install ros-melodic-gmapping.gmapping功能包提供了基于激光的SLAM,在ROS系统中使用slam_gmapping节点表示。 通过该节点用户可以用机器人在移动过程中激光传感器获取的数据创建2D栅格地图。

  2. 节点中其他细节不过多记录,只记录在本人调试过程中碰到问题的细节:
    ①订阅主题
    tf (tf/tfMessage),用于激光器坐标系,基座坐标系,里程计坐标系和地图坐标系之间的转换。这个主题相当重要,如果配置失误,算法不会运行,并且报错“base_link” passed to lookupTransform argument source_frame does not exist. 这个错误说明算法输出的/map坐标系与机器人的base_link坐标系没有tf转换关系,如果仿真程序能正常输出tf转换关系,出现这个错误一般是gmapping 配置过程中名字没有改,还是默认的名字,所以算法找不到这个转换关系;故只需要在gmapping的launch文件里对<param name="base_frame" value="修改"/>改成自己机器人基座坐标系的名字,错误就会消失。另外关于rosparam set use_sim_time true一定不要运行,根据实践经验,在不需要rosbag去展示数据的时候,运行这条命令将导致算法的/map与odom坐标系之间的tf转换关系消失,导致算法不运行,/map没输出。
    scan (sensor_msgs/LaserScan ) ,激光器扫描数据传给算法。这里如果算法没有读到这个激光雷达的主题数据,错误一般是gmapping的launch文件中写的激光雷达的主题名字和真实机器人的激光雷达主题名字不对应,launch文件中默认是scan,如果不对应的话,可以重映射<remap from="scan" to="自己的主题名"/>
    ②节点发布的主题
    map_metadata (nav_msgs/MapMetaData),周期性发布地图metadata数据
    map (nav_msgs/OccupancyGrid),周期性发布地图数据
    ~entropy (std_msgs/Float64),发布机器人姿态分布熵的估计
    第二个/map比较重要,它就是最后的rviz需要显示的地图所订阅的主题。
    ③tf变换,再次强调tf变换的重要性,算法运行时需要的tf变换:odom -> base_link -> scan,算法提供的tf变换:map -> odom。

  3. 下面就是打开rviz使用map栅格地图订阅/map主题就可以看到实时地图了。前提是上面算法都可以无错误的运行。

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值