rosbag --clock

rosbag --clock(上、下集)
上集
将rosbag的数据feed给lego-loam,输出地图。另外写了一个滤波节点,订阅地图,进行滤波操作,再发布出来。

由于输入给lego-loam的数据来自于rosbag,所以需要rosbag提供时间信息。

rosbag play --clock recorded1.bag

由于rosbag的数据发布频率比较快,导致了一个结果。rosbag播放完毕,时钟停止,滤波节点中缓存了几个数据还没有处理完毕。失去了时钟信息,滤波节点停止运行,但是没有输出报错信息!!!

个人心得:滤波节点有两个独立的线程,一个是callback函数线程,一个是main函数线程,进而导致print出来的信息排布混乱。没有花时间整理print出来的信息,也就没能及时发现main函数线程因为缺失了时间信息而停止运行。因此,但凡遇到莫名其妙的bug,即使没有报错信息,首要任务是结合print出来的信息整理代码的逻辑,快速缩小范围再逐步排查原因。

解决方案

  1. 最佳

-k, --keep-alive

rosbag play -k  --clock recorded1.bag

bag文件中的数据播放完毕以后,继续提供时间信息。

  1. 次佳

-r FACTOR, --rate=FACTOR

rosbag play -r 0.1 --clock recorded1.bag

将发布频率降低为原来的10%,留给滤波节点足够的时间进行处理。

下集
首先启动 roscore ,这一步会启动ros的时钟,提供时钟信息。

接着启动lego-loam。

播放lego-loam的数据集, rosbag play --clock recorded1.bag 。这时候,启动了另一个时钟,导致roscore启动的时钟停止。所以,当rosbag播放完毕后,ros的时钟完全停止。这时候运行ros会报各种莫名其妙的错误。

解决方案

重新运行 roscore

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值