【问题标题】:how to convert csv to rosbag如何将csv转换为rosbag
【发布时间】:2018-12-05 23:44:22
【问题描述】:

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

【问题讨论】:

  • 您可以发布您的 CSV 内容吗?
  • 创建一个 python 脚本来读取 CSV 并在 rostopics 上发布
  • 你记录数据的时间戳吗?

标签: csv ros data-conversion


【解决方案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 是主题名称,您可以根据需要命名。

【讨论】:

  • 我试过了,但是生成 CMakeLists.txt 并运行它的正确方法是什么?
  • 你使用catkin_create_pkg命令创建一个ROS包并用上面的code-sn-p写一个rospy节点。 catkin_create_pk 为您创建 CMakeLists.txt。您为什么要从头开始创建 CMakelists.txt?
  • 可以为 Imu() 对象填充的所有不同字段是什么?我找不到它的文档或代码。
猜你喜欢
  • 2022-07-31
  • 2020-09-04
  • 2014-04-23
  • 2021-02-26
  • 2012-04-24
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多