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

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