在 ROS 中使用 Protobuf 替代 ros msg

本文介绍了如何在ROS开发中使用protobuf替代ros msg,以解决msg的局限性。通过catkin_make自动生成protobuf代码并实现Adapter类,使得protobuf消息能与ROS兼容。文章只关注python环境的实现。
摘要由CSDN通过智能技术生成

Background

做 ROS 相关开发的,应该都知道 ros msg 有个非常大的槽点:

ros msg 扩展性较差,即如果 msg 的字段发生变化,则程序前后版本不兼容

因此,google 的 protobuf 相对就是一个更好的选择。在拥有更好的扩展性的同时,还能给对数据进行压缩,减少 rosbag 的体积。

然而,ROS 的 topic 要求必须使用标准的 ros message,并不是很方便换成 protobuf。如果将 protobuf 转成 str 放在特定的 ros msg 中的话,则又失去了 msg 的类型信息。

在各种尝试下,我找了一种更好的方法,将 msg 替换成 protobuf,同时与 ROS 尽可能的兼容。

注意:本文只探讨 python 环境下的实现,c++ 版的实现由于是其他同事做的,因此不在本文的探讨范围内。

Solution

1. 通过 catkin_make 自动生成 protobuf 对应的代码

可以利用 catkin 的 add_custom_command, 来自动生成代码。这样会自动 install 到相应的目录。使用时,只要 source setup.bash 即可,完全符合 ROS 的推荐使用方式。

# 只节选最核心的部分
set(proto_dir ${PROJECT_SOURCE_DIR})
file(GLOB proto_files "${proto_dir}/*.proto")
message(STATUS "Proto So
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值