Raspberry Pi上的ROS:使用rosbag保存主题数据

下午好,亲爱的读者们!
本文是非同寻常的系列它可以被视为对文章的有用补充在这里,我将谈谈ROSbag中的ROS这样有用的工具。请有兴趣的人在猫下。

什么是rosbag?


rosbag允许您将ROS主题中发布的数据保存到具有bag扩展名的特殊文件中。然后,可以使用相同的rosbag播放这些文件。数据将在最初发布的相同主题中发布。例如,这允许在不存在传感器的情况下模拟来自传感器的数据接收。

将主题中的数据写入bag文件


例如,我们将记录来自Raspberry Pi相机的数据。如果你还记得的文章,我们收到了来自摄像机的视频流,并在主题image_raw公布。现在,我们将仅使用相同的ROS节点来接收记录数据。我们将录制从主题image_raw到rosbag文件raspicam_image_raw.bag的视频流,然后播放它,而无需使用相机即可接收原始流。

因此,启动raspi_cam_ros节点:

rosrun raspi_can_ros capture

显示活动主题列表:

rostopic list

其中的主题是我们的主题image_raw。现在,我们将使用rosbag记录主题:

rosbag record /image_raw -o raspicam_image_raw

我们将录制几分钟的视频流。最好不要写很长的流,因为bag文件在内存中占据着相当的位置。例如,我在一分钟半的录音中花费了90 MB。
首先,让我们看看我们的包文件包含什么:

rosbag info < >

path:        2016-05-07-13-00-23.bag
version:     2.0
duration:    55.1s
start:       May 07 2016 15:00:24.86 (1462626024.86)
end:         May 07 2016 15:01:19.96 (1462626079.96)
size:        89.7 MB
messages:    102
compression: none [102/102 chunks]
types:       sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743]
topics:      /image_raw   102 msgs    : sensor_msgs/Image


突破袋文件数据


现在停止我们的节点并播放记录:

rosbag play raspicam_image_raw.bag -r 1 --loop

我们在rqt_image_view窗口中显示来自image_raw主题的数据:

rosrun rqt_image_view rqt_image_view

在视频中可以看到Raspberry Pi 2上bag文件的回放。



rosbag游戏团队也有几个有用的选项:
  • -r FACTOR确定速度因子(帧速率乘以该值)
  • -hz = HZ确定以Hz为单位的帧频(默认为100)
  • --loop循环播放(到达录音结尾时“倒退”到开头)

有一个特殊的工具rqt_bag用于记录和处理bag文件。官方页面上,您可以了解有关此实用程序的更多信息。
目前,这只不过是关于rosbag。我认为您会发现rosbag实用程序有许多用途。这是一个功能强大的实用程序,如果完全使用ROS,则很难没有它。
使用ROS在您的项目中好运!

Source: https://habr.com/ru/post/zh-CN393811/


All Articles