天天看點

Webots串級機械臂模組化仿真過程-詳細!

此篇部落格轉自本作者在古月居的部落格:https://www.guyuehome.com/24692

前言: 非常高興能作為古月居的簽約作者,以後将推出更有價值的文章,以供參考。   由于最近要參與一個等效為機械臂的項目,肯定需要做仿真,在加上好友青雲同樣想要學習機器人仿真軟體,特此推出這個簡單的教程,基于的環境是Webots-2020a。另外,在很早之前,自己也推出了一個舵輪底盤的教程,但是相對于機械臂來說,結構稍顯簡單。這次為建構一個三自由度機械臂作為參考案例。最終效果圖如下  

Webots串級機械臂模組化仿真過程-詳細!

  首先,在webots中建立一個工程,點選上方Wizards,建立工程為mii_hand。  

Webots串級機械臂模組化仿真過程-詳細!

  然後,在建立環境,為hand.wbt, 一路确認。  

Webots串級機械臂模組化仿真過程-詳細!

  然後,在左邊清單欄,滑鼠右擊,Add new,展開Base nodes, 添加一個Robot節點。  

Webots串級機械臂模組化仿真過程-詳細!

  添加後,左側展開Robot節點,找到children,children很重要,後面不同元件的關系都是依據在children 下并行連接配接還是串行連接配接。這裡我們需要給這個機器人添加一個主體形狀,右擊children, 點選Add New,找到Base node添加一個Shape, 需要配置他的幾何形狀(需要右擊geometry, 然後Add New,在Base node下面)和外觀(需要右擊material, 然後Add New,在Base node下面),具體的配置如下,這是一個黃色的圓柱體。  

Webots串級機械臂模組化仿真過程-詳細!

  有了具體形狀,那麼我們肯定還需要配置他的實體效果。首先需要為它添加碰撞邊界,首先需要重新命名所建立的Shape, 點選Shape後在下方找到DEF,修改為BODY。然後在Robot節點下面找到boundingObject,右擊添加,找到USE,具體如圖所示,可以找到BODY(Shape)。然後,找到physics Physics,直接添加實體屬性。這裡如果不做修改,預設品質按 體積*密度。關鍵點如下圖。  

Webots串級機械臂模組化仿真過程-詳細!
Webots串級機械臂模組化仿真過程-詳細!

  完成上述後,最後一覽效果如下。此時,運作仿真,圓柱體就會立在地面上。  

Webots串級機械臂模組化仿真過程-詳細!

  接下來添加機器人關節,需要為機器人添加鉸鍊(HineJoint),在BODY shape 下面,右擊添加Base node 下面中的 HingeJoint。  

Webots串級機械臂模組化仿真過程-詳細!

  首先為鉸鍊添加一個實體(Solid),先展開HingeJoint,同樣上面的操作,添加Solid。  

Webots串級機械臂模組化仿真過程-詳細!

  同樣之前的操作,添加形狀為 Cyliner,然後配置他的大小,顔色等。  

Webots串級機械臂模組化仿真過程-詳細!
Webots串級機械臂模組化仿真過程-詳細!

  配置大小,位姿,形狀如下橙黃色圓柱體所示  

Webots串級機械臂模組化仿真過程-詳細!

  接下來配置電機實體的碰撞編輯和實體效果,與之前的BODY操作一緻。  

Webots串級機械臂模組化仿真過程-詳細!
Webots串級機械臂模組化仿真過程-詳細!

  接下來配置,鉸鍊的位置資訊,如下。其中,主要是axis 和 anchor ,分别的表述意思為軸朝向和軸坐标位置,仔細觀察前面的實體左邊,你會發現和圓柱實體中心重合,這符合旋轉電機特點。

Webots串級機械臂模組化仿真過程-詳細!

  接下來為鉸鍊添加裝置,這裡添加電機,當然還可以添加位置傳感器,一般的電機API中可以傳回位置資訊,是以可以選擇不用在添加。  

Webots串級機械臂模組化仿真過程-詳細!

  接下來配置電機具體參數,其中有很多屬性,這裡隻配置最大速度和最大扭矩,其他保持預設,該假設電機為理想的模型。  

Webots串級機械臂模組化仿真過程-詳細!

  此時點選上方運作,可以發現鉸鍊關節随主體一起運動(我這裡對機器人添加幹擾力,使其翻倒)。  

Webots串級機械臂模組化仿真過程-詳細!

  接下來,需要給鉸鍊添加延伸的肢體,相似的,在鉸鍊關節下Solid的children下添加Solid,此時肢體的父坐标系就是電機的Solid。  

Webots串級機械臂模組化仿真過程-詳細!

  由于,第一個肢體是一個L形的形狀,需要兩個長方體Shape拼接而成,此處,需要用到Group和Transform,前者可以了解為将多個Shape組合為一個對象,後者則是對對象的一個位移和旋轉變換。   同樣的流程,在肢體Solid下面添加Group  

Webots串級機械臂模組化仿真過程-詳細!

  然後添加 Transform  

Webots串級機械臂模組化仿真過程-詳細!

  在 Transform 下添加 Shape,配置形狀,大小,及紋理參數。  

Webots串級機械臂模組化仿真過程-詳細!

  同樣的操作,配置第二個肢體第二部分  

Webots串級機械臂模組化仿真過程-詳細!

  此時,需要配置肢體的碰撞邊界時,隻需要重新定義Group就可以,然後添加實體效果,具體配置如下圖  

Webots串級機械臂模組化仿真過程-詳細!

  然後,則需要配置下一個關節單元。在上面配置的肢體下面的children下面添加HingJoint,與上面同樣的流程,電機屬性一緻,不相同的參數部分有以下所示,  

Webots串級機械臂模組化仿真過程-詳細!
Webots串級機械臂模組化仿真過程-詳細!

  那麼,同理,如果要進行下一段肢體的配置,則在 Motor2 下的Solid 下的children下,添加肢體的Solid即可。具體配置與上述同理,具體參數如下  

Webots串級機械臂模組化仿真過程-詳細!

  然後,就可以配置第三個電機單元和下一段肢體。配置流程,同上述的過程,配置的效果如下  

Webots串級機械臂模組化仿真過程-詳細!

  然後,運作仿真(我這裡對機器人添加幹擾力,使其翻倒),可以看到  

Webots串級機械臂模組化仿真過程-詳細!

  初步總結:   配置的核心思想就是,一個實體或者元件,在父節點的children下就意味着,該實體或者元件坐标系從屬父節點的坐标系。對于串級的機械臂,配置可以是K級坐标系在上K-1級坐标系下,這是一種比較容易了解的方法。當然,不隻有這一種配置方法。   接下來,建立一個簡單的控制器(python),驅動電機單元。點選上面的Wizards,點選New Robot Controller,一路next,  

Webots串級機械臂模組化仿真過程-詳細!
Webots串級機械臂模組化仿真過程-詳細!
Webots串級機械臂模組化仿真過程-詳細!

  我是使用 VSCode打開可以看到,  

Webots串級機械臂模組化仿真過程-詳細!

  這一步很關鍵,需要将Robot下面的控制器修改為我們建立的控制器,展開Robot,找到controller,具體如下,  

Webots串級機械臂模組化仿真過程-詳細!

  緊接着,編寫控制器内容。這裡我們簡單調用那三個電機,跑到一個固定位置下。  

Webots串級機械臂模組化仿真過程-詳細!

  最終運作的效果如下所示,可以見到機器人把手舉了起來。  

Webots串級機械臂模組化仿真過程-詳細!

  總結: Webots建構機器人簡易模型是非常容易的,模組化方法不隻有這一種。這個過程在給與一個簡單的例子,友善大家了解。如果熟悉了整個流程,那麼就可以很容易去構架其他的串級關節的機器人,比如建構一個四足機器人。  

Webots串級機械臂模組化仿真過程-詳細!

  最後,如果有什麼疑問,歡迎大家留言。