ROS 2與Unity合作提升自主機器人效能

Unity在新版本中添加了ROS 2的官方支援,其強大的框架,加上模擬,將支援無數全新用例。

機器人作業系統(ROS)是從2007年開始開發機器人應用程式的流行框架。儘管最初是為了加速機器人研究而設計的,但它很快在工業和商業機器人中被廣泛採用。ROS 2建立在ROS可靠框架的基礎上,同時改進了對現代應用程式的支援,如多機器人系統、實時系統和生產環境。Unity目前已經將其對ROS生態系統的官方支援擴充套件到ROS 2。

ROS 2與Unity合作提升自主機器人效能

現代機器人技術正在將其重點轉向“自主性”,即研究和開發能夠在沒有人類開發者定義的嚴格規則的情況下做出決策的演算法,而模擬演算法則是透過實現比現實世界測試更大的靈活性和更快的實驗時間來實現這一轉變。在本篇文章中將演示如何模擬由Unity和ROS 2建立的自主移動機器人(AMR)的同時定位和對映(SLAM)以及導航功能。

ROS 2為現代機器人技術提供動力

雖然ROS仍然是機器人原型開發的優秀框架,但它已經接近生命週期的盡頭,並且缺少一些在機器人系統中實現超越原型,全面生產和部署所必需的功能。ROS 2的技術路線圖由行業專家委員會定義了明確的原則,以確保將ROS 2打造成為服務機器人終端使用者的合適框架。ROS 2支援更多的作業系統和通訊協議,並且設計得比ROS分類更加精確。

自主模擬供電

ROS 2的許多新興用例都側重於自動化。引入自主性意味著機器人做出的決策以及這些決策的結果不完全可以僅使用狀態機和一組數學公式來進行預測,就像它們可能在許多工業機器人的案例中一樣。與工業機器人相比,自主機器人的操作環境呈指數級增長。它所遇到的輸入的排列遠遠超過了在受控的實驗室環境中所能複製的水平。為了完全驗證自主機器人的行為符合製造商的預期,製造商們也可以在機器人上進行編輯。在以Unity建立的模擬世界中,時間變得毫無意義,因此製造商們可以根據他們的需要對機器人進行:適當強度的模擬學習。

如果在模擬中期望機器人能夠感知周邊環境,那麼該模擬必須在不對環境模擬拓撲和物理精度方面做出妥協的情況下實現對機器人身上的感測器進行精確建模才能實現。如果該環境中有其他干擾,即人或其他機器人,則模擬過程必須能夠實現代理行為的建模,同時仍然保持其感測器模擬、拓撲展示和物理建模的準確性。為了讓機器人在所有可能遇到的情況下都能充分得到鍛鍊,這個模擬需要執行很多很多次。這就意味著,要實現自主機器人模擬過程就需要工業機器人模擬不常用到的四個特點:靈活性、可擴充套件性、可量測性和保真度。而Unity正好位於所有這些需求的交叉點,目前Unity平臺中已經包含了更多的功能來更好的支援自主機器人的開發。

透過Unity的Robotics軟體包,使用者將可以訪問已經完成構建的介面,使與ROS或ROS 2的通訊變得更加容易。使用者將能夠直接從Unity的URDF Importer匯入帶有機器人配置的URDF檔案,並使用Unity高質量、高效的渲染管道和高效能、高精確度的物理模擬來訓練他們的機器人。透過Unity的資產商店,使用者可以瀏覽各種額外的預製環境和道具,以幫助他們為機器人的特定環境和任務建模。只需點選幾下滑鼠,模擬就可以構建並部署到任何主流作業系統上,如Windows 10、Mac OS和Linux等。透過使用C#指令碼、Bolt視覺化指令碼或Unity資產庫中可用的許多指令碼和實用工具包,使用者可以繼續自定義特定模擬的功能,以適配特定的用例。

一鍵式ROS 2支援

事實上將Unity專案移動到ROS 2很簡單。在ROS-TCP-Connector包中,Unity添加了一個下拉選單,允許使用者在ROS和ROS 2整合之間切換。更改協議後,Unity將根據使用者選擇的訊息定義和序列化協議自動重新編譯包。使用者只需在自己的專案中進行這種更改,或者選擇示例儲存庫中的Robotics-Nav2-SLAM,即可完成測試。

ROS 2與Unity合作提升自主機器人效能

上圖中的示例專案演示瞭如何使用Unity來模擬在ROS 2中執行的導航系統。導航的概念很簡單,在自主機器人模擬的內容中變化不大。導航演算法旨在找到一條直通下一步流程的道路。然而,要從我在什麼地方到我要去什麼地方,必須首先做SLAM——同時定位和製圖。SLAM描述了一組演算法,用來回答“我現在在哪裡,我去過哪裡?”作為感官和大腦之間處理管道的固有部分,人類一直在執行SLAM。對於自主機器人來說,執行精確的SLAM對於大多數現實環境來說仍然是一個具有挑戰性的命題。一個自主移動機器人到底需要什麼,才能讓它始終知道自己在哪裡,相對於它曾經去過的任何地方,這仍然是一個活躍的研究領域。對於給定的用例,真正能夠回答這個問題的唯一方法就是進行多次模擬試驗(對於感測器、演算法等)。

在示例中,我們會發現這是一個簡單的倉庫環境,一個帶有模擬雷達和電機控制器的Turtlebot 3移動機器人的完全鉸接模型,以及一個用於構建影象的Dockerfile,該影象包含模擬練習Nav2和slam_toolbox堆疊所需的所有ROS 2依賴關係。

ROS 2與Unity合作提升自主機器人效能

左圖:在Unity中生成併發送的ROS 2訊息的RViz顯示。右圖:TurtleBot 3在Unity中執行SLAM和自主導航。