webots使用以及第三方模型导入装配、运动学仿真教程
因為項目需要使用機器人的運動學仿真,因此需要的使用相應的機器人運動學仿真軟件。在查閱了一些資料以后,決定使用webots作為仿真的基本軟件。
但是webots的使用教程,國內基本沒有。僅在博客園的內的有一個系列博客,介紹了webots的使用的方法。但是沒有提供相應的裝配方法。webots自身的使用手冊與用戶說明已經夠實用,但是大部分細節都沒有介紹。因此經過一個周的學習與研究,了解掌握了webots進行的運動學仿真的基本方法。
1. webots模型的導出成VRML格式
工業機器人的模型一般在機器人生產廠商的官方網站提供了模型的下載。本人使用的是國內某工業機器人供應商生產的機器人,在官網內提供了1比1的機器人CAD裝備體模型。格式是SolidWorks文件的。因此將其下載下來以后打開,如圖所示。其裝配結構如圖所示。
圖1 機器人的三維模型? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2 機器人的裝備結構
工業機器人的運動主要是其六個軸的運動。因此,在進行運動學仿真時,需要將每個軸臂的裝備體分別導出。webots支持導入的格式是VRML97格式。因此使用SolidWorks進行導出。VRML97格式的文件打開時是有自身內部的坐標系的。因此在導出的時候,為了方便后期在webots內部進行裝備,需要對坐標系進行建立與確定。具體的步驟如下:
以工業機器人的第二臂與第三臂為例,其CAD模型在裝備的時候是通過減速器連接的軸進行的。因此,為了方便控制第二臂的運動,建議將坐標系的原點建立在底座與第二軸連接處。原始裝配體的原點就是建立在此處,因此可以直接導出。如圖所示
圖3 第二軸裝配部的原點
在導出的時候,SolidWorks選擇另存為VRML格式,點擊選型,選擇VRML97,標系選擇默認,如圖所示:
圖4 導出VRML格式
第三軸裝配部因為模型自身的坐標系沒有的建立在二三軸的連接處,因此需要建立一個額外的坐標系,方便導出。建立方法不再贅述。導出的時候在圖4里面需要選擇相應的坐標系。
在導出的時候,需要記錄每個軸坐標下,下一軸坐標系原點到本軸坐標系原點的空間坐標,方便在webots里面進行裝配。
2.單軸模型的處理
由于直接生成的VRML文件,包含較多的點面信息,整體的文件較大,在仿真的時候會使整體的計算變慢,甚至webots直接崩潰。而且,生產廠商網站的提供的模型可能帶有較多無用的點面信息,在webots里面,單軸無法直接生成相應的transform文件。因此需要的對單軸導出的模型進行處理。使用的軟件是Meshlab。我們只是進行簡單的處理,因此 meshlab軟件也不需要實際掌握。具體的方法是:
點擊File->import Mseh選擇單軸VRML文件
點擊Filter->Remshing、Simplication進行兩個步驟 如圖所示其中一個是將模型上面無用的孔洞抹去,另一個是降低模型的點面質量,減少文件大小。通過這樣的方法生成的VRML文件大概都在幾百k以下了
圖5 meshlab處理
?
圖6 未處理模型 與處理后的模型
可以明顯看出來,處理后的模型在細節與孔洞方面大大減少。可以提高相應的仿真速度。
完成VRML文件處理以后,需要將文件導入webots進行初步處理。webots在2018年以后已經開源,我這里使用的是最新版本的webots。
在webots里面新建項目,文件->import VRML97 選擇之間的簡化VRML文件導入,便可以看到相應的模型以及我們之前設定的坐標系。右鍵transfer將其轉變為solid類型;再右鍵Export為wpo文件即可完成單軸文件的處理。
3.webots模型的裝配
首先說明,webots的項目樹的組成以及思想不同于我們之前用到的SolidWorks等的項目樹,其最大的特點是無論任何類型的結構,均存在一個Children節點,在這個節點內部可以定義任意的實體以及模型類型。因此整個webots的使用就十分靈活了。
工業機器人不同軸之前的轉動,使用的均是HingeJoint節點,即只有一個轉動自由度的連接節點。詳情參考webots的使用手冊。
整體的裝配過程如圖所示:
圖7 裝配流程
詳細過程為;
首先將底座導入項目樹,方法是項目樹最下面一項右鍵新增,導出之前的wbo文件;
然后將底座的類型轉換為robot,方式是右鍵transfer->robot,方便后期添加運動;
然后需要在此設定相應的參數;
在導入完成后,在Arm1的children節點下就有一個shape節點,將使用DEF命名為Arm1Body,在Arm1的參數里面BoundaryObject里面,點擊使用Arm1Body。
設定相應的鉸鏈節點,在Arm1的children節點下新增baseNodes 選擇HingeJoint;
點擊HingeJoint節點的endPoint選擇baseNodes為solid,這時候在該節點的Children下導入之前設定完成的Arm2第二軸裝配體,endPoint的類型為solid,所以在其參數BoundaryObject里面,點擊使用Arm2Body。需要調整相應的六個自由度,保證第二軸的原點落在相應第一軸坐標系里面一二軸的連接處。
相應的Jointparameter選擇HingeJointParameter,其中Position是轉軸轉過的角度,是我們之后使用Motor進行控制的參數,不需要變動;axis是鉸鏈的轉軸 根據機器人的具體轉動進行選擇;anchor是我們在步驟1里面建立的Arm2坐標系原點距離Arm1坐標系原點的距離坐標。
device節點選擇相應的RotationMotor,并把它的名字改成Motor1。
到此為止邊完成了第二軸與底座的裝配。完成的項目樹如圖所示:
圖8 底座與第二軸的項目樹
該機械臂是一個六軸的機械臂,其裝配過程是一個層層嵌套的過程,需要保證每個都細節完成,才能完成相應的運動裝備。
4. 工業機器人的運動仿真
根據之前在HingeJoint里面定義的Motor的名字,新建一個控制器,使用控制器里面的獲取motor的函數以及賦值函數,即可完成機器的控制
由于我的項目不涉及機器人的運動控制,不涉及相應的機器人運動解析,因此我的工作到此基本完成了。想要繼續研究網上的資料 很多。
圖9 完成的工業機器人運動
總結:
webots的使用只要理解了他的項目樹的結構還是十分簡單的,但是國內的資料太少了,手冊上面說的還是十分全面的,但是并不是十分詳細,在具體的使用過程中需要實際進行操作。
當初選用webots進行仿真的原因是看到他的介紹上對于web很友好,但是研究了一下好像并沒有十分友好,只是提供了一個模型展示與動畫導出的功能(捂臉),感覺被騙了;除此以外,還可以實現webots作為后端的服務進行運行,前端web實時展示相應的過程。現在只做到了在本地演示,要在網絡端運行好像還挺麻煩。以后補上。
同時,現在在gayhub上面的已經有其相應的源碼了,我覺著跑掉webGL建立模型的仿真還是可以的。
圖10 本地仿真web實時展示
?
?
?
?
總結
以上是生活随笔為你收集整理的webots使用以及第三方模型导入装配、运动学仿真教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA全文搜索排除无用的文件夹
- 下一篇: 找不到android的sdk,Circl