熱門
ROS 2與Unity合作提升自主機(jī)器人性能
Unity在新版本中添加了ROS 2的官方支持,,其強(qiáng)大的框架,,加上模擬,將支持無數(shù)全新用例,。
機(jī)器人操作系統(tǒng)(ROS)是從2007年開始開發(fā)機(jī)器人應(yīng)用程序的流行框架,。盡管最初是為了加速機(jī)器人研究而設(shè)計(jì)的,但它很快在工業(yè)和商業(yè)機(jī)器人中被廣泛采用,。ROS 2建立在ROS可靠框架的基礎(chǔ)上,,同時改進(jìn)了對現(xiàn)代應(yīng)用程序的支持,如多機(jī)器人系統(tǒng),、實(shí)時系統(tǒng)和生產(chǎn)環(huán)境,。Unity目前已經(jīng)將其對ROS生態(tài)系統(tǒng)的官方支持?jǐn)U展到ROS 2。
?
現(xiàn)代機(jī)器人技術(shù)正在將其重點(diǎn)轉(zhuǎn)向“自主性”,,即研究和開發(fā)能夠在沒有人類開發(fā)者定義的嚴(yán)格規(guī)則的情況下做出決策的算法,,而模擬算法則是通過實(shí)現(xiàn)比現(xiàn)實(shí)世界測試更大的靈活性和更快的實(shí)驗(yàn)時間來實(shí)現(xiàn)這一轉(zhuǎn)變。在本篇文章中將演示如何模擬由Unity和ROS 2創(chuàng)建的自主移動機(jī)器人(AMR)的同時定位和映射(SLAM)以及導(dǎo)航功能,。
ROS 2為現(xiàn)代機(jī)器人技術(shù)提供動力
雖然ROS仍然是機(jī)器人原型開發(fā)的優(yōu)秀框架,,但它已經(jīng)接近生命周期的盡頭,并且缺少一些在機(jī)器人系統(tǒng)中實(shí)現(xiàn)超越原型,,全面生產(chǎn)和部署所必需的功能,。ROS 2的技術(shù)路線圖由行業(yè)專家委員會定義了明確的原則,以確保將ROS 2打造成為服務(wù)機(jī)器人最終用戶的合適框架,。ROS 2支持更多的操作系統(tǒng)和通信協(xié)議,,并且設(shè)計(jì)得比ROS分類更加精確。
自主模擬供電
ROS 2的許多新興用例都側(cè)重于自動化。引入自主性意味著機(jī)器人做出的決策以及這些決策的結(jié)果不完全可以僅使用狀態(tài)機(jī)和一組數(shù)學(xué)公式來進(jìn)行預(yù)測,,就像它們可能在許多工業(yè)機(jī)器人的案例中一樣,。與工業(yè)機(jī)器人相比,自主機(jī)器人的操作環(huán)境呈指數(shù)級增長,。它所遇到的輸入的排列遠(yuǎn)遠(yuǎn)超過了在受控的實(shí)驗(yàn)室環(huán)境中所能復(fù)制的水平,。為了完全驗(yàn)證自主機(jī)器人的行為符合制造商的預(yù)期,制造商們也可以在機(jī)器人上進(jìn)行編輯,。在以Unity創(chuàng)建的模擬世界中,,時間變得毫無意義,因此制造商們可以根據(jù)他們的需要對機(jī)器人進(jìn)行:適當(dāng)強(qiáng)度的模擬學(xué)習(xí),。
如果在模擬中期望機(jī)器人能夠感知周邊環(huán)境,,那么該模擬必須在不對環(huán)境模擬拓?fù)浜臀锢砭确矫孀龀鐾讌f(xié)的情況下實(shí)現(xiàn)對機(jī)器人身上的傳感器進(jìn)行精確建模才能實(shí)現(xiàn)。如果該環(huán)境中有其他干擾,,即人或其他機(jī)器人,,則模擬過程必須能夠?qū)崿F(xiàn)代理行為的建模,同時仍然保持其傳感器模擬,、拓?fù)?a class="insidelink" href="http://shcjtec.com/solution/DE/Display/" title="1">展示和物理建模的準(zhǔn)確性,。為了讓機(jī)器人在所有可能遇到的情況下都能充分得到鍛煉,這個模擬需要運(yùn)行很多很多次,。這就意味著,,要實(shí)現(xiàn)自主機(jī)器人模擬過程就需要工業(yè)機(jī)器人模擬不常用到的四個特點(diǎn):靈活性、可擴(kuò)展性,、可量測性和保真度,。而Unity正好位于所有這些需求的交叉點(diǎn),目前Unity平臺中已經(jīng)包含了更多的功能來更好的支持自主機(jī)器人的開發(fā),。
通過Unity的Robotics軟件包,,用戶將可以訪問已經(jīng)完成構(gòu)建的接口,使與ROS或ROS 2的通信變得更加容易,。用戶將能夠直接從Unity的URDF?Importer導(dǎo)入帶有機(jī)器人配置的URDF文件,,并使用Unity高質(zhì)量、高效的渲染管道和高性能,、高精確度的物理模擬來訓(xùn)練他們的機(jī)器人,。通過Unity的資產(chǎn)商店,用戶可以瀏覽各種額外的預(yù)制環(huán)境和道具,,以幫助他們?yōu)闄C(jī)器人的特定環(huán)境和任務(wù)建模,。只需點(diǎn)擊幾下鼠標(biāo),模擬就可以構(gòu)建并部署到任何主流操作系統(tǒng)上,,如Windows 10、Mac OS和Linux等。通過使用C#腳本,、Bolt可視化腳本或Unity資產(chǎn)庫中可用的許多腳本和實(shí)用工具包,,用戶可以繼續(xù)自定義特定模擬的功能,以適配特定的用例,。
一鍵式ROS 2支持
事實(shí)上將Unity項(xiàng)目移動到ROS 2很簡單,。在ROS-TCP-Connector包中,Unity添加了一個下拉菜單,,允許用戶在ROS和ROS 2集成之間切換,。更改協(xié)議后,Unity將根據(jù)用戶選擇的消息定義和序列化協(xié)議自動重新編譯包,。用戶只需在自己的項(xiàng)目中進(jìn)行這種更改,,或者選擇示例存儲庫中的Robotics-Nav2-SLAM,即可完成測試,。
?
上圖中的示例項(xiàng)目演示了如何使用Unity來模擬在ROS 2中運(yùn)行的導(dǎo)航系統(tǒng),。導(dǎo)航的概念很簡單,在自主機(jī)器人模擬的內(nèi)容中變化不大,。導(dǎo)航算法旨在找到一條直通下一步流程的道路,。然而,要從我在什么地方到我要去什么地方,,必須首先做SLAM——同時定位和制圖,。SLAM描述了一組算法,用來回答“我現(xiàn)在在哪里,,我去過哪里,?”作為感官和大腦之間處理管道的固有部分,人類一直在執(zhí)行SLAM,。對于自主機(jī)器人來說,,執(zhí)行精確的SLAM對于大多數(shù)現(xiàn)實(shí)環(huán)境來說仍然是一個具有挑戰(zhàn)性的命題。一個自主移動機(jī)器人到底需要什么,,才能讓它始終知道自己在哪里,,相對于它曾經(jīng)去過的任何地方,這仍然是一個活躍的研究領(lǐng)域,。對于給定的用例,,真正能夠回答這個問題的唯一方法就是進(jìn)行多次模擬試驗(yàn)(對于傳感器、算法等),。
在示例中,,我們會發(fā)現(xiàn)這是一個簡單的倉庫環(huán)境,一個帶有模擬雷達(dá)和電機(jī)控制器的Turtlebot 3移動機(jī)器人的完全鉸接模型,,以及一個用于構(gòu)建圖像的Dockerfile,,該圖像包含模擬練習(xí)Nav2和slam_toolbox堆棧所需的所有ROS 2依賴關(guān)系,。
?
左圖:在Unity中生成并發(fā)送的ROS 2消息的RViz顯示。右圖:TurtleBot 3在Unity中執(zhí)行SLAM和自主導(dǎo)航,。
電話:010-50951355 傳真:010-50951352 郵箱:[email protected] ,;點(diǎn)擊查看區(qū)域負(fù)責(zé)人電話
手機(jī):13811546370 / 13720091697 / 13720096040 / 13811548270 /
13811981522 / 18600440988 /13810279720 /13581546145