请选择 进入手机版 | 继续访问电脑版
点击联系客服
客服QQ:509006671 客服微信:mengfeiseo
查看: 11|回复: 0

机器人编程趣味练习13-数据保存和播放(bag)

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-6-10 06:28:43 | 显示全部楼层 |阅读模式
命令交互工具基本上是介绍的。可以记录这些调试过程,用作后续分析。

目标

记录主题中发布的数据,以便随时播放和查看。





基础概念

Ros2 bag是一个命令行工具,用于记录系统上发布的主题数据。累计传递到任意数量主题的数据,并将其存储在数据库中。然后可以播放数据,再现测试和实验结果。录制主题也是分享工作和让别人重新制作的好方法。

预备功能包

ROS-foxy-ROS  bag  2 ROS-foxy-ROS  bag  2-bag-v  2-plugins  ROS-foxy-ROS  bag  2-compression  ROS-foxy

sudo  apt  install  ROS-foxy-ROS  2 bag  ROS-foxy-ROS  bag  2-converter-default-plugins  ROS-foxy-ROS  bag  2

Ros2bagturtlesimsource  实践

1 启动节点

键盘输入将写入turtlesim系统以便以后保存和播放,因此/turtlesim和/teleop_turtle节点将首先启动。

打开新终端,然后运行:

Ros2 run  turtlesim  turtlesim_node打开另一个终端并运行:

ROS  2 run  turtles  im  turtle  _ teleop  _ key创建新目录来存储保存的文件也是一个好方法。

MK  dirbag  _ files  CD  bag  _ files(9501 . 163.com)

如果不创建文件夹,它将保存在当前路径中。

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 没有发布任何数据。 返回运行 Teleop 的终端并选择它以使其处于活动状态。 使用箭头键移动机器人,将看到正在运行 ros2 topic echo 的终端上发布数据。



    使用键盘遥控后:



    3 保存
    要记录发布到主题的数据,请使用以下命令语法:

  • ros2 bag record
    在选择的主题上运行此命令之前,打开一个新终端并进入之前创建的 bag_files 目录,因为 rosbag 文件将保存在运行它的目录中。

    运行命令:

  • ros2 bag record /turtle1/cmd_vel
    将在终端中看到以下消息(日期和时间会有所不同):



    现在 ros2 bag 正在记录 /turtle1/cmd_vel 主题上发布的数据。 返回到teleop 终端并再次移动机器人。 如何移动无关紧要,但请尝试制作可识别的模式,以便稍后重播数据时查看。



    Ctrl+C 停止录制。

    数据将累积在一个名称为 rosbag2_year_month_day-hour_minute_second 模式的包文件中。

    记录多组数据主题

    还可以记录多个主题,以及更改 ros2 bag 保存到指定名称的文件夹。

    运行以下命令:

  • ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
    -o 选项允许包文件选择唯一的名称。 以下字符串(在本例中为子集)是文件名。

    要一次记录多个主题,只需列出每个主题,并用空格分隔。

    将看到以下消息,确认正在录制这两个主题。



    完成后,可以移动机器人并按 Ctrl+C


    可以在命令中添加另一个选项 -a,它记录系统上的所有主题。


    4 包信息
    可以通过运行以下命令查看有关录音的详细信息:

  • ros2 bag info
    在子集包文件上运行此命令将返回有关该文件的信息列表:

  • ros2 bag info subset


    要查看单个消息,必须打开数据库(在本例中为 sqlite3)来查看它,这超出了 ROS 2 的范围。

    5 包播放
    在重放包文件之前,在运行teleop 的终端中输入Ctrl+C。 然后确保turtlesim窗口可见,以便可以看到正在运行的包文件。

    输入命令:

  • ros2 bag play rosbag2_2021_06_03-11_09_25
    终端将返回消息:



    机器人将遵循之前录制时输入的相同路径(尽管不是 100% 准确;turtlesim 对系统时序的微小变化很敏感)。



    如果使用subset

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

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

    注意 /turtle1/pose 的 Count 值超过 20000; 在录制时,有关该主题的数据发布了 25561 次。

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

  • ros2 topic hz /turtle1/pose


    总结
    可以使用 ros2 bag 命令记录在 ROS 2 系统中传递的主题数据。 无论是与他人分享工作还是回顾自己的实验,它都是一个很好的工具。

    已完成“初学者:CLI 工具”教程!

    下面教程会通过三维环境机器人再巩固一下这些CLI工具,然后进行更深入的学习。

  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|无图版|手机版|小黑屋|汕头@IT精英团

    Powered by Discuz! X3.4 © 2021 Comsenz Inc.

    GMT+8, 2021-6-25 15:00 , Processed in 0.255576 second(s), 49 queries .

    快速回复 返回顶部 返回列表