天天看點

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

  • [連載 0]Vrep入門介紹
  • [連載 1]Vrep小車模組化——前進和轉向
  • [連載 2]Vrep小車模組化——内嵌腳本
  • [連載 3]Vrep小車模組化——matlab控制
  • [連載 4]Vrep導入三維模型——PUMA560機械臂
  • [連載 5]Vrep--Matlab Robitic Toolbox--PUMA560機械臂控制
  • [番外 1]Vrep小車機械臂抓取
  • [Lib庫 1]CoppeliaSim差分避障小車的Simulink實作 (B站視訊講解)
  • [Lib庫 2]CoppeliaSim機械臂抓取的Simulink實作 (B站視訊講解)
  • 知乎專欄:Vrep機器人動力學模組化仿真

    恭喜大家完成[連載0]——[連載3]的基礎教程,通過教程的學習相信大家已經可以控制小車的運動了吧^_^,現在就讓我進入另一個有意思的領域——

    機械臂 。放在最前面和大家提一個醒, 不要覺得自己不是搞機械臂的,你就不去研究機械臂

    ,實際上機械臂的很多算法都是非常标準基礎的。比如你要研究人形機器人,每條胳膊和腿就可以看成一條機械臂。

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

前言

vrep是一個很好的工具,大家如果開始使用之後更能體會的到,但是由于宣傳少、使用者少,我現在所知道的國内也就十幾所大學有用到的,而且大部分是研究所學生。依稀記得大學用adams非常痛苦,MSC公司的軟體設計不僅其醜無比,而且正版費用特别高,是以才做此教程,為vrep的推廣盡自己的一點貢獻。

此教程是基于

vrep 3.5.0版本

制作的,初學可以先安裝此版本進行學習,後面再使用更新的版本。(舊版下載下傳連結:連結:https://pan.baidu.com/s/1PIl5t-Pwx2dawOIHfzDelA提取碼:qirx)

本節介紹

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

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

本節的安排如下:

  1. 導入前準備工作
  2. 導入模型并簡單處理
  3. 提取關鍵特征,添加運動關節
  4. 提取實體特征
完整的例程模型請點選

step1 準備工作

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

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖1 PUMA560機械臂模型

請注意,下面的經驗很重要!!!我就不全部加粗了!!
  1. 導入過程是一個體力活,前期的一點問題可能會導緻後面非常麻煩!!!

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

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

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

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

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

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

  1. 現在已經準備好了要導入的模型(本節例程模型請點選),那麼需要轉成什麼格式呢?vrep支援好幾種三維格式的導入,但是就我自己的使用體驗來說,轉成 STL

    格式最友善,而且大部分的模組化軟體可以很容易轉成stl格式,本文也是基于stl格式進行講解。

    不同的軟體導出的stl格式也是需要注意的,以soildworks為例,選擇

    檔案-另存為-儲存類型(stl)

    ,在選項裡選擇 精細 選項。如果你是 新手 并且 模型的規模較小 的話,建議選擇精細模式,否則你需要根據需求選擇精細程度。
遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖4 導出stl過程

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

好,到這裡導入工作已經完成了,接下來我們将stl檔案導入到vrep中。

Step2 導入模型并簡單處理

點選菜單欄中的

file - Import - Mesh..

,具體見圖5,找到剛才導出的stl檔案,快捷鍵

Ctrl + a

選擇所有的stl檔案,然後點選确定。此時會彈出一個對話框,由于模組化軟體的坐标系和vrep的不一樣,這裡選擇Y軸朝上,點選

OK

完成導入,導入的結果見圖7。

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖5 導入stl檔案

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖6 導入後的對話框

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖7 PUMA650導入後結果

從模型樹上可以看到,導入的模型按照不同的零件已經分開,如果你的模組化軟體導入的是一個整體的話,需要增加一步操作,具體見圖8。
遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

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

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

完成導入後需要整理一下零件,将一些零件進行命名,同時将不需要的一些零件删掉。我們發現導入12個零件,先浏覽一遍導入的零件(見圖9),發現底座上安裝了六個螺栓(見圖10),對于仿真是沒有用處的,是以删掉。

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖9 浏覽一遍導入的零件

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖10 對仿真無用的螺栓

現在将剩下的零件進行重命名,便于識别。我們用

puma560_link0_vision

作為起始,依次命名,命名結果如圖11.(對應中間檔案名稱為:vrep4_puam560_step2_1.ttt)

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖11 将零件重命名

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

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

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

注意 :由于vrep不同電腦下導入結果的會有細微差異,影響後面的具體操作,是以建議直接用

vrep4_puam560_step3_1.ttt

這個檔案作為起始檔案,大家後面的操作從這個檔案開始。
遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

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

這裡講一個我自己的方法,我一般是比較喜歡将要調整的模型拷貝到一個備用的scene,這樣所有操作都在這個備用的scene中,避免改壞東西。是以我們先

建立一個scene

,命名為

puma560_backup

,将

puma560_link1_vision

拷貝到這個新檔案中,我們要從上面提取出兩個圓柱體,進而找到機械臂的前兩個回轉軸。

選擇

puma560_link1_vision

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

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖13 實體操作按鈕

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖13 實體操作動圖

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

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

3.1 提取joint1和joint2

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

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖14 選擇第一個底面

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖15 退出形狀編輯模式

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

如果大家對上述操作不是很熟練的話,請看連載1中圖7的操作。
遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

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

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

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

獲得了第一個關節的位置之後,将其重命名為

puma560_joint1

,将其拷貝回到原來的檔案中,這樣第一個關節就完成了。

現在擷取第二個關節,依然是使用

puma560_link1_vision

,進入形狀編輯模式,選擇

Triangle 203 ——Triangle 250

,提取第二個圓柱體,利用上述同樣操作,得到第二個轉動關節

puma560_joint2

。也将其複制回到原來的檔案中,此時檔案中應該是圖17中的結果,(對應中間檔案名稱為:vrep4_puam560_step3_1.ttt)

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖16 提取第二個圓柱體

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

圖17 整理好前兩個關節

3.2 提取其他關節

由于後續提取其他關節為重複工作,提取過程與提取joint1和joint2類似,是以直接放在寶貝連結的

Step3提取關節.docx

文檔中,大家自己打開看吧,就不占用教程篇幅了。

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

提取其他關節說明

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

Step4 提取實體特征

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

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

Step4_1 提取凸面體結構

由于提取凸面體會直接替換原來的結構,是以我們将機械臂的

puma560_link0_vision

puma560_link5_vision

六個結構拷貝到一個新的scene中,先選擇

puma560_link0_vision

,執行下圖的操作(

Edit->Morph selection into convex shapes

),這樣就得到了第一個實體,對剩餘的其他元件執行同樣的操作。

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

提取凸面體結構

操作完成後,将各個部件重命名為

puma560_link0

puma560_link5

,此時可以得到下圖:(對應檔案名為

vrep4_puam560_step4_1_backup.ttt

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

全部提取為凸面體結構

設定動力學屬性

此時電機開始仿真發現仍然沒有自由落體,因為還沒有設定動力學屬性。接下來我們設定凸面體的

品質

respondable

的屬性。這裡從**``puma560_link1

**開始,根據下圖設定動力學屬性,注意

local respondable mask`是僅點第一個對勾。

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

設定link1的動力學屬性

根據同樣的方式設定link2——link5的動力學屬性,唯一差别為

local respondable mask

依次點第二個對勾、第三個對勾……例如第link5的屬性為:(對應檔案為

vrep4_puam560_step4_1_backup2.ttt

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

link5的動力學屬性

完成上述步驟之後,可以點選仿真按鈕,應該會看到自由落體的情況。将這些凸面體拷貝回到原來的檔案中,重新調整模型樹,按照如下的方式進行排列,确定依賴關系,如下圖:

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

整理好的模型樹

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

Ctrl鍵

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

隐藏凸面體

此時點選仿真,發現機械臂會立即垮掉,原因是因為添加的關鍵無法提供足夠的扭矩保持平衡,我們這裡打開關節的

位置控制

模式,如下圖:(注意要設定一下關節扭矩,預設2.5Nm太小了,這裡先設定為100Nm)

遊戲模型提取工具ninjaripper_[連載 4]Vrep導入三維模型——PUMA560機械臂

設定電機為位置控制模式

(對應最終檔案名稱為:vrep4_puam560_step4_2.ttt)

結語

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

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

https://u.wechat.com/MIXGPFx3pmLt0sF7d6MEh-w (二維碼自動識别)

繼續閱讀