简介:ROS2提供了ros2 bag命令,可以记录指定主题的数据到文件中,也可以将记录下的内容再发布出来,相当于是数据的回放,除了通过命令行的方式实现数据记录以外,也可以通过编程实现主题数据记录以及而合成的主题数据记录
目录
1、ros2 bag命令行工具
1.1 ros2 bag record
命令功能:记录指定主题消息,消息数据包可通过play命令回放
命令格式:
ros2 bag record <topic_name> 记录单个主题消息
ros2 bag record -o <file_name> <topic_name_1> <topic_name_2>...<topic_name_n> 记录多个主题消息
ros2 bag record -a 记录系统内所有主题消息
启动所有节点,新开终端,创建新目录,查看主题列表,记录/ros2_robot/duckiebot_node/image主题消息
$ mkdir bag
$ cd bag
$ ros2 topic list
$ ros2 bag record /ros2_robot/duckiebot_node/image
可以看到当前目录下创建了一个以rosbag2+时间戳的目录,目录下有一个metadata.yaml文件,内容是数据记录的相关信息介绍,另外一个db3格式文件,就是我们记录下来的主题数据。

$ ros2 bag record -o subset /ros2_robot/duckiebot_node/image /ros2_robot/control_node/action

$ ros2 bag record -a

1.2 ros2 bag info
命令功能:查看主题数据记录文件信息
命令格式:ros2 bag info <file_dir_name>
我们可以用之前的3各记录命令生成的数据文件来测试:



1.3 ros2 bag play
命令功能:回放记录下来的主题数据,可通过ros2 topic echo查看回放数据,也可以通过rqt工具查看
命令格式:ros2 bag play <file_dir_name>
例如:ros2 bag play subset
注:如果记录的主题数据有自定义消息,则需要配置环境变量。

2、ros2 bag record 编程实现
上文介绍了ros2 bag的命令行操作,而主题数据记录也可以通过编程实现。为了不与之前的功能冲突,我们新建一个功能包来实现编程记录主题数据包。
2.1 先实现基础的发布订阅功能
新建功能包ros2_bag,并创建两个节点image_pub和image_sub:
$ cd ~/ros2_ws/src
$ ros2 pkg create ros2_bag --build-type ament_p

本文详细介绍了ROS2中的ros2bag工具,包括如何使用ros2bagrecord、ros2baginfo和ros2bagplay命令进行主题数据的记录、查询和回放。此外,还通过编程实现了从节点中记录主题数据包,包括从发布者和订阅者角度,并演示了如何从可执行文件记录合成数据。文章提供了完整的代码示例,帮助读者理解ROS2主题数据的处理和存储。
-- ROS2 bag数据记录与回放&spm=1001.2101.3001.5002&articleId=124100654&d=1&t=3&u=c2e63a183c3542048fbc415e6ecccda4)
1万+

被折叠的 条评论
为什么被折叠?



