日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

webots使用以及第三方模型导入装配、运动学仿真教程

發(fā)布時(shí)間:2023/12/10 编程问答 82 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webots使用以及第三方模型导入装配、运动学仿真教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

因?yàn)轫?xiàng)目需要使用機(jī)器人的運(yùn)動(dòng)學(xué)仿真,因此需要的使用相應(yīng)的機(jī)器人運(yùn)動(dòng)學(xué)仿真軟件。在查閱了一些資料以后,決定使用webots作為仿真的基本軟件。

但是webots的使用教程,國內(nèi)基本沒有。僅在博客園的內(nèi)的有一個(gè)系列博客,介紹了webots的使用的方法。但是沒有提供相應(yīng)的裝配方法。webots自身的使用手冊(cè)與用戶說明已經(jīng)夠?qū)嵱?#xff0c;但是大部分細(xì)節(jié)都沒有介紹。因此經(jīng)過一個(gè)周的學(xué)習(xí)與研究,了解掌握了webots進(jìn)行的運(yùn)動(dòng)學(xué)仿真的基本方法。

1. webots模型的導(dǎo)出成VRML格式

工業(yè)機(jī)器人的模型一般在機(jī)器人生產(chǎn)廠商的官方網(wǎng)站提供了模型的下載。本人使用的是國內(nèi)某工業(yè)機(jī)器人供應(yīng)商生產(chǎn)的機(jī)器人,在官網(wǎng)內(nèi)提供了1比1的機(jī)器人CAD裝備體模型。格式是SolidWorks文件的。因此將其下載下來以后打開,如圖所示。其裝配結(jié)構(gòu)如圖所示。

圖1 機(jī)器人的三維模型? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2 機(jī)器人的裝備結(jié)構(gòu)

工業(yè)機(jī)器人的運(yùn)動(dòng)主要是其六個(gè)軸的運(yùn)動(dòng)。因此,在進(jìn)行運(yùn)動(dòng)學(xué)仿真時(shí),需要將每個(gè)軸臂的裝備體分別導(dǎo)出。webots支持導(dǎo)入的格式是VRML97格式。因此使用SolidWorks進(jìn)行導(dǎo)出。VRML97格式的文件打開時(shí)是有自身內(nèi)部的坐標(biāo)系的。因此在導(dǎo)出的時(shí)候,為了方便后期在webots內(nèi)部進(jìn)行裝備,需要對(duì)坐標(biāo)系進(jìn)行建立與確定。具體的步驟如下:

以工業(yè)機(jī)器人的第二臂與第三臂為例,其CAD模型在裝備的時(shí)候是通過減速器連接的軸進(jìn)行的。因此,為了方便控制第二臂的運(yùn)動(dòng),建議將坐標(biāo)系的原點(diǎn)建立在底座與第二軸連接處。原始裝配體的原點(diǎn)就是建立在此處,因此可以直接導(dǎo)出。如圖所示

圖3 第二軸裝配部的原點(diǎn)

在導(dǎo)出的時(shí)候,SolidWorks選擇另存為VRML格式,點(diǎn)擊選型,選擇VRML97,標(biāo)系選擇默認(rèn),如圖所示:

圖4 導(dǎo)出VRML格式

第三軸裝配部因?yàn)槟P妥陨淼淖鴺?biāo)系沒有的建立在二三軸的連接處,因此需要建立一個(gè)額外的坐標(biāo)系,方便導(dǎo)出。建立方法不再贅述。導(dǎo)出的時(shí)候在圖4里面需要選擇相應(yīng)的坐標(biāo)系。

在導(dǎo)出的時(shí)候,需要記錄每個(gè)軸坐標(biāo)下,下一軸坐標(biāo)系原點(diǎn)到本軸坐標(biāo)系原點(diǎn)的空間坐標(biāo),方便在webots里面進(jìn)行裝配。

2.單軸模型的處理

由于直接生成的VRML文件,包含較多的點(diǎn)面信息,整體的文件較大,在仿真的時(shí)候會(huì)使整體的計(jì)算變慢,甚至webots直接崩潰。而且,生產(chǎn)廠商網(wǎng)站的提供的模型可能帶有較多無用的點(diǎn)面信息,在webots里面,單軸無法直接生成相應(yīng)的transform文件。因此需要的對(duì)單軸導(dǎo)出的模型進(jìn)行處理。使用的軟件是Meshlab。我們只是進(jìn)行簡單的處理,因此 meshlab軟件也不需要實(shí)際掌握。具體的方法是:

點(diǎn)擊File->import Mseh選擇單軸VRML文件

點(diǎn)擊Filter->Remshing、Simplication進(jìn)行兩個(gè)步驟 如圖所示其中一個(gè)是將模型上面無用的孔洞抹去,另一個(gè)是降低模型的點(diǎn)面質(zhì)量,減少文件大小。通過這樣的方法生成的VRML文件大概都在幾百k以下了

圖5 meshlab處理

?

圖6 未處理模型 與處理后的模型

可以明顯看出來,處理后的模型在細(xì)節(jié)與孔洞方面大大減少。可以提高相應(yīng)的仿真速度。

完成VRML文件處理以后,需要將文件導(dǎo)入webots進(jìn)行初步處理。webots在2018年以后已經(jīng)開源,我這里使用的是最新版本的webots。

在webots里面新建項(xiàng)目,文件->import VRML97 選擇之間的簡化VRML文件導(dǎo)入,便可以看到相應(yīng)的模型以及我們之前設(shè)定的坐標(biāo)系。右鍵transfer將其轉(zhuǎn)變?yōu)閟olid類型;再右鍵Export為wpo文件即可完成單軸文件的處理。

3.webots模型的裝配

首先說明,webots的項(xiàng)目樹的組成以及思想不同于我們之前用到的SolidWorks等的項(xiàng)目樹,其最大的特點(diǎn)是無論任何類型的結(jié)構(gòu),均存在一個(gè)Children節(jié)點(diǎn),在這個(gè)節(jié)點(diǎn)內(nèi)部可以定義任意的實(shí)體以及模型類型。因此整個(gè)webots的使用就十分靈活了。

工業(yè)機(jī)器人不同軸之前的轉(zhuǎn)動(dòng),使用的均是HingeJoint節(jié)點(diǎn),即只有一個(gè)轉(zhuǎn)動(dòng)自由度的連接節(jié)點(diǎn)。詳情參考webots的使用手冊(cè)。

整體的裝配過程如圖所示:

圖7 裝配流程

詳細(xì)過程為;

首先將底座導(dǎo)入項(xiàng)目樹,方法是項(xiàng)目樹最下面一項(xiàng)右鍵新增,導(dǎo)出之前的wbo文件;

然后將底座的類型轉(zhuǎn)換為robot,方式是右鍵transfer->robot,方便后期添加運(yùn)動(dòng);

然后需要在此設(shè)定相應(yīng)的參數(shù);

在導(dǎo)入完成后,在Arm1的children節(jié)點(diǎn)下就有一個(gè)shape節(jié)點(diǎn),將使用DEF命名為Arm1Body,在Arm1的參數(shù)里面BoundaryObject里面,點(diǎn)擊使用Arm1Body。

設(shè)定相應(yīng)的鉸鏈節(jié)點(diǎn),在Arm1的children節(jié)點(diǎn)下新增baseNodes 選擇HingeJoint;

點(diǎn)擊HingeJoint節(jié)點(diǎn)的endPoint選擇baseNodes為solid,這時(shí)候在該節(jié)點(diǎn)的Children下導(dǎo)入之前設(shè)定完成的Arm2第二軸裝配體,endPoint的類型為solid,所以在其參數(shù)BoundaryObject里面,點(diǎn)擊使用Arm2Body。需要調(diào)整相應(yīng)的六個(gè)自由度,保證第二軸的原點(diǎn)落在相應(yīng)第一軸坐標(biāo)系里面一二軸的連接處。

相應(yīng)的Jointparameter選擇HingeJointParameter,其中Position是轉(zhuǎn)軸轉(zhuǎn)過的角度,是我們之后使用Motor進(jìn)行控制的參數(shù),不需要變動(dòng);axis是鉸鏈的轉(zhuǎn)軸 根據(jù)機(jī)器人的具體轉(zhuǎn)動(dòng)進(jìn)行選擇;anchor是我們?cè)诓襟E1里面建立的Arm2坐標(biāo)系原點(diǎn)距離Arm1坐標(biāo)系原點(diǎn)的距離坐標(biāo)。

device節(jié)點(diǎn)選擇相應(yīng)的RotationMotor,并把它的名字改成Motor1。

到此為止邊完成了第二軸與底座的裝配。完成的項(xiàng)目樹如圖所示:

圖8 底座與第二軸的項(xiàng)目樹

該機(jī)械臂是一個(gè)六軸的機(jī)械臂,其裝配過程是一個(gè)層層嵌套的過程,需要保證每個(gè)都細(xì)節(jié)完成,才能完成相應(yīng)的運(yùn)動(dòng)裝備。

4. 工業(yè)機(jī)器人的運(yùn)動(dòng)仿真

根據(jù)之前在HingeJoint里面定義的Motor的名字,新建一個(gè)控制器,使用控制器里面的獲取motor的函數(shù)以及賦值函數(shù),即可完成機(jī)器的控制

  • Motor *Arm2Motor = robot ->getMotor("Arm2Motor");
  • Arm2Motor->setPosition(i);
  • 由于我的項(xiàng)目不涉及機(jī)器人的運(yùn)動(dòng)控制,不涉及相應(yīng)的機(jī)器人運(yùn)動(dòng)解析,因此我的工作到此基本完成了。想要繼續(xù)研究網(wǎng)上的資料 很多。

    圖9 完成的工業(yè)機(jī)器人運(yùn)動(dòng)

    總結(jié):

    webots的使用只要理解了他的項(xiàng)目樹的結(jié)構(gòu)還是十分簡單的,但是國內(nèi)的資料太少了,手冊(cè)上面說的還是十分全面的,但是并不是十分詳細(xì),在具體的使用過程中需要實(shí)際進(jìn)行操作。

    當(dāng)初選用webots進(jìn)行仿真的原因是看到他的介紹上對(duì)于web很友好,但是研究了一下好像并沒有十分友好,只是提供了一個(gè)模型展示與動(dòng)畫導(dǎo)出的功能(捂臉),感覺被騙了;除此以外,還可以實(shí)現(xiàn)webots作為后端的服務(wù)進(jìn)行運(yùn)行,前端web實(shí)時(shí)展示相應(yīng)的過程。現(xiàn)在只做到了在本地演示,要在網(wǎng)絡(luò)端運(yùn)行好像還挺麻煩。以后補(bǔ)上。

    同時(shí),現(xiàn)在在gayhub上面的已經(jīng)有其相應(yīng)的源碼了,我覺著跑掉webGL建立模型的仿真還是可以的。

    圖10 本地仿真web實(shí)時(shí)展示

    ?

    ?

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的webots使用以及第三方模型导入装配、运动学仿真教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。