Cartographers的3D数据集可视化

今天找了近两个小时的室内激光SLAM,目的是为了获得ground true,以方便检验我程序的准确度。毕竟只用室外环境的话,从效果来讲和室内还是不太一样的。室内环境更加复杂,特征更多,配准精度应该更高。
哦,从这个角度讲,我可以用kitti数据集的,只要kitti数据集效果过的去,室内就没啥问题了。
后续,自己用机器人来录个包,手动控制机器人沿着固定的路线走就可以了。比如走在正中间,之后想办法在点云中做出一个正中间的轨迹,用evo评估也可以的。
之所以希望精确,其实还是希望能够更加科学。

我以为Cartographers的3D数据集包含了ground true,显然我想多了。
更夸张的是,他的点云数据很诡异,刷新频率超级高(每次一个小的扫描角),以至于我怀疑根本没办法用我们之前的算法配准,还得先做个预处理。最尴尬的是,这个预处理是没必要的。因为现在开发的激光雷达基本都不是那个模式的。
另一个尴尬的地方是,他的点云数据竟然会分为horizontal和vertical。我不太懂怎么会这个样子的。

不过还是讲讲拿到点云包以后怎么在rviz中演示吧。
最自然的想法是,打开Terminal,输入rviz,然后rosbag play xx.bag,再在rviz中Add一个PointCloud2类型,选择为点云的topic。
然而事情总是不会这么简单,你会看到这样一个报错:For Frame [xx]: Frame [yy] does not exist.
原因很简单,我们打开rviz,全局视图应该是map,但我们接收的是点云的话题xx,这样两个信息融合的时候必须要一个tf信息。
解决办法也很简单,直接用tf来发布一个就好了。
于是打开新的terminal,输入rosrun tf static_transform_publisher 0 0 0 0 0 0 xx yy 100
参数分别是 x y z yaw pitch roll frame id child_frame_id period(ms)。
然而,新的问题会出现,大概会告诉你:Message removed because it is too old
解决方法是,在rosbag play 的命令中加入 --clock
再打开terminal,输入rosparam set use_sim_time true
以上操作的目的是让所有结点使用仿真时间而不是wall time,时间统一后,也就不存在时间戳太老的问题。

Over。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值