通常在利用ros采集传感器数据时,我们会得到一个包含多个传感器数据的bag数据包,下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法。
系统版本:Ubuntu20.04
ROS版本:Noetic
先觉条件:
查看bag数据包中雷达点云数据和imu数据所对应的topic名称,通过下面这条指令实现。
rosbag info <xxxxxx.bag>
#<xxxxxx.bag>指bag数据包的名称
例如:
rosbag info 2021-04-16-10-32-05_far.bag
下图为具体的实现过程:
1、提取雷达点云数据
启动roscore,打开终端,输入下面这条指令实现
roscore
从bag数据包中提取雷达点云数据,并将雷达点云数据转换为pcd格式,通过下面这条命令实现。
rosrun pcl_ros bag_to_pcd <xxxxxx.bag> <topic> <output_directory>
# <xxxxxx.bag>指读取的bag数据包的名字
# <topic>指bag数据包雷达点云数据对应的topic名称
# <output_directory>指输出过程中所创建的目录名称,得到的pcd格式的雷达点云数据放在此目录下
例如:
rosrun pcl_ros bag_to_pcd 2021-04-16-10-32-05_far.bag /os_cloud_node/points test.pacd
下图为具体的实现过程:
然后会得到按照时间戳排序的雷达点云数据。
2、提取imu数据
从bag数据包中提取imu数据,可将其转化为txt格式后者csv格式,通过下面的指令实现。
rostopic echo -b <xxxxxx.bag> -p <topic> > xxxxxx.txt
或者
rostopic echo -b <xxxxxx.bag> -p <topic> > xxxxx.csv
# <xxxxxx.bag>指读取的bag数据包的名字
# <topic>指bag数据包imu数据对应的topic名称
# xxxxxx.txt xxxxxx.csv中xxxxxx指自己给得到的文件取的名字
例如:
rostopic echo -b 2021-04-16-10-32-05_far.bag -p /vectornav/IMU > imu.csv
需注意:读取成功后,终端不会给出提示
但实际上已生成所要的文件
得到imu.csv的文件内容: