iRobot公司分享在Linux嵌入式平台上运行ROS2

ROSCon 2019大会上,来自iRobot公司的Alberto Soragna、Juan Oxoby和Dhiraj Goel分享了他们在低成本嵌入式平台上使用机器人操作系统2(ROS 2)的经验。他们试验了不同的数据分发服务(DDS)实现,减少了应用程序的CPU和内存使用量,从而提高了性能。

iRobot公司正在为低成本嵌入式平台开发消费型机器人,他们在自己的嵌入式硬件上尝试运行ROS 2。ROS 2在台式机和微控制器上运行良好,但在小型Linux计算机上使用ROS比较困难。iRobot公司的机器人基于Raspberry Pi 2,配备了1GB内存和一个900MHZ的四核ARM Cortex A7 CPU。为了检验ROS2对他们来说是否是一个可行的选择,他们愿意接受ROS消耗不超过20%CPU和20MB内存,这样的消息延迟是可接受的,而且消息丢失为零。

iRobot在开发方面面临的一个主要挑战是,在原型阶段,他们有大约1000个机器人连接到同一个网络,这会产生大量的通信开销,他们使用自己开发的工具来分析这些开销。他们使用这个工具来创建数据来分析和查看有多少消息是准时到达、小幅延迟或大幅延迟的。

在演讲中,他们先是演示让CPU和内存使用都超出他们设定的目标,CPU使用开销为33%,内存为153MB,而不是20MB,大部分开销用于DDS通信层。在用旋风DDS代替这一层时,得到了较好的效果。现在,示例应用程序的CPU和内存使用量不超过最大值,只使用了13%的CPU和15.82MB内存。因此,开发人员需要考虑他们的DDS实现,如果有必要需要切换到不同的DDS实现,以获得性能提升。

iRobot公司第二个改进方法是查看开销的实际来源。内存的使用率非常高,因为DDS为ROS中的每个对象创建了一个可以与另一个主题通信的进程。他们通过添加黑名单将通信限制在彼此知道的节点上。这将内存使用量减少到原来的45%。

他们最后关注的是ROS 2的进程内管理器。ROS 2当前版本=的进程内管理器会通过RMW层发送元消息。iRobot创建了一个新的进程内管理器,它减少了通信开销,从而减少了延迟和CPU使用。这样做减少了45%的CPU使用量,但是仍然有很大的内存开销。新的进程内管理器被添加到ROS 2的主版本中,并将出现在即将发布的版本中。

更多信息,请查看用来创建性能分析的工具,或者ROS 2提供的不同服务质量策略,以便设置预期的服务质量)。这样可以帮助开发人员更好的控制机器人应用程序。

原文链接

iRobot’s Experience in Running ROS2 on Linux-Based Embedded Platforms

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章