• 您現在的位置是:首頁 >人工智能 > 2021-04-23 15:02:08 來源:

    用ROS教授機器人技術

    導讀 幾個月前,我采訪了Joel Esposito關于ROS開發者播客 21的機器人教育狀況。在播客上,Joel談到了他關于機器人如何在全世界傳授的研究。他確

    幾個月前,我采訪了Joel Esposito關于ROS開發者播客#21的機器人教育狀況。在播客上,Joel談到了他關于機器人如何在全世界傳授的研究。他確定了一套常見的機器人學科,需要對其進行解釋,以使學生了解機器人技術,以及人們用來教授機器人的資源清單。但最重要的是,他指出了學習機器人的重要性。

    從我的角度來看,機器人技術是關于做,而不是閱讀。機器人類無法學習如何計算矩陣的雅可比矩陣以找到逆運動學。計算雅可比行星與機器人無關,它只是我們用來解決機器人問題的數學工具。這就是為什么機器人類不應該專注于如何計算雅可比行列式,而應該關注如何將末端執行器移動到給定位置。

    我想將這個機器人手臂的末端執行器移動到那一點,我該怎么做?

    那么,你需要在矩陣中表示手臂的當前配置!

    啊,好的,我該怎么做?

    您需要使用矩陣來編碼其當前狀態。我們開始做吧。采用該模擬機器人手臂并創建一個訂閱/ joint_states并捕獲關節值的ROS節點。從這些值中,創建一個存儲它的矩陣。它必須能夠在任何時間步驟修改矩陣,所以如果我移動手臂,矩陣必須改變。

    [...]

    完成!那么如果我想將機器人手柄移到靠近這個瓶子的地方,我該怎么辦呢?

    你需要計算雅可比行列式。我們開始做吧!創建一個程序,手動為末端執行器引入所需的位置。然后根據該數據計算雅可比行列式。

    我如何計算雅可比行列式?

    我愛你,你問我!

    ...

    我知道學習和學習理論是機器人技術的重要組成部分,但不是最大的。最大的應該是練習和做機器人。為此,我建議使用ROS作為基礎系統,啟動器,允許 在學習機器人時進行實際操作(存在嗎?!?!)。

    提案

    像反向運動學或機器人導航這樣復雜的教學科目不應該(只是)理論上的問題。實踐應該嵌入到那些復雜的機器人學科的教學中。

    我建議在教授機器人技術的同時教ROS,并在整個機器人學期中使用前者作為構建和實現我們正在教授的機器人學科的工具。我們的想法是,我們使用ROS來讓學生真正實踐他們正在學習的東西。例如,如果我們討論避障的不同算法,我們還提供了一個模擬機器人,并讓學生創建一個實際上為該機器人實現算法的ROS程序。通過遵循這種方法,學生的學習不僅僅是理論上的,而是包括被告知的實踐。

    在此過程中使用ROS的優勢在于ROS已經提供了許多可以提供工作基礎設施的材料,您作為教師,可以專注于教學生如何創建特定主題所需的小部分正在教學。

    我們目前有很多工具,僅在5年前還沒有......讓我們利用它們來提高學生的學習質量和數量!我們不使用Powerpoint幻燈片,而是使用交互式Python筆記本。我們不是為整個班級使用單個機器人,而是為每個學生提供機器人模擬。我們不是在屏幕上提供方程式,而是讓學生在ROS節點中實現它,以便他們進行修改。

    學生用ROS學習機器人技術

    學生用ROS學習機器人技術

    不是一種新方法

    我講的是我練習的內容。這是我在巴塞羅那LaSalle大學的機器人導航課上使用的方法。在本課程中,我將介紹如何使機器人在避開障礙物的同時自動從空間中的一個點移動到另一個點的基礎知識。您知道,SLAM,粒子濾波器,動態窗口方法等。作為課程的一部分,學生必須學習ROS并使用它來實現我向他們解釋的一些理論概念,例如,如何根據編碼器提供的值計算$ odometry。

    但是,我并不是唯一一個使用這種方法來教授機器人的人。例如,康奈爾大學教授羅斯珀向我解釋上使用ROS教機器人的基礎的ROS開發者播客#23,他是如何教ROS和并聯機器人。他甚至更進一步,禁止學生使用ROS導航堆棧或MoveIt等許多ROS軟件!他的觀點非常好:他希望學生真正學會如何去做,而不僅僅是如何使用別人做過的東西(比如導航堆棧)。但無論如何他都使用ROS基礎設施。

    如何用ROS教授機器人技術

    該方法將涉及以下步驟:

    首先是一個ROS類,它解釋了ROS的最基本主題,以及開始工作所需的內容

    然后,您開始解釋您選擇的機器人主題,讓學生使用機器人實現您在ROS程序中教授的內容。我建議使用模擬機器人。

    每當需要新的ROS概念來繼續實施某些算法時,就會執行專用于該主題的類。

    繼續下一個機器人學科

    添加一個真實的機器人項目,學生必須將他們學到的所有知識應用到一個基于ROS的真實機器人的單個項目中

    添加考試

    1.解釋基本的ROS概念

    對于此步驟,您應該描述允許學生創建ROS程序的ROS的基本主題。這些科目包括以下內容:

    ROS套餐

    啟動ROS節點

    基本的ROS線命令

    ROS主題訂閱者

    ROS主題發布者

    Rviz用于可視化和調試

    沒有必要為這些科目投入太多時間,只需要他們了解ROS的必要時間。通過沿著學期的不同課程練習,將學習對ROS的更深入的了解和理解。當他們試圖創建用于實現理論概念的軟件時,他們將不得不實踐這些概念,并將它們深入到他們的大腦中。

    非常重要的是,通過使用模擬機器人并使學生將概念應用于模擬機器人來解釋這些概念。例如,讓學生從主題中讀取,以獲得距離最近障礙物的距離。或者讓他們寫一個主題讓機器人四處移動。不要只解釋主題是什么,并在幻燈片上提供代碼。讓它們實際連接到數據生產者,即模擬機器人。

    我還建議您在此步驟中忘記了有關創建自定義消息或什么是服務或操作客戶端的教學。這對于這樣一個入門級課程來說太過分了,你不太可能在下一個機器人課程中需要它。

    2.解釋并實施機器人學科

    您現在可以繼續教授機器人學科。我的建議是將課程時間分成兩部分:

    第一部分將解釋機器人學科的理論

    第二部分實際實施該理論。創建一個實際執行您解釋的程序。

    可能會發生這樣的情況:為了實現理論部分,學生需要大量預先制作的代碼來支持您正在教授的特定點。這意味著你必須更加努力地為你的課程做好準備,并向學生提供所有支持代碼。好消息是,通過使用ROS,您很可能會發現某些代碼已經完成。因此,找到或開發該代碼,并將其作為ROS包提供給您的學生。有關在何處查找代碼以及如何向學生提供代碼的更多信息,請參閱下文。

    這里包含一個有趣的觀點是Knepper教授所說的:他創造了一些故意錯誤的練習,因此學生學會識別系統沒有正確執行的情況,更重要的是,要創造必要的技能來弄清楚如何解決那些錯誤。考慮到這一點。

    3.添加新的ROS概念

    在某些時候,您可能需要為您正在教授的機器人主題創建自定義ROS消息。或者您可能需要使用ROS服務,因為您需要提供面部識別服務。無論你需要解釋什么ROS,現在是最好的時刻。用這種必要性來解釋這個概念。我的意思是當學生不知道這可以用于什么時,解釋像ROS動作服務器這樣的概念是一個壞主意。解釋新ROS概念的最佳時刻是每個人都清楚需要這個概念。

    我發現自己在學生不需要它時解釋像ROS服務這樣的復雜概念,這使得他們很難理解,即使你提供了很好的使用例子。他們無法感受到在他們的課程中不使用這些概念的痛苦。只有當他們處于實際需要這個概念的情況時,他們才會感受到痛苦,知識才會融入他們的腦海。

    4.繼續下一個機器人主題

    繼續這樣推。轉到下一個主題。提供不同的機器人模擬。要求學生實施這一概念。繼續這樣,直到你完成整個課程。

    5.真正的機器人項目

    使用模擬器進行測試很好,因為它提供了真實的生活體驗。但是,真正的測試是當你使用真正的機器人時。通常,大學沒有針對每個學生的機器人預算,這就是為什么我們一直在推廣使用模擬。然而,一些真正的機器人體驗是必要的,大多數大學可以負擔得起全班的一些機器人。這就是機器人項目開始實施的關鍵所在。

    定義一個機器人項目,它包含了整個課程的所有知識。讓學生創建將在真實機器人上測試結果的小組。這種方法有許多優點:學生必須將所有課程總結到一個應用程序中。他們必須使它在真正的機器人中工作。此外,他們必須團隊合作。

  • 成人app