rosbag to csv

本文介绍了如何使用ROS工具记录和保存数据到bag文件,再从bag文件中提取CSV格式的数据,并利用Matlab进行读取及绘图分析。此外,还简要说明了如何处理时间戳数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. save to the bag files

rosbag record -O [topic name group]

1. save csv files

rostopic echo -b [bag_name].bag -p [topic_name] > [csv_name].csv

2. read the csv files in Matlab

% filename =
cd …
currentPath = pwd;
filename =strcat(strcat(currentPath,’’), ‘leaderPosition_new.csv’);

% aaa = csvread(filename);
T = readtable(filename);

plot(T.field_pose_position_x, T.field_pose_position_y, ‘r-’);
% axis equal
clc
num2str(T.x_time-T.x_time(1))
hold on
plot(T.x_time-T.x_time(1), T.field_pose_position_x);

3. ros timestamp

ros time
nsec
should * 10^(-9)

### 将ROS1的rosbag文件转换为ROS2的rosbag2格式 为了实现从ROS 1到ROS 2版本之间的迁移,尤其是针对数据记录工具如`rosbag`至`rosbag2`的转变,社区提供了多种方法来处理这一需求。由于两个系统的内部结构存在差异,直接转换并非简单操作;然而,通过中间步骤可以完成此过程。 一种常见做法是先将ROS 1中的消息序列化成通用格式(例如CSV),再将其导入ROS 2环境中重新打包成新的rosbag2文件。不过更简便的方式是利用专门为此目的开发的小型脚本或工具集。值得注意的是,在某些情况下可以直接读取旧版袋文件并重播其中的消息流,但这取决于具体的应用场景以及所涉及的话题类型和消息定义是否兼容新环境[^1]。 对于希望自动化整个流程的情况,GitHub上有一个名为`rosbags`的项目特别值得关注。该项目提供了一套Python库和支持命令行接口的操作程序,能够有效地帮助用户执行跨平台的数据迁移工作。以下是基于该方案的一个简化示例: #### 使用`rosbags`进行转换 安装依赖项: ```bash pip install rosbags ``` 创建一个简单的Python脚本来加载原始ROS 1 bag文件并将内容写入一个新的ROS 2 bag文件中: ```python from pathlib import Path import rosbags.rosbag1 as rosbag1 import rosbags.rosbag2 as rosbag2 with rosbag1.Reader('input.bag') as reader, \ rosbag2.Writer('output', storage_id='sqlite3') as writer: connections = {} for conn in reader.connections: topic = conn.topic.lstrip('/') # 创建连接映射表以便后续查找对应关系 connections[conn.id] = writer.add_connection( f'/{topic}', conn.msgtype, serialization_format=conn.serialization.format.decode(), offered_qos_profiles='', ) for connection, timestamp, rawdata in reader.messages(): msgformat = 'cdr' if isinstance(rawdata, bytes): data = rawdata else: data = rawdata.data writer.write(connections[connection], timestamp.to_nsec(), data) ``` 这段代码展示了如何遍历输入Bag文件里的每条记录,并按照相应的主题名称、消息类型等信息建立与输出Bag文件间的关联,从而实现了完整的迁移功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值