0
点赞
收藏
分享

微信扫一扫

ROS2中bag包录制出现丢帧问题及解决方案


0. 前言

我们都知道ROS1与ROS2的通信是不一样的,而ROS2也因为DDS的通讯带来了一些问题,其中最严重的就属于在存储大数据包的时候会出现的丢帧问题。而如何解决这样的问题目前官方没有给出非常好的解决方案,所以我们只有曲线救国,通过保存图片的方式来实现bag包的完整录制。
操作系统:
Ubuntu 20.04
版本:foxy
DDS实现:Fast-RTPS
客户端库(如适用):rclcpp/rclpy

1. 问题说明

我们在使用ROS1与ROS2的bag互转时发现会存在丢帧的情况,同时我们直接在ROS2中录制bag包也会发现录制的频率是存在问题的

ROS2

Files:             rosbag2_2021_05_19-11_28_34/rosbag2_2021_05_19-11_28_34_0.db3
Bag size: 1.1 GiB
Storage id: sqlite3
Duration: 42.616s
Start: May 19 2021 11:28:34.289 (1621394914.289)
End May 19 2021 11:29:16.906 (1621394956.906)
Messages: 857
Topic information: Topic: /image | Type: sensor_msgs/msg/Image | Count: 427 | Serialization Format: cdr
Topic: /scan | Type: sensor_msgs/msg/LaserScan | Count: 430 | Serialization Format: cdr

ROS1

path:        2021-05-19-19-59-37.bag
version: 2.0
duration: 42.5s
start: May 19 2021 19:59:41.91 (1621425581.91)
end: May 19 2021 20:00:24.38 (1621425624.38)
size: 1.1 GB
messages: 847
compression: none [419/419 chunks]
types: sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743]
sensor_msgs/LaserScan [90c7ef2dc6895d81024acba2ac42f369]
topics: /image 418 msgs : sensor_msgs/Image
/scan 429 msgs : sensor_msgs/LaserScan

这里经过测试得到了下面的数据

在PC端:

ROS2中bag包录制出现丢帧问题及解决方案_python


在Xavier端

ROS2中bag包录制出现丢帧问题及解决方案_python_02


我们可以发现相较于ROS1稳定而言,ROS2的频率下降很严重,并不能拉满宽带。原本以为是CPU问题,但是经过测试发现CPU变化不大,个人怀疑是DDS通讯在ROS2中本身造成的问题。在ROS官网中也发现了​​该问题​​​的阐述,原因是因为FastRTPS这类DDS并不能传输较大的带宽。我们可以更换​​DDS​​来缓解这样的问题,但是仍然存在丢帧的问题。为此本文提供了一个不走​​ros_bridge1​​方式的解决方案

ROS2中bag包录制出现丢帧问题及解决方案_python_03

2.无丢帧转bag方式

首先从ROS1中订阅bag包或者摄像头的数据,并将对应的图片以时间戳的形式保存。

…详情请参照​​古月居​​


举报

相关推荐

0 条评论