首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将csv转换为rosbag

如何将csv转换为rosbag
EN

Stack Overflow用户
提问于 2018-12-05 23:44:22
回答 1查看 5.6K关注 0票数 3

我有一个csv文件,当我试图使用用ROS编写的包时,我想把它转换成rosbag。目的是利用扩展卡尔曼滤波实现传感器融合,我的csv文件包含IMU和GPS数据的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-25 14:55:17

有几个步骤:

1.读取CSV文件中的数据.

在Python中有很多方法可以做到这一点,但我更喜欢使用Pandas:

代码语言:javascript
复制
import pandas as pd
df = pd.read_csv('my_csv_file.csv')

这将以Pandas的形式加载数据,您可以将列读取为df['timestamp'],然后可以像数组一样对这些列进行索引。

2.填充ROS消息并写入rosbag

有一个用于rosbag的不错的Python。我不知道CSV文件中的确切数据元素是什么,所以我将把消息填充留给您,但是它看起来如下:

代码语言:javascript
复制
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消息类型,例如来自常见包。/imu/gps是主题名称,您可以根据需要命名它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53642503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档