ROS学习–rostopic工具

code review!

1.ROS shell 命令

在这里插入图片描述

2.ROS 执行命令

在这里插入图片描述

3.ROS 信息命令

在这里插入图片描述

4.ROS catkin 命令

在这里插入图片描述

5.ROS 功能包命令

在这里插入图片描述

6.rosnode ROS节点

在这里插入图片描述

7.rostopic ROS话题

在这里插入图片描述
在这里插入图片描述

8.rosservice ROS服务

在这里插入图片描述

9.rosparam ROS参数

在这里插入图片描述

10.rosmsg ROS消息信息

在这里插入图片描述

11.rossrv ROS服务信息

在这里插入图片描述

12.rosbag ROS日志信息

在这里插入图片描述
在这里插入图片描述

13.只播放感兴趣的topic

rosbag play bagpath/bag_name.bag --topic topic1_name topic2_name topicN_name

14.只记录感兴趣的topic,(大写的O为完全名字,小写的o为名字前缀+自动生成的日期)

rosbag record -o bagpath/new_bag_name.bag topic1_name topic2_name topicN_name

15.一次性读取xxxbag中的所有消息并将内容输出到xxx.yaml文件

ros_readbagfile xxxbag | tee xxx.yaml

16.环播放bag命令

rosbag play -l <bagfile>

17.命令行启动ROS节点,同时对节点重命名

ROS命令 __name:=my_record_node

rosclean的用法
在这里插入图片描述

18.将ROS数据包中的后10秒数据提取为一个新的数据包

首先,使用rosbag info命令获取数据包的起始时间和终止时间。可以通过-y选项来输出时间信息,然后使用grep命令来提取所需的时间值,例如:

rosbag info -y your_bag_file.bag | grep "start:"
rosbag info -y your_bag_file.bag | grep "end:"

上述命令会输出数据包的起始时间和终止时间。

要将ROS数据包中的后10秒数据提取为一个新的数据包,可以结合使用rosbag inforosbag filter命令来实现。以下是一个将这两个命令组合在一行中的示例:

rosbag filter your_bag_file.bag filtered_bag_file.bag "t.to_sec() >= $(rosbag info -y your_bag_file.bag | grep "end:" | awk '{print $2}' | awk -F '.' '{print $1}') - 10"

这个命令会读取输入的your_bag_file.bag数据包,并将满足时间条件的消息写入输出的filtered_bag_file.bag

解释一下这个命令的组成部分:

  1. rosbag info -y your_bag_file.bag | grep "end:" | awk '{print $2}' | awk -F '.' '{print $1}':这部分命令会获取输入数据包的终止时间,并将其转换为整数形式。首先,rosbag info -y your_bag_file.bag获取数据包的时间信息,grep "end:"筛选出终止时间行,awk '{print $2}'提取出时间值,awk -F '.' '{print $1}'移除小数部分。
  2. t.to_sec() >= $(...) - 10:这部分命令会将获取的终止时间减去10秒,并将结果作为过滤条件传递给rosbag filter命令。

19.rqt_bag

在这里插入图片描述

20.rosbag record的–split和–duration参数:根据文件大小或时间自动将记录的数据分割成多个文件进行录制

rosbag record 提供了一些有用的参数,用于管理录制数据的大小和时长。这些参数允许用户根据文件大小或时间自动将记录的数据分割成多个文件。以下是 --split--duration 参数的用法:

--split 参数

--split 参数用于根据记录的数据大小自动将bag文件分割成多个较小的文件,以避免产生一个非常大的文件。当文件达到指定的大小时,rosbag record 会自动关闭当前的bag文件,并开始写入一个新的bag文件。

使用示例:

rosbag record -a --split --size=1024

这个命令会记录所有的话题,当bag文件大小达到1024MB时,自动开始一个新的文件。使用 --split 时,生成的文件名会自动包含一个序列号。

--duration 参数

--duration 参数用于根据时间自动分割bag文件。这对于在长时间记录中管理数据文件非常有用。当指定的时间段过去后,rosbag record 会关闭当前的bag文件,并开始写入一个新的bag文件。

使用示例:

rosbag record -a --split --duration=30m

这个命令会记录所有的话题,每30分钟自动将记录分割成一个新的文件。--duration 参数接受的时间格式可以是秒(s),分钟(m),小时(h)等。

注意:可以同时使用 --split--duration 参数来在两个条件中的任意一个达成时分割文件。这可以使得bag文件的管理既不会因为文件过大而不便处理,也不会因为时间过长而数据过多。

示例:

rosbag record -a --split --size=1024 --duration=30m

使用这个命令,如果bag文件大小达到1024MB或者记录时间达到30分钟,rosbag record 将开始写入一个新的文件。

请注意,具体参数的使用可能会随着ROS版本的不同而有所变化,所以建议查看所使用的ROS版本的 rosbag record 文档来获取最准确的信息。

21.rosbag play -s:指定从 bag 文件的哪个时间点开始播放

例如,如果你有一个名为 my_ros_data.bag 的 bag 文件,并且你想跳过开始的前10秒的数据,你可以这样使用 -s 参数:

rosbag play -s 10 my_ros_data.bag

这条命令会从 bag 文件的第10秒开始播放记录的数据。这对于跳过不感兴趣的数据或者直接跳到特定事件发生的时间点非常有用。

请注意,rosbag play 命令还有其他参数可以与 -s 结合使用,以更精细地控制播放过程,例如 -u (用于指定播放多长时间的数据),-r (用于改变播放速度),以及 --loop (用于循环播放 bag 文件) 等。

22.rosbag play -u:指定要播放多长时间段的数据

这个参数通常与 -s 参数结合使用,以指定一个精确的时间窗口来播放bag文件中的数据。

例如,如果你想从 bag 文件的开始播放前 30 秒的数据,你可以使用以下命令:

rosbag play -u 30 <bagfile>

如果你想跳过开始的 15 秒,并且只播放接下来的 10 秒数据,你可以结合使用 -s-u 参数:

rosbag play -s 15 -u 10 <bagfile>

这条命令会从 bag 文件的第 15 秒开始播放,并在 10 秒后停止。

-u 参数非常适合用于分析或调试 bag 文件的特定部分,也可以用于演示时只展示感兴趣的一段记录。

记住,rosbag play 的其它参数可以用来调整播放的行为,例如 -r 改变播放速度,--clock 发布模拟时钟消息等。每个参数都是独立的,可以根据你的需求组合使用。

23.plotjuggler 包安装的注意点

  1. sudo apt-get install ros-melodic-plotjuggler

    • 安装的包plotjuggler 是一个用于数据可视化和调试的工具,可以以图形化界面实时观察和分析数据。
    • 功能
      • 安装了 PlotJuggler 的核心功能。
      • 这是该工具的基础包,包含其主要的 GUI 界面和插件系统。
      • 它本身是一个独立的软件,可以在非 ROS 环境下使用。
  2. sudo apt-get install ros-melodic-plotjuggler-ros

    • 安装的包plotjuggler-rosPlotJuggler 的 ROS 扩展插件。
    • 功能
      • 提供了与 ROS 系统的集成功能,使 PlotJuggler 能够直接订阅 ROS 的话题(topics),并实时读取和显示 ROS 数据。
      • 如果你希望在 ROS 项目中使用 PlotJuggler 来可视化 ROS 的话题数据(如传感器数据或自定义数据流),需要安装此插件。
  3. sudo apt-get install ros-melodic-plotjuggler-msgs ros-melodic-plotjuggler-ros

    • 安装的包
      • ros-melodic-plotjuggler-msgs:提供了支持 PlotJuggler 和 ROS 数据交互的专用消息类型。
      • ros-melodic-plotjuggler-ros:同第二条命令,安装 ROS 集成功能。
    • 功能
      • 通过安装 ros-melodic-plotjuggler-msgs,你可以定义、解析和可视化自定义的消息类型(ROS messages)。
      • 这些消息类型允许 PlotJuggler 处理更复杂的 ROS 数据结构,而不仅限于标准的数据类型。

总结区别与用途:

命令 功能 是否需要 ROS
sudo apt-get install ros-melodic-plotjuggler 安装 PlotJuggler 的核心功能,用于数据可视化和调试。 否(独立工具)
sudo apt-get install ros-melodic-plotjuggler-ros 安装 ROS 插件,使 PlotJuggler 能够订阅 ROS 的话题并实时显示 ROS 数据。
sudo apt-get install ros-melodic-plotjuggler-msgs ros-melodic-plotjuggler-ros 安装 ROS 插件和消息类型支持,允许处理自定义的 ROS 消息类型,提供更高级的 ROS 数据可视化功能。

安装顺序建议:

  • 如果你只需要 PlotJuggler 的 GUI 数据可视化功能,可以只安装:

    sudo apt-get install ros-melodic-plotjuggler
    
  • 如果你需要在 ROS 项目中使用,建议同时安装 ROS 插件:

    sudo apt-get install ros-melodic-plotjuggler ros-melodic-plotjuggler-ros
    
  • 如果你需要处理复杂的 ROS 消息类型(如自定义消息),需要安装:

    sudo apt-get install ros-melodic-plotjuggler-msgs ros-melodic-plotjuggler-ros
    
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐