我有一个csv文件,当我试图使用用ROS编写的包时,我想把它转换成rosbag。目的是利用扩展卡尔曼滤波实现传感器融合,我的csv文件包含IMU和GPS数据的信息。
发布于 2018-12-25 14:55:17
有几个步骤:
1.读取CSV文件中的数据.
在Python中有很多方法可以做到这一点,但我更喜欢使用Pandas:
import pandas as pd
df = pd.read_csv('my_csv_file.csv')这将以Pandas的形式加载数据,您可以将列读取为df['timestamp'],然后可以像数组一样对这些列进行索引。
2.填充ROS消息并写入rosbag
有一个用于rosbag的不错的Python。我不知道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消息类型,例如来自常见包。/imu和/gps是主题名称,您可以根据需要命名它们。
https://stackoverflow.com/questions/53642503
复制相似问题