ubuntu怎么批量把rosbag包转excel文件,用来origin文件处理
文件批量转换为 Excel 文件,而不编写 Python 脚本,那么你可以使用一些现有的 ROS 工具和命令行工具进行数据导出,但需要一定的手动操作。虽然 ROS 本身没有提供直接将数据导出为 Excel 文件的命令行工具,但你可以使用。这种方法避免了编写 Python 代码的复杂性,直接通过 ROS 提供的命令行工具和操作系统的文件系统就能实现批量转换和处理。你可以通过以下命令安装 ,它是 RO
项目场景:
批量把rosbag包转excel文件:
将多个文件批量转换为 Excel 文件(例如 格式),并用于 Origin 处理,可以分为几个步骤:
问题描述
提示:这里描述项目中遇到的问题:
如果你希望通过命令行工具来将 rosbag 文件批量转换为 Excel 文件,而不编写 Python 脚本,那么你可以使用一些现有的 ROS 工具和命令行工具进行数据导出,但需要一定的手动操作。虽然 ROS 本身没有提供直接将数据导出为 Excel 文件的命令行工具,但你可以使用 rosbag 和 csv 工具进行中间格式转换,再用 Excel 打开 .csv 文件。
解决方案:
提示:这里填写该问题的具体解决方案:
步骤 1:安装所需工具
安装 rosbag 和 ROS 环境
在 Ubuntu 上安装 ROS 环境。你可以通过以下命令安装 ,它是 ROS 中自带的工具。rosbag
sudo apt update
sudo apt install ros-noetic-rosbag
步骤 2:创建一个 Bash 脚本其实非常简单。下面是一步步的指导:
步骤 1: 打开终端
在你的 Linux 或 macOS 系统中,首先打开一个终端窗口。
步骤 2: 创建脚本文件
使用 touch 命令在你希望创建脚本的目录下创建一个空的脚本文件。例如:
touch my_script.sh
这条命令将在当前目录下创建一个名为 my_script.sh 的空文件。
步骤 3: 编辑脚本文件
你可以使用任何文本编辑器(如 nano、vim 或 gedit)来编辑这个文件。例如,使用 nano 编辑器:
nano my_script.sh
在编辑器中输入脚本的内容。比如一个简单的脚本内容:
#!/bin/bash
# 这是一个简单的 Bash 脚本
echo "Hello, World!"
#!/bin/bash是脚本的“shebang”,告诉系统这个文件是一个 Bash 脚本。echo "Hello, World!"是脚本执行的命令,输出Hello, World!。
编辑完成后,按 Ctrl + O 保存文件,然后按 Ctrl + X 退出 nano 编辑器。
步骤 4: 赋予执行权限
在终端中输入以下命令为脚本文件赋予执行权限:
chmod +x my_script.sh
这个命令告诉系统,my_script.sh 是一个可执行文件。
步骤 5: 运行脚本
现在,你可以通过以下命令来运行这个脚本:
./my_script.sh
这会执行脚本,输出 Hello, World!。
步骤 3:批量处理多个 rosbag 文件,将该内容保存在bash中
如果你有多个 rosbag 文件,并希望将它们批量转换为 .csv 文件,可以使用一个简单的 Bash 脚本来批量处理:
#!/bin/bash
# 输入文件夹和输出文件夹路径
input_folder="/path/to/rosbags"
output_folder="/path/to/output/csv_files"
# 循环处理每个 .bag 文件
for bag_file in $input_folder/*.bag; do
# 获取文件名,不带扩展名
base_name=$(basename "$bag_file" .bag)
# 提取话题为 .csv 格式并保存!!!!注意:只针对一个话题
rostopic echo -b "$bag_file" -p /sensor_data > "$output_folder/${base_name}_sensor_data.csv"
done
如果你想提取多个话题或者所有话题
#!/bin/bash
# 输入文件夹和输出文件夹路径
input_folder="/path/to/rosbags"
output_folder="/path/to/output/csv_files"
# 确保输出文件夹存在
mkdir -p "$output_folder"
# 循环处理每个 .bag 文件
for bag_file in $input_folder/*.bag; do
# 获取文件名,不带扩展名
base_name=$(basename "$bag_file" .bag)
# 获取 .bag 文件中的所有话题
topics=$(rosbag info "$bag_file" | grep -oP '(?<=^ ).*')
# 循环处理每个话题并保存为 .csv 文件
for topic in $topics; do
# 用下划线替换话题名称中的斜杠,以便在文件名中使用
topic_base_name=$(echo "$topic" | tr '/' '_')
# 输出文件路径
output_file="$output_folder/${base_name}_${topic_base_name}.csv"
# 提取话题的数据并保存为 CSV 文件
echo "提取话题 $topic 到文件 $output_file"
rostopic echo -b "$bag_file" -p "$topic" > "$output_file" &
done
# 等待所有后台进程完成
wait
echo "$base_name 的所有话题已提取完毕。"
done
- 替换
/path/to/rosbags为存放rosbag文件的目录路径。 - 替换
/path/to/output/csv_files为你希望存储 CSV 文件的目录。 - 上面的脚本会处理文件夹中的每个
.bag文件,将/sensor_data话题的数据保存为.csv文件。 - 替换你自己的话题内容
/sensor_data
运行成功图片:

其实不需要提取所有的话题,因为好多都有没有数据,所以仅需要提取你需要的话题即可
小结
rostopic echo命令可以将rosbag中的数据导出为.csv格式。- 使用简单的 Bash 脚本可以批量处理多个
rosbag文件。 - 将
.csv文件用 Excel 打开即可进行后续的处理。
这种方法避免了编写 Python 代码的复杂性,直接通过 ROS 提供的命令行工具和操作系统的文件系统就能实现批量转换和处理。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)