您現(xiàn)在的位置是:首頁 >人工智能 > 2021-04-23 15:02:08 來源:
用ROS教授機(jī)器人技術(shù)
幾個(gè)月前,我采訪了Joel Esposito關(guān)于ROS開發(fā)者播客#21的機(jī)器人教育狀況。在播客上,Joel談到了他關(guān)于機(jī)器人如何在全世界傳授的研究。他確定了一套常見的機(jī)器人學(xué)科,需要對其進(jìn)行解釋,以使學(xué)生了解機(jī)器人技術(shù),以及人們用來教授機(jī)器人的資源清單。但最重要的是,他指出了學(xué)習(xí)機(jī)器人的重要性。
從我的角度來看,機(jī)器人技術(shù)是關(guān)于做,而不是閱讀。機(jī)器人類無法學(xué)習(xí)如何計(jì)算矩陣的雅可比矩陣以找到逆運(yùn)動(dòng)學(xué)。計(jì)算雅可比行星與機(jī)器人無關(guān),它只是我們用來解決機(jī)器人問題的數(shù)學(xué)工具。這就是為什么機(jī)器人類不應(yīng)該專注于如何計(jì)算雅可比行列式,而應(yīng)該關(guān)注如何將末端執(zhí)行器移動(dòng)到給定位置。
我想將這個(gè)機(jī)器人手臂的末端執(zhí)行器移動(dòng)到那一點(diǎn),我該怎么做?
那么,你需要在矩陣中表示手臂的當(dāng)前配置!
啊,好的,我該怎么做?
您需要使用矩陣來編碼其當(dāng)前狀態(tài)。我們開始做吧。采用該模擬機(jī)器人手臂并創(chuàng)建一個(gè)訂閱/ joint_states并捕獲關(guān)節(jié)值的ROS節(jié)點(diǎn)。從這些值中,創(chuàng)建一個(gè)存儲(chǔ)它的矩陣。它必須能夠在任何時(shí)間步驟修改矩陣,所以如果我移動(dòng)手臂,矩陣必須改變。
[...]
完成!那么如果我想將機(jī)器人手柄移到靠近這個(gè)瓶子的地方,我該怎么辦呢?
你需要計(jì)算雅可比行列式。我們開始做吧!創(chuàng)建一個(gè)程序,手動(dòng)為末端執(zhí)行器引入所需的位置。然后根據(jù)該數(shù)據(jù)計(jì)算雅可比行列式。
我如何計(jì)算雅可比行列式?
我愛你,你問我!
...
我知道學(xué)習(xí)和學(xué)習(xí)理論是機(jī)器人技術(shù)的重要組成部分,但不是最大的。最大的應(yīng)該是練習(xí)和做機(jī)器人。為此,我建議使用ROS作為基礎(chǔ)系統(tǒng),啟動(dòng)器,允許 在學(xué)習(xí)機(jī)器人時(shí)進(jìn)行實(shí)際操作(存在嗎?!?!)。
提案
像反向運(yùn)動(dòng)學(xué)或機(jī)器人導(dǎo)航這樣復(fù)雜的教學(xué)科目不應(yīng)該(只是)理論上的問題。實(shí)踐應(yīng)該嵌入到那些復(fù)雜的機(jī)器人學(xué)科的教學(xué)中。
我建議在教授機(jī)器人技術(shù)的同時(shí)教ROS,并在整個(gè)機(jī)器人學(xué)期中使用前者作為構(gòu)建和實(shí)現(xiàn)我們正在教授的機(jī)器人學(xué)科的工具。我們的想法是,我們使用ROS來讓學(xué)生真正實(shí)踐他們正在學(xué)習(xí)的東西。例如,如果我們討論避障的不同算法,我們還提供了一個(gè)模擬機(jī)器人,并讓學(xué)生創(chuàng)建一個(gè)實(shí)際上為該機(jī)器人實(shí)現(xiàn)算法的ROS程序。通過遵循這種方法,學(xué)生的學(xué)習(xí)不僅僅是理論上的,而是包括被告知的實(shí)踐。
在此過程中使用ROS的優(yōu)勢在于ROS已經(jīng)提供了許多可以提供工作基礎(chǔ)設(shè)施的材料,您作為教師,可以專注于教學(xué)生如何創(chuàng)建特定主題所需的小部分正在教學(xué)。
我們目前有很多工具,僅在5年前還沒有......讓我們利用它們來提高學(xué)生的學(xué)習(xí)質(zhì)量和數(shù)量!我們不使用Powerpoint幻燈片,而是使用交互式Python筆記本。我們不是為整個(gè)班級(jí)使用單個(gè)機(jī)器人,而是為每個(gè)學(xué)生提供機(jī)器人模擬。我們不是在屏幕上提供方程式,而是讓學(xué)生在ROS節(jié)點(diǎn)中實(shí)現(xiàn)它,以便他們進(jìn)行修改。
學(xué)生用ROS學(xué)習(xí)機(jī)器人技術(shù)
學(xué)生用ROS學(xué)習(xí)機(jī)器人技術(shù)
不是一種新方法
我講的是我練習(xí)的內(nèi)容。這是我在巴塞羅那LaSalle大學(xué)的機(jī)器人導(dǎo)航課上使用的方法。在本課程中,我將介紹如何使機(jī)器人在避開障礙物的同時(shí)自動(dòng)從空間中的一個(gè)點(diǎn)移動(dòng)到另一個(gè)點(diǎn)的基礎(chǔ)知識(shí)。您知道,SLAM,粒子濾波器,動(dòng)態(tài)窗口方法等。作為課程的一部分,學(xué)生必須學(xué)習(xí)ROS并使用它來實(shí)現(xiàn)我向他們解釋的一些理論概念,例如,如何根據(jù)編碼器提供的值計(jì)算$ odometry。
但是,我并不是唯一一個(gè)使用這種方法來教授機(jī)器人的人。例如,康奈爾大學(xué)教授羅斯珀向我解釋上使用ROS教機(jī)器人的基礎(chǔ)的ROS開發(fā)者播客#23,他是如何教ROS和并聯(lián)機(jī)器人。他甚至更進(jìn)一步,禁止學(xué)生使用ROS導(dǎo)航堆?;騇oveIt等許多ROS軟件!他的觀點(diǎn)非常好:他希望學(xué)生真正學(xué)會(huì)如何去做,而不僅僅是如何使用別人做過的東西(比如導(dǎo)航堆棧)。但無論如何他都使用ROS基礎(chǔ)設(shè)施。
如何用ROS教授機(jī)器人技術(shù)
該方法將涉及以下步驟:
首先是一個(gè)ROS類,它解釋了ROS的最基本主題,以及開始工作所需的內(nèi)容
然后,您開始解釋您選擇的機(jī)器人主題,讓學(xué)生使用機(jī)器人實(shí)現(xiàn)您在ROS程序中教授的內(nèi)容。我建議使用模擬機(jī)器人。
每當(dāng)需要新的ROS概念來繼續(xù)實(shí)施某些算法時(shí),就會(huì)執(zhí)行專用于該主題的類。
繼續(xù)下一個(gè)機(jī)器人學(xué)科
添加一個(gè)真實(shí)的機(jī)器人項(xiàng)目,學(xué)生必須將他們學(xué)到的所有知識(shí)應(yīng)用到一個(gè)基于ROS的真實(shí)機(jī)器人的單個(gè)項(xiàng)目中
添加考試
1.解釋基本的ROS概念
對于此步驟,您應(yīng)該描述允許學(xué)生創(chuàng)建ROS程序的ROS的基本主題。這些科目包括以下內(nèi)容:
ROS套餐
啟動(dòng)ROS節(jié)點(diǎn)
基本的ROS線命令
ROS主題訂閱者
ROS主題發(fā)布者
Rviz用于可視化和調(diào)試
沒有必要為這些科目投入太多時(shí)間,只需要他們了解ROS的必要時(shí)間。通過沿著學(xué)期的不同課程練習(xí),將學(xué)習(xí)對ROS的更深入的了解和理解。當(dāng)他們試圖創(chuàng)建用于實(shí)現(xiàn)理論概念的軟件時(shí),他們將不得不實(shí)踐這些概念,并將它們深入到他們的大腦中。
非常重要的是,通過使用模擬機(jī)器人并使學(xué)生將概念應(yīng)用于模擬機(jī)器人來解釋這些概念。例如,讓學(xué)生從主題中讀取,以獲得距離最近障礙物的距離?;蛘咦屗麄儗懸粋€(gè)主題讓機(jī)器人四處移動(dòng)。不要只解釋主題是什么,并在幻燈片上提供代碼。讓它們實(shí)際連接到數(shù)據(jù)生產(chǎn)者,即模擬機(jī)器人。
我還建議您在此步驟中忘記了有關(guān)創(chuàng)建自定義消息或什么是服務(wù)或操作客戶端的教學(xué)。這對于這樣一個(gè)入門級(jí)課程來說太過分了,你不太可能在下一個(gè)機(jī)器人課程中需要它。
2.解釋并實(shí)施機(jī)器人學(xué)科
您現(xiàn)在可以繼續(xù)教授機(jī)器人學(xué)科。我的建議是將課程時(shí)間分成兩部分:
第一部分將解釋機(jī)器人學(xué)科的理論
第二部分實(shí)際實(shí)施該理論。創(chuàng)建一個(gè)實(shí)際執(zhí)行您解釋的程序。
可能會(huì)發(fā)生這樣的情況:為了實(shí)現(xiàn)理論部分,學(xué)生需要大量預(yù)先制作的代碼來支持您正在教授的特定點(diǎn)。這意味著你必須更加努力地為你的課程做好準(zhǔn)備,并向?qū)W生提供所有支持代碼。好消息是,通過使用ROS,您很可能會(huì)發(fā)現(xiàn)某些代碼已經(jīng)完成。因此,找到或開發(fā)該代碼,并將其作為ROS包提供給您的學(xué)生。有關(guān)在何處查找代碼以及如何向?qū)W生提供代碼的更多信息,請參閱下文。
這里包含一個(gè)有趣的觀點(diǎn)是Knepper教授所說的:他創(chuàng)造了一些故意錯(cuò)誤的練習(xí),因此學(xué)生學(xué)會(huì)識(shí)別系統(tǒng)沒有正確執(zhí)行的情況,更重要的是,要?jiǎng)?chuàng)造必要的技能來弄清楚如何解決那些錯(cuò)誤。考慮到這一點(diǎn)。
3.添加新的ROS概念
在某些時(shí)候,您可能需要為您正在教授的機(jī)器人主題創(chuàng)建自定義ROS消息。或者您可能需要使用ROS服務(wù),因?yàn)槟枰峁┟娌孔R(shí)別服務(wù)。無論你需要解釋什么ROS,現(xiàn)在是最好的時(shí)刻。用這種必要性來解釋這個(gè)概念。我的意思是當(dāng)學(xué)生不知道這可以用于什么時(shí),解釋像ROS動(dòng)作服務(wù)器這樣的概念是一個(gè)壞主意。解釋新ROS概念的最佳時(shí)刻是每個(gè)人都清楚需要這個(gè)概念。
我發(fā)現(xiàn)自己在學(xué)生不需要它時(shí)解釋像ROS服務(wù)這樣的復(fù)雜概念,這使得他們很難理解,即使你提供了很好的使用例子。他們無法感受到在他們的課程中不使用這些概念的痛苦。只有當(dāng)他們處于實(shí)際需要這個(gè)概念的情況時(shí),他們才會(huì)感受到痛苦,知識(shí)才會(huì)融入他們的腦海。
4.繼續(xù)下一個(gè)機(jī)器人主題
繼續(xù)這樣推。轉(zhuǎn)到下一個(gè)主題。提供不同的機(jī)器人模擬。要求學(xué)生實(shí)施這一概念。繼續(xù)這樣,直到你完成整個(gè)課程。
5.真正的機(jī)器人項(xiàng)目
使用模擬器進(jìn)行測試很好,因?yàn)樗峁┝苏鎸?shí)的生活體驗(yàn)。但是,真正的測試是當(dāng)你使用真正的機(jī)器人時(shí)。通常,大學(xué)沒有針對每個(gè)學(xué)生的機(jī)器人預(yù)算,這就是為什么我們一直在推廣使用模擬。然而,一些真正的機(jī)器人體驗(yàn)是必要的,大多數(shù)大學(xué)可以負(fù)擔(dān)得起全班的一些機(jī)器人。這就是機(jī)器人項(xiàng)目開始實(shí)施的關(guān)鍵所在。
定義一個(gè)機(jī)器人項(xiàng)目,它包含了整個(gè)課程的所有知識(shí)。讓學(xué)生創(chuàng)建將在真實(shí)機(jī)器人上測試結(jié)果的小組。這種方法有許多優(yōu)點(diǎn):學(xué)生必須將所有課程總結(jié)到一個(gè)應(yīng)用程序中。他們必須使它在真正的機(jī)器人中工作。此外,他們必須團(tuán)隊(duì)合作。