ROS操作系统-Rosbag数据采集
毫米波雷达+相机实现多模态数据采集+时空对齐
检查rosbag安装
- rosbag -h
录制雷达相机数据
timeout 22s rosbag record -O indoor_data.bag -j --lz4 --buffsize=1024 /tf /tf_static /usb_cam/image_raw /usb_cam/camera_info /ti_mmwave/radar_scan_pcl_0 /ti_mmwave/radar_scan /ti_mmwave/radar_occupancy
查看bag文件中的话题
- rosbag info test.bag
检查bag类型冲突
- rosbag check input.bag
处理冲突
# 生成迁移规则模板
rosbag check 2024-12-20-15-14-35.bag -g myrules.bmr
# 修改规则
1. 当出现`Please enter the type to migrate it to:`提示时,输入sensor_msgs/PointCloud2
2. 打开bmr文件,修改一:将 new_type = “ti_mmwave_rospkg/RadarScan” 修改为 new_type = “sensor_msgs/PointCloud2”;修改二:将valid的False修改为True`valid = True`;修改三:修改update函数代码如下:
def update(self, msg, migrated):
import sensor_msgs.point_cloud2 as pc2
import struct
# 1. 定义PointCloud2的字段
fields = [
pc2.PointField('x', 0, pc2.PointField.FLOAT32, 1),
pc2.PointField('y', 4, pc2.PointField.FLOAT32, 1),
pc2.PointField('z', 8, pc2.PointField.FLOAT32, 1),
pc2.PointField('intensity', 12, pc2.PointField.FLOAT32, 1),
pc2.PointField('range', 16, pc2.PointField.FLOAT32, 1),
pc2.PointField('velocity', 20, pc2.PointField.FLOAT32, 1),
pc2.PointField('bearing', 24, pc2.PointField.FLOAT32, 1),
pc2.PointField('point_id', 28, pc2.PointField.UINT16, 1),
pc2.PointField('doppler_bin', 30, pc2.PointField.UINT16, 1),
]
# 2. 按照字段顺序打包数据:7个float + 2个uint16
point_data = struct.pack('<fffffffHH',
msg.x, msg.y, msg.z,
msg.intensity,
msg.range,
msg.velocity,
msg.bearing,
msg.point_id,
msg.doppler_bin)
# 3. 赋值给迁移后的PointCloud2消息
migrated.header = msg.header
migrated.height = 1
migrated.width = 1
migrated.fields = fields
migrated.is_bigendian = False # 小端序
migrated.point_step = 32 # 7*4 + 2*2 = 32字节
migrated.row_step = 32
migrated.data = point_data
migrated.is_dense = True
return True
# 修复数据包
rosbag fix 2024-12-20-15-14-35.bag repaired.bag myrules.bmr
播放录制的rosbag
- rosrun rviz rviz -d
rospack find ti_mmwave_rospkg/launch/rviz/ti_mmwave_camera_overlay.rviz # 开启rviz - rosbag play input.bag # 播放bag
采集数据播放
- rosbag play --loop -r 2 my_data.bag # 2倍速循环播放
- rosbag play my_data.bag -s 1234567890.123456789 # 从特定时间开始播放
rqt_bag查看bag时间戳
- rqt_bag

浙公网安备 33010602011771号