ROS2编程入门与实践
1. ROS2的DDS实现
ROS2能够自动发现发布者和订阅者,无需集中式服务。这种发现是通过多播实现的,不过后续连接为单播。市面上有多家DDS供应商,如FastDDS、CycloneDDS和RTI Connext,它们都全部或部分实现了由对象管理组织(OMG)定义的DDS标准。ROS2可以使用这些DDS实现,大多数开发者在使用时可能察觉不到差异,但在对延迟、数据量或资源使用有高性能要求时,就需要根据客观标准进行选择。
这些DDS实现的API并不相同,为简化rcl层,引入了名为rmw的底层,它为rcl程序员提供了统一的API来访问每个受支持的DDS实现的功能。选择使用哪个DDS很简单,只需修改环境变量 RMW_IMPLEMENTATION 即可。在Foxy发行版中,官方的DDS版本是FastDDS,而在Galactic中则是CycloneDDS,这些供应商之间存在竞争,有望让ROS2社区从中受益。
2. 编程环境与工具要求
在学习ROS2编程时,推荐使用C++作为主要编程语言,同时也会包含Python示例。选择C++是因为在机器人开发中,编译型语言通常比解释型语言更具优势。此外,建议使用Linux(特别是Ubuntu GNU / Linux 20.04 LTS),因为它是ROS2的参考平台,在机器人领域占据主导地位。
在编程过程中,会使用到C++17的许多特性,如智能指针( shared_ptr 和 unique_ptr )、容器( vector 、 list 、
超级会员免费看
订阅专栏 解锁全文
4754

被折叠的 条评论
为什么被折叠?



