项目场景:

批量把rosbag包转excel文件:

将多个文件批量转换为 Excel 文件(例如 格式),并用于 Origin 处理,可以分为几个步骤:


问题描述

提示:这里描述项目中遇到的问题:

如果你希望通过命令行工具来将 rosbag 文件批量转换为 Excel 文件,而不编写 Python 脚本,那么你可以使用一些现有的 ROS 工具和命令行工具进行数据导出,但需要一定的手动操作。虽然 ROS 本身没有提供直接将数据导出为 Excel 文件的命令行工具,但你可以使用 rosbagcsv 工具进行中间格式转换,再用 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: 编辑脚本文件

你可以使用任何文本编辑器(如 nanovimgedit)来编辑这个文件。例如,使用 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 提供的命令行工具和操作系统的文件系统就能实现批量转换和处理。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐