由于雷达比较大坨,而且是需要搭配 rk3588,以及外部的 imu 数据,我是直接拿了一个飞控来发送 imu 数据给 3588,(我的雷达内部没有imu),因此携带着测试不是很方便,需要编写一个脚本来采集雷达与imu数据,后续就可以在座位上调试。

主要需要几个重要的功能:
订阅雷达 (PointCloud2 类型) 和 IMU (Imu 类型) 数据
自动创建保存 rosbag 的目录
使用带时间戳的文件名保存 rosbag
支持指定记录时长,达到时长后自动停止
包含完善的异常处理和资源清理
在实现功能时有以下几个注意点:
线程保护
雷达使用的是探维的雷达,他们驱动中发布的是 PointCloud2 类型的包,imu就直接通过mavros来获取飞控的imu数据,脚本中订阅数据然后在回调中写入即可,代码比较简单。需要注意的是,如果直接在回调中操作 rosbag,可能会发生线程问题,因为有两个数据回调,因此需要在回调中,增加线程保护:
def radar_callback(self, msg):
# 使用锁保护对rosbag的访问
with self.bag_lock:
# 检查是否需要开始新的bag文件
订阅专栏 解锁全文
232

被折叠的 条评论
为什么被折叠?



