Recording and playing back data:录制和播放数据
创始人
2025-05-30 11:23:35
0

文章目录

  • ros2 bag 命令简介
  • 1. 准备环境
  • 2. 选择一个话题
  • 3. ros2 bag record 命令
    • 3.1 记录多个话题
  • 4. ros2 bag info 命令
  • 5. ros2 bag play 命令

参考官方文档: Recording and playing back data

ros2 bag 命令简介

ros2 bag 是一个命令行工具,用于记录在你的系统中的话题上发布的数据。它积累了在任何数量的话题上传递的数据,并将其保存在一个数据库中。然后你可以重放这些数据来重现你的测试和实验的结果。记录主题也是分享你的工作并允许他人重现的一个好方法。

1. 准备环境

安装软件包:

sudo apt-get install ros-humble-ros2bag \ros-humble-rosbag2-storage-default-plugins

打开两个终端,分别运行:

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

新建一个文件夹用于保存录制的数据:

mkdir bag_files && cd bag_files

2. 选择一个话题

ros2 bag 只能记录已发布的话题中的数据。要查看你的系统的话题列表,请打开一个新的终端并运行命令:

ros2 topic list

返回结果如下:

/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

在前面的教程中,已经知道 /turtle_teleop 节点在 /turtle1/cmd_vel 话题上发布命令,使乌龟在turtlesim中移动。

要查看 /turtle1/cmd_vel 正在发布的数据,运行命令:

ros2 topic echo /turtle1/cmd_vel

一开始不会有什么显示,因为节点没有发布数据。回到你运行teleop的终端,选择它,使它处于激活状态。使用方向键移动乌龟,你会看到运行ros2 topic echo的终端上正在发布数据:

linear:x: 2.0y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: 0.0---

3. ros2 bag record 命令

要记录发布到一个话题的数据,使用命令:

ros2 bag record 

在你选择的话题上运行这个命令之前,打开一个新的终端,并进入你先前创建的bag_files目录,因为rosbag文件将保存在你运行它的目录中。

运行命令:

ros2 bag record /turtle1/cmd_vel

你会在终端看到以下信息(日期和时间会有所不同):
在这里插入图片描述

现在ros2包正在记录/turtle1/cmd_vel话题上发布的数据。回到teleop终端,再次移动乌龟。

移动几次之后按 Ctrl+C 停止记录,数据将被记录到一个 bag 文件中,名称命名模式为 rosbag2_year_month_day-hour_minute_second 。

在这里插入图片描述

3.1 记录多个话题

你还可以记录多个话题,以及改变ros2 bag保存的文件的名称。

使用以下命令:

ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose

-o 选项允许你为你的bag文件选择一个独特的名字。

要想一次记录一个以上的话题,只需将每个话题用空格隔开即可。

你会看到以下信息,确认两个话题都在录制中:
在这里插入图片描述
还有一个选项可以添加到命令中,即 -a ,它可以记录你系统中的所有话题。

4. ros2 bag info 命令

你可以通过运行以下命令查看关于录制的细节:

ros2 bag info 

对 subset 文件运行此命令将返回文件的信息列表:

ros2 bag info subset

在这里插入图片描述
要查看单个信息,你必须打开数据库,在这种情况下是sqlite3,来检查它,这超出了ROS 2的范围。

5. ros2 bag play 命令

在重放bag文件之前,在teleop运行的终端上输入Ctrl+C。然后确保你的turtlesim窗口是可见的,这样你就可以看到bag文件的运行情况。

输入命令:

ros2 bag play subset

你的乌龟将遵循你在录制时输入的路径(虽然不是100%准确;turtlesim对系统时间的微小变化很敏感)。

因为 subset 文件记录了 /turtle1/pose 主题,所以只要你有turtlesim运行,ros2 bag play命令就不会退出,即使你没有移动。

这是因为只要/turtlesim节点处于活动状态,它就会定期在/turtle1/pose主题上发布数据。你可能已经注意到在上面的ros2 bag info例子结果中,/turtle1/cmd_vel主题的Count信息有56个;这就是我们在录制时按下方向键的次数。

请注意,/turtle1/pose的Count值有12436;在我们录制的时候,该话题的数据被发布了12436次。

为了了解位置数据的发布频率,你可以运行命令:

ros2 topic hz /turtle1/pose

相关内容

热门资讯

最新或2023(历届)最新临沂... 1临沂市第一实验小学(临沂一小)2临沂市第二实验小学(临沂二小)3临沂市童星实验学校4临沂市红旗路实...
最新或2023(历届)最新日照... 1日照市实验小学  2日照市五莲县实验学校(小学部)  3日照市五莲县实验小学  4山东省五莲县实验...
最新或2023(历届)晋中市小... 最新或2023(历届)晋中榆次区小学一年级新生招生报名工作即将启动,晋中榆次区的很多家长关心最新或2...
最新或2023(历届)最新莱芜... 双峰联小电话:0634-6832300邮编:271104地址:莱芜市钢城区艾山街道办事处胡家宅村北卞...
最新或2023(历届)最新德州... 1、实验小学(含西区)省级规范化学校2、天衢东路小学, 省级规范化学校3、湖滨北路小学, 省级规范化...
【ConfluxNews】20... 【ConfluxNews】2023.3.20 ---------------------------...
java实现“数据平滑升级” 文章目录一、摘要二、前提场景说明:三、项目用到的脚本和代码1.项目目录长这样2.jav...
Collection和Map的... Collection和Map的三种不同的遍历方式Collection的三种遍历遍历方式Collect...
最新或2023(历届)最新烟台... 1烟台牟平区武宁镇陡崖子2烟台南通路小学3烟台养正小学4烟台市芝罘区潇翔小学5烟台市芝罘区祥发小学6...
最新或2023(历届)最新济宁... NO.1济宁学院附属小学上榜理由:济宁学院附小是1988年由济宁市政府建成的一所办学标准高、设施配备...
最新或2023(历届)最新泰安... 1、泰安市第一实验学校(小学部)2、泰安市岱岳区岳峰小学3、泰安市新泰市第一实验小学4、新泰市第一实...
最新或2023(历届)最新威海... 1威海市第二实验小学  2威海市实验小学  3威海经技区崮山中心小学  4威海经技区蒿泊小学  5威...
最新或2023(历届)最新潍坊... 1潍坊市实验小学  2潍坊市奎文区胜利东小学  3潍坊市奎文区先锋小学  4潍坊市奎文区实验小学  ...
JavaWeb——使用DBUt... 实验名称: 使用DBUtils实现数据库的增删改查操作                ...
如何做到深度思考? 1、什么是深度思考         深度思考是指对某个问题或主题进行深入、全面、系统的思考和探究。这...
最新或2023(历届)山西省小... 近年来“幼儿园复读现象”引发不小的争议,河北省政协委员吕铁元建议,把现行小学入学年满6周岁的规定修改...
最新或2023(历届)大同市小... 最新或2023(历届)大同城区小学一年级新生招生报名工作即将启动,大同城区的很多家长关心最新或202...
最新或2023(历届)阳泉市小... 最新或2023(历届)阳泉郊区小学一年级新生招生报名工作即将启动,阳泉郊区的很多家长关心最新或202...
最新或2023(历届)太原市小... 入学年龄凡年满六周岁的儿童,其父母或者其他法定监护人可送其入学接受并完成义务教育。太原幼升小入学注意...
最新或2023(历届)最新青岛... 家长必知:青岛小学排名一览表(前10名)最新或2023(历届),青岛实行划片就近入学政策,100%小...