隨著現(xiàn)實(shí)場(chǎng)景中部署的自主機(jī)器人越來越多,對(duì)高保真多機(jī)器人仿真環(huán)境的需求也在迅速增長(zhǎng)。本文將回顧筆者過去在 Cogniteam 使用的仿真多機(jī)器人的方法、目前使用NVIDIA Isaac Sim所取得的進(jìn)步,以及 Nimbus 如何通過 Isaac Sim 加速多機(jī)器人仿真的開發(fā)和維護(hù)。
使用 Unreal Tournament
游戲引擎進(jìn)行多機(jī)器人仿真
大約 20 年前,我和 Cogniteam 的朋友們開始進(jìn)行機(jī)器人開發(fā)。大家想要構(gòu)建一個(gè)用于多機(jī)器人任務(wù)分配和團(tuán)隊(duì)工作的機(jī)器人框架。該系統(tǒng)最初被命名為 CogniTAO,后來又發(fā)布了簡(jiǎn)化版本 ROS decision_making。
當(dāng)時(shí),多機(jī)器人的用例還很少,而且也無法對(duì)這些機(jī)器人進(jìn)行 3D 仿真。所以我為 Unreal Tournament 2000-2004 游戲引擎寫了一個(gè)可以仿真四個(gè)機(jī)器人的 mod。我們這支由四名程序員組成的小團(tuán)隊(duì)花了大約 3 年時(shí)間,開發(fā)出一個(gè)可以順利運(yùn)行 15 分鐘的仿真環(huán)境。
圖 1. 四個(gè)機(jī)器人的仿真(左)
以及這些機(jī)器人的視頻(右)
該環(huán)境能夠在五臺(tái)先進(jìn)的臺(tái)式電腦上仿真四個(gè)帶有攝像頭、Hokuyo 激光雷達(dá)、測(cè)向儀和測(cè)繪功能的機(jī)器人,并且能夠遠(yuǎn)程接收每臺(tái)機(jī)器人的視頻資料。我們的一位工程師寫了一個(gè) C++ 的 TCP 客戶端,可以直接從本地網(wǎng)絡(luò)傳輸游戲引擎的數(shù)據(jù)并全屏顯示。必須嚴(yán)格按照順序運(yùn)行代碼,這樣才能讓機(jī)器人按時(shí)抵達(dá)正確的位置。
使用 Gazebo 進(jìn)行多機(jī)器人仿真
到了 2013 年,在 Gazebo 成為實(shí)際中的機(jī)器人仿真平臺(tái)后,我們把工作轉(zhuǎn)移到了 Gazebo 上。三個(gè)程序員花了大約 2 年時(shí)間,在兩臺(tái)英特爾 Xeon 上仿真了 10 個(gè)機(jī)器人。他們使用了 ROS move_base 導(dǎo)航堆棧和 OpenCV Hough Circle Transform 進(jìn)行模板檢測(cè),在 TensorFlow 出現(xiàn)之前,機(jī)器人團(tuán)隊(duì)都是用這個(gè)辦法來做演示的。我們當(dāng)時(shí)的同事花了 6 個(gè)月的時(shí)間構(gòu)建了 RQT 插件,來控制和顯示來自多個(gè)機(jī)器人的數(shù)據(jù)串流(圖 2)。
圖 2. 10 個(gè)帶有 RQT 插件的機(jī)器人
所拍攝的視頻影像和地圖視圖
這些機(jī)器人必須能夠相互通信,也必須能夠在無法通信的情況下運(yùn)行。為了實(shí)現(xiàn)這一點(diǎn),每個(gè)機(jī)器人都必須運(yùn)行自己的 ROS 主程序,并通過 ROS 多主程序網(wǎng)絡(luò)進(jìn)行同步。
使用 NVIDIA Isaac Sim 進(jìn)行多機(jī)器人仿真
幾個(gè)月前,我請(qǐng) Cogniteam 算法團(tuán)隊(duì)的計(jì)算機(jī)科學(xué)學(xué)生 Saar Moseri 使用云機(jī)器人生態(tài) Nimbus 和 NVIDIA Isaac Sim 建立了一個(gè)多機(jī)器人仿真場(chǎng)景。我和內(nèi)部測(cè)試團(tuán)隊(duì)都希望使用 Nimbus 來控制機(jī)器人,并查看它們所產(chǎn)生的數(shù)據(jù)。
Saar 花了大約兩周時(shí)間熟悉環(huán)境和配置系統(tǒng)。圖 3 所示的是這項(xiàng)工作的成果,運(yùn)行在 Cogniteam 實(shí)驗(yàn)室一臺(tái)裝有 NVIDIA GeForce RTX 3080 的標(biāo)準(zhǔn)(單體)臺(tái)式機(jī)上。
圖 3. NVIDIA Isaac Sim 多機(jī)器人默認(rèn)設(shè)置
Saar 依據(jù)了NVIDIA NGC 上的 Isaac Sim 文檔來安裝和設(shè)置環(huán)境。他使用 Nimbus 在仿真機(jī)上設(shè)置了代理并創(chuàng)建了一個(gè)網(wǎng)關(guān)節(jié)點(diǎn),通過 ROS 接收來自仿真機(jī)的數(shù)據(jù)。
圖 4. Nimbus 機(jī)器人編輯器(左)
和 Nimbus 配置編輯器(右)
然后我們創(chuàng)建了圖 5 所示的節(jié)點(diǎn)配置。
圖 5. 帶有 move_base 導(dǎo)航的 Nimbus 簡(jiǎn)單任務(wù)配置
這兩個(gè)已經(jīng)容器化的構(gòu)建模塊分別是一個(gè)網(wǎng)關(guān)節(jié)點(diǎn)和一個(gè) move_base 導(dǎo)航的節(jié)點(diǎn)。該配置被部署到 Cogniteam 實(shí)驗(yàn)室仿真桌面上運(yùn)行的代理中。其他更復(fù)雜的配置連同來源,包括用于 GMapping、路徑追蹤等的節(jié)點(diǎn),都可以在 Nimbus Hub(https://app.cognimbus.com/nimbushub)獲取。
我和團(tuán)隊(duì)都被這種方法的無限可能性震驚到了。在上述配置中,仿真感官數(shù)據(jù)從Isaac Sim通過 ROS 網(wǎng)關(guān)到達(dá),ROS 網(wǎng)關(guān)同時(shí)支持 ROS 和 ROS 2。Nimbus 可實(shí)現(xiàn)查看和控制功能。
這個(gè)開箱即用的設(shè)置使我們的團(tuán)隊(duì)能夠執(zhí)行基本的仿真任務(wù),并在實(shí)驗(yàn)室里仿真機(jī)器人車隊(duì)的控制。不僅如此,還可以完成許多其他功能,比如記錄機(jī)器人的仿真運(yùn)行情況和感官數(shù)據(jù)、通過遠(yuǎn)程 SSH 連接到仿真機(jī)器、對(duì)仿真數(shù)據(jù)進(jìn)行全局監(jiān)控,甚至向驗(yàn)證團(tuán)隊(duì)發(fā)送有關(guān)仿真進(jìn)展的電子郵件和短信通知。所有這些都可以在一個(gè)網(wǎng)絡(luò)瀏覽器上完成。
將 Isaac Sim 與 Nimbus 組合成統(tǒng)一的系統(tǒng),其功能與現(xiàn)有的云仿真產(chǎn)品相似,但在本地機(jī)器上運(yùn)行且不會(huì)產(chǎn)生額外的云仿真計(jì)算成本。此外,它還開辟了一些新的先進(jìn)仿真流程,比如硬件在環(huán)仿真等。這在云中運(yùn)行仿真時(shí)是不可能做到的。圖 6 顯示了 Nimbus 中的控制、導(dǎo)航和繪圖情況。
圖 6. Nimbus 機(jī)器人 WebRTC 視頻監(jiān)控(左)
以及 Nimbus 地圖視圖和自主控制(右)
如要拷貝上述提到的設(shè)置,請(qǐng)參考 Isaac Simdocumentation(https://catalog.ngc.nvidia.com/orgs/nvidia/containers/isaac-sim)文檔。然后在 Nimbus 上創(chuàng)建一個(gè)免費(fèi)賬戶,登錄后按照說明即可創(chuàng)建一個(gè)機(jī)器人。
在將機(jī)器人代理安裝在 Isaac Sim 以 headless 模式運(yùn)行的桌面上后,您就能夠通過遠(yuǎn)程 SSH 配置仿真并在 Nimbus 網(wǎng)站上監(jiān)控仿真機(jī)。
視頻1. Nimbus 和 NVIDIA Isaac Sim 演示視頻
您可在 Nimbus hub 部署 Isaac Sim 配置。由于一切都已經(jīng)容器化(包括 Isaac Sim)并且可在瀏覽器上進(jìn)行控制,因此不需要安裝任何應(yīng)用。機(jī)器上的代理將設(shè)置好執(zhí)行所需的一切。
然后,您可以在該代理的監(jiān)控頁(yè)面上監(jiān)控任何與您的設(shè)置相關(guān)的數(shù)據(jù)。在代理設(shè)置中,您可以通過在 ROS 串流上添加條件來定義通知,比如:
“if GoalStatus == ABORTED”
sendsms/mailtosimulation@your-company.com
總結(jié)
仿真是成功部署自主機(jī)器人的關(guān)鍵。多次運(yùn)行同一場(chǎng)景對(duì)測(cè)試來說至關(guān)重要,但多機(jī)器人仿真則有所不同。開發(fā)一個(gè)高保真的多機(jī)器人仿真環(huán)境十分復(fù)雜且耗時(shí),但正如本文所述,您可以使用 NVIDIA Isaac Sim 和 Nimbus 簡(jiǎn)化這一過程。
如要進(jìn)一步了解 Isaac Sim,請(qǐng)?jiān)L問 NVIDIA DeveloperIsaac ROS Forum (https://forums.developer.nvidia.com/c/agx-autonomous-machines/isaac/67)。
點(diǎn)擊“閱讀原文”,或掃描下方海報(bào)二維碼,觀看 NVIDIA 創(chuàng)始人兼 CEO 黃仁勛在 COMPUTEX 2023 的主題演講直播回放,主題演講中文字幕版已上線,了解 AI、圖形及其他領(lǐng)域的最新進(jìn)展!
原文標(biāo)題:使用 NVIDIA Isaac Sim、ROS 和 Nimbus 開發(fā)多機(jī)器人環(huán)境
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
英偉達(dá)
+關(guān)注
關(guān)注
22文章
3770瀏覽量
90989
原文標(biāo)題:使用 NVIDIA Isaac Sim、ROS 和 Nimbus 開發(fā)多機(jī)器人環(huán)境
文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論