標籤:

[連載 4]Vrep導入三維模型——PUMA560機械臂

  • [連載 0]Vrep入門介紹
  • [連載 1]Vrep小車建模——前進和轉向
  • [連載 2]Vrep小車建模——內嵌腳本
  • [連載 3]Vrep小車建模——matlab控制
  • [連載 4]Vrep導入三維模型——PUMA560機械臂
  • [番外1]Vrep小車機械臂抓取
  • 知乎專欄:Vrep機器人動力學建模模擬

    恭喜大家完成[連載0]——[連載3]的基礎教程,通過教程的學習相信大家已經可以控制小車的運動了吧^_^,現在就讓我進入另一個有意思的領域——機械臂。放在最前面和大家提一個醒,不要覺得自己不是搞機械臂的,你就不去研究機械臂,實際上機械臂的很多演算法都是非常標準基礎的。比如你要研究人形機器人,每條胳膊和腿就可以看成一條機械臂。

    本節主要介紹如何將三維模型,導入到vrep中,vrep自帶常式中這部分講的實在是太爛,條理不清楚,我這裡拋磚引玉,用動畫和截圖的方式將過程記錄下來,並總結一些我使用的經驗,希望能讓大家快速入門。

前言

vrep是一個很好的工具,大家如果開始使用之後更能體會的到,但是由於宣傳少、用戶少,我現在所知道的國內也就十幾所大學有用到的,而且大部分是研究生。依稀記得本科用adams非常痛苦,MSC公司的軟體設計不僅其丑無比,而且正版費用特別高,所以才做此教程,為vrep的推廣盡自己的一點貢獻。但是僅靠我自己無疑是杯水車薪,還是需要大家努力,因此我這裡做一個優惠方案作為鼓勵:

在校園論壇發帖(字數超過50吧,介紹vrep的用途+配圖),樓數超過10層送[連載 1]Vrep小車建模——前進和轉向,超過50層送 [番外1]Vrep小車機械臂抓取的常式!

大家直接聯繫淘寶店鋪的客服就可以了,發截圖就可以了,大家不要刷樓啊,拜託了,不誠信的買家我可能會拒絕給你解答技術問題的!

回頭我會單開一個文章,感興趣可以點擊這個活動頁面鏈接。希望大家動動手指,多多支持哈~

本節介紹

在推出連載1之後,很多同學問我貼紙是怎麼製作的,本節就介紹如何將三維模型導入到vrep中,並進行不同的處理。這個示例採用PUMA560的模型,PUMA560機械臂是多本機器人書籍中介紹的一種機械臂,資料也非常多。

  • 本節先介紹如何將三維模型導入到vrep中並建立實際模擬模型;
  • 下一節介紹PUMA560得DH矩陣描述,控制機械臂實現一定功能;
  • 再下一節介紹如何利用Matlab Robotic Toolbox,來控制機械臂

本節的安排如下:

  1. 導入前準備工作
  2. 導入模型並簡單處理
  3. 提取關鍵特徵,添加運動關節
  4. 提取實體特徵

完整的常式模型請點擊購買

step1 準備工作

首先要在建模軟體中建立機械臂模型,我這裡用的是soildworks,建模完的效果如下圖:

圖1 PUMA560機械臂模型

請注意,下面的經驗很重要!!!我就不全部加粗了!!

  1. 導入過程是一個體力活,前期的一點問題可能會導致後面非常麻煩!!!

    首先,上圖的建模結果是「不可以」直接導入到vrep。因為在導入過程中,vrep會保留原來的坐標系關係,也就是說導入到vrep中就是和圖1中的樣子一樣的,具體可以看圖2,從圖2中可以看出各個臂處於比較隨意的狀態,這對於vrep這種軟體後期調整起來非常麻煩,因此我們要提前調整好機械臂的位置,使其處於一個便於調整的位置,見圖3。

圖2 調整前的機械臂 soildworks視圖(左) vrep視圖(右)

圖3 調整後的機械臂 soildworks視圖(左) vrep視圖(右)

至於怎麼調整,一般團隊里都有搞機械的小夥伴,和他們說一下要求就可以了,把該對齊的面對齊就可以了。

  1. 現在已經準備好了要導入的模型(本節常式模型請點擊購買),那麼需要轉成什麼格式呢?vrep支持好幾種三維格式的導入,但是就我自己的使用體驗來說,轉成STL格式最方便,而且大部分的建模軟體可以很容易轉成stl格式,本文也是基於stl格式進行講解。

    不同的軟體導出的stl格式也是需要注意的,以soildworks為例,選擇文件-另存為-保存類型(stl),在選項里選擇精細選項。如果你是新手並且模型的規模較小的話,建議選擇精細模式,否則你需要根據需求選擇精細程度。

圖4 導出stl過程

導出stl格式之後,會在文件夾中生成文件,這裡需要注意的是有的軟體導出後是一個stl文件(將裝配體整體導出),soildworks導出的一堆stl文件(每個零件單獨一個文件)。如果是一個文件的話,後面會增加一步,不要緊的。

好,到這裡導入工作已經完成了,接下來我們將stl文件導入到vrep中。

Step2 導入模型並簡單處理

點擊菜單欄中的file - Import - Mesh..,具體見圖5,找到剛才導出的stl文件,快捷鍵Ctrl + a選擇所有的stl文件,然後點擊確定。此時會彈出一個對話框,由於建模軟體的坐標系和vrep的不一樣,這裡選擇Y軸朝上,點擊OK完成導入,導入的結果見圖7。

圖5 導入stl文件

圖6 導入後的對話框

圖7 PUMA650導入後結果

從模型樹上可以看到,導入的模型按照不同的零件已經分開,如果你的建模軟體導入的是一個整體的話,需要增加一步操作,具體見圖8。

圖8 將一個整體分解成多個零件

vrep導入過程會隨機的改變顏色,所以你導入進來的樣子可能和我的不一樣。

完成導入後需要整理一下零件,將一些零件進行命名,同時將不需要的一些零件刪掉。我們發現導入12個零件,先瀏覽一遍導入的零件(見圖9),發現底座上安裝了六個螺栓(見圖10),對於模擬是沒有用處的,因此刪掉。

圖9 瀏覽一遍導入的零件

圖10 對模擬無用的螺栓

現在將剩下的零件進行重命名,便於識別。我們用puma560_link0_vision作為起始,依次命名,命名結果如圖11.(對應中間文件名稱為:vrep4_puam560_step2_1.ttt)

圖11 將零件重命名

Step3 提取關鍵特徵,添加運動關節

上面的任務都比較簡單,接下來將是一大堆體力活,我們要從導入模型中提取出圓柱體從而確定迴轉關節位置。

實際上stl文件導入進來的是一堆三角形組合,見圖12,可見我們需要從這些三角形中提取出圓柱體,然後利用圓柱體去定位關節位置。主要原因是導入後的模型由於形狀特殊,其自身坐標系有可能發生不同程度的旋轉,因此最好的辦法是從中間提取出vrep常用的primitive shape,即可用於後面的動力學模擬,也可以比較好的約束後續的坐標位置。

注意:由於vrep不同電腦下導入結果的會有細微差異,影響後面的具體操作,因此建議直接用vrep4_puam560_step3_1.ttt這個文件作為起始文件,大家後面的操作從這個文件開始。

圖12 stl導入後為三角形組合

這裡講一個我自己的方法,我一般是比較喜歡將要調整的模型拷貝到一個備用的scene,這樣所有操作都在這個備用的scene中,避免改壞東西。因此我們先新建一個scene,命名為puma560_backup,將puma560_link1_vision拷貝到這個新文件中,我們要從上面提取出兩個圓柱體,從而找到機械臂的前兩個迴轉軸。

選擇puma560_link1_vision,點擊工具欄左邊的按鈕(見圖13),打開實體編輯界面。

圖13 實體操作按鈕

圖13 實體操作動圖

實體編輯界面具有三種操作:

  1. 三角形編輯模式(Triangle edit mode):這個模式下三角形是可見的,可以用來操作三角形從而提取出你需要的形狀,常見的形狀有長方體、圓柱體和球體。
  2. 頂點編輯模式(Vertex edit mode):這個模式下可以編輯頂點,用來調整模型的形狀,還可以通過頂點生成dummy便於後續使用。
  3. 邊編輯模式(Edge edit mode):這個模式下用來編輯邊,可以從這裡提取出邊緣的形狀。

3.1 提取joint1和joint2

我們這裡主要使用第一種三角形編輯模式,現在提取第一個圓柱體,我們這裡直接選擇這個關節的底面,選擇這個面上所有的三角形,對用滑鼠挨個選擇。選擇有兩種方式,第一種是直接在窗口中選擇三角形,選擇之後會改變顏色,也可以在左邊的瀏覽窗口選擇。我們先選擇編號從251至298的三角形。(摁住Ctrl鍵,滑鼠挨個單擊,貌似沒有其他的快捷方式,所以說是體力活……)點擊提取圓柱體(Extract cylinder),點擊確定,生成第一個圓柱體。由於這裡選擇的是一個底面,因此生成的圓柱體高度幾乎為零。根據圖15,退出形狀編輯模式。

圖14 選擇第一個底面

圖15 退出形狀編輯模式

此時在模型樹里可以看到多出一個Cylinder的實體,我們現在添加一個關節,將其位置與提取出來的圓柱體進行重合。按照圖16的指示(這裡分別提供了動圖和靜態圖,方便大家看)進行操作,確定好第一個關節的位置。

如果大家對上述操作不是很熟練的話,請看連載1中圖7的操作。

圖16 將關節與提取出圓柱體進行重合(動圖)

圖16 將關節與提取出圓柱體進行重合(靜態操作)

獲得了第一個關節的位置之後,將其重命名為puma560_joint1,將其拷貝回到原來的文件中,這樣第一個關節就完成了。

現在獲取第二個關節,依然是使用puma560_link1_vision,進入形狀編輯模式,選擇Triangle 203 ——Triangle 250,提取第二個圓柱體,利用上述同樣操作,得到第二個轉動關節puma560_joint2。也將其複製回到原來的文件中,此時文件中應該是圖17中的結果,(對應中間文件名稱為:vrep4_puam560_step3_1.ttt)

圖16 提取第二個圓柱體

圖17 整理好前兩個關節

3.2 提取其他關節

由於後續提取其他關節為重複工作,提取過程與提取joint1和joint2類似,因此直接放在寶貝鏈接的Step3提取關節.docx文檔中,大家自己打開看吧,就不佔用教程篇幅了。

提取其他關節說明

至此,已經完成全部的關節添加工作,也是本教程中最繁瑣的一項任務。

Step4 提取實體特徵

上面的工作基本完成了運動學的部分,接下來的內容主要用來完善動力學的部分。由於導入的stl文件是mesh屬性,實際上僅僅是一層薄殼,不具備動力學特徵(質量和轉動慣量,就是你點開始模擬,並不會自由落體),而且如果直接用導入模型的話由於細節太豐富,所以極大的影響模擬速度,一般都會將其簡化成vrep自帶的primitive shape或者是凸面結構(凹面結構物理引擎可能產生很詭異的現象)

在這裡,考慮到機械臂的特性,我們將模型提取出為凸面體(convex shape),因為機械臂工作狀態一般旁邊不會有障礙物,因此用凸面體來來檢測碰撞雖然佔用了更多體積,但是一般情況並不會影響結果。

Step4_1 提取凸面體結構

由於提取凸面體會直接替換原來的結構,因此我們將機械臂的puma560_link0_visionpuma560_link5_vision六個結構拷貝到一個新的scene中,先選擇puma560_link0_vision,執行下圖的操作(Edit->Morph selection into convex shapes),這樣就得到了第一個實體,對剩餘的其他組件執行同樣的操作。

提取凸面體結構

操作完成後,將各個部件重命名為puma560_link0puma560_link5,此時可以得到下圖:(對應文件名為vrep4_puam560_step4_1_backup.ttt

全部提取為凸面體結構

設置動力學屬性

此時電機開始模擬發現仍然沒有自由落體,因為還沒有設置動力學屬性。接下來我們設置凸面體的質量respondable的屬性。這裡從**``puma560_link1**開始,根據下圖設置動力學屬性,注意local respondable mask`是僅點第一個對勾。

設置link1的動力學屬性

根據同樣的方式設置link2——link5的動力學屬性,唯一差別為local respondable mask依次點第二個對勾、第三個對勾……例如第link5的屬性為:(對應文件為vrep4_puam560_step4_1_backup2.ttt

link5的動力學屬性

完成上述步驟之後,可以點擊模擬按鈕,應該會看到自由落體的情況。將這些凸面體拷貝回到原來的文件中,重新調整模型樹,按照如下的方式進行排列,確定依賴關係,如下圖:

整理好的模型樹

我們發現拷貝回來的凸面體很醜,直接影響我們觀看的心情,因此我們要將其隱藏起來,操作看下圖(注意選擇多個凸面體的時候按住Ctrl鍵

隱藏凸面體

此時點擊模擬,發現機械臂會立即垮掉,原因是因為添加的關鍵無法提供足夠的扭矩保持平衡,我們這裡打開關節的位置控制模式,如下圖:(注意要設置一下關節扭矩,默認2.5Nm太小了,這裡先設置為100Nm)

設置電機為位置控制模式

(對應最終文件名稱為:vrep4_puam560_step4_2.ttt)

結語

這篇從準備內容到最後形成文稿,花費了我差不多兩周左右的業餘時間,真是內容有點多,以至於後面Step4里我都沒有具體講,實在是抱歉。但是也是恭喜大家能看到結尾,應該看完這篇文章的對vrep應該是真愛吧,我留一個微信,大家可以加我,歡迎多多交流~~

有同學說載入不了二維碼,我直接放微信號大家搜索吧,微信號是monkey61_1,歡迎交流哈

u.wechat.com/MIXGPFx3pm (二維碼自動識別)


推薦閱讀:

誰幫忙答一下達人們學的機器人相關專業都有什麼?一般都學哪些專業課?的個人背景?
艾灸機器人
機器人可以統治世界?
機器人將淘汰所有人工,人類未來何去何從?
幾則設施建築領域機器人應用

TAG:機器人 |