ROS2中bag包录制出现丢帧问题及解决方案
【摘要】 0. 前言我们都知道ROS1与ROS2的通信是不一样的,而ROS2也因为DDS的通讯带来了一些问题,其中最严重的就属于在存储大数据包的时候会出现的丢帧问题。而如何解决这样的问题目前官方没有给出非常好的解决方案,所以我们只有曲线救国,通过保存图片的方式来实现bag包的完整录制。操作系统:Ubuntu 20.04版本:foxyDDS实现:Fast-RTPS客户端库(如适用):rclcpp/rc...
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端:
在Xavier端
我们可以发现相较于ROS1稳定而言,ROS2的频率下降很严重,并不能拉满宽带。原本以为是CPU问题,但是经过测试发现CPU变化不大,个人怀疑是DDS通讯在ROS2中本身造成的问题。在ROS官网中也发现了该问题的阐述,原因是因为FastRTPS这类DDS并不能传输较大的带宽。我们可以更换DDS来缓解这样的问题,但是仍然存在丢帧的问题。为此本文提供了一个不走ros_bridge1
方式的解决方案
2.无丢帧转bag方式
首先从ROS1中订阅bag包或者摄像头的数据,并将对应的图片以时间戳的形式保存。
…详情请参照古月居
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)