如何将csv转换为rosbag

时间:2018-12-05 23:44:22

标签: csv ros data-conversion

我有一个要转换为rosbag的csv文件,因为我想使用用ROS编写的软件包。目标是使用扩展的卡尔曼滤波器执行传感器融合,并且我的csv文件包含IMU和GPS数据的信息。

1 个答案:

答案 0 :(得分:1)

有几个步骤:

1。从CSV文件中读取数据。

有多种方法可以在Python中执行此操作,但我更喜欢使用Pandas:

import pandas as pd
df = pd.read_csv('my_csv_file.csv')

这会将数据作为Pandas数据框加载,您可以将列读为df['timestamp'],然后可以像数组一样对其进行索引。

2。填充ROS消息并写入rosbag

有一个不错的rosbag Python API。我不确切知道CSV文件中的数据元素是什么,因此我将把消息的填充量留给您,但这看起来像:

import rospy
import rosbag
from sensor_msgs.msg import Imu, NavSatFix

with rosbag.Bag('output.bag', 'w') as bag:
    for row in range(df.shape[0]):
        timestamp = rospy.Time.from_sec(df['timestamp'][row])
        imu_msg = Imu()
        imu_msg.header.stamp = timestamp

        # Populate the data elements for IMU
        # e.g. imu_msg.angular_velocity.x = df['a_v_x'][row]

        bag.write("/imu", imu_msg, timestamp)

        gps_msg = NavSatFix()
        gps_msg.header.stamp = timestamp

        # Populate the data elements for GPS

        bag.write("/gps", gpu_msg, timestamp)

请注意,您似乎还可以使用其他GPS消息类型,例如来自gps_common包。 /imu/gps是主题名称,您可以根据需要命名它们。