记录如何从正在运行的ROS系统中话题数据(🐢🐢🐢😃)
数据的录制
将话题放到一个 袋(bag)文件中
终端One
roscore
终端Two
rosrun turtlesim turtlesim_node
终端Three
rosrun turtlesim turtle_teleop_key
在键盘控制界面上控制 turtle 的移动[随意]
新建一个终端4
rostopic list -v
输出的结果类似于
发布的主题列表是唯一可以被记录到日志文件当中的消息类型,由teleop_turtle发布的/turtle1/cmd_vel话题是指令消息,作为turtlesim进程的输入。消息/turtle1/color_sensor和/turtle1/pose是turtlesim发布的输出消息
保存数据
随意路径下创建一个文件夹保存
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a
当 rosbag record -a 开始运行的时候,就可以使用键盘控制🐢移动进行保存了
Ctrl + C 退出并且查看文件内容:
rosbag info bag文件夹名字
这些信息告诉你bag文件中所包含话题的名称、类型和消息数量。,在之前使用rostopic命令查看到的五个已公告的话题中,其实只有四个在录制期间发布了消息。带-a参数选项运行rosbag record命令时系统会录制下所有节点发布的所有消息
如果无需录制所有发布的消息可以使用一下命令来录制对应数据子集
rosbag record -O subset /turtle1/cmd_vel /turtle1/pose
然后通过键盘控制 🐢 随意移动几秒钟,最后按Ctrl+C退出rosbag record命令
回放
使用一下命令对之前录制的结果进行回放:
rosbag play -r speed bag文件夹名字
其中speed 是回放速度
当 speed 为 1时:
当 speed 为 2时:
Thinking
rosbag 具有一定的局限性,🐢 并非可以完全的映射到原先通过键盘控制时产生的路径上,整体形状应该是差不多的,但没有完全一样。在 ROS 系统对运动模型比较敏感的时候,ros bag 并非具有很好的场景适应性
🌸🌸🌸完结撒花🌸🌸🌸
🌈🌈@FAE🌈🌈