Vrep建模教程1——BubbleRob機(jī)器人建模

好消息,我要在過年前更新Vrep的一系列教程了,大家有什么需求可以在下面留言或者私信給我!!

聲明:本文參考V-REP官網(wǎng)教程文檔,英語好的同學(xué)可以直接閱讀原文。由于原文中很多操作僅給出文字說明,學(xué)習(xí)時(shí)候容易造成困惑,本文盡量在原文基礎(chǔ)上進(jìn)行一點(diǎn)完善。

簡介

V-REP是開源仿真軟件,有EDU教育版是免費(fèi)的,安裝也是非常簡單的(貌似只能安裝到C盤),我現(xiàn)在使用的是3.3.2版本。這個(gè)文章是介紹一個(gè)BubbleRob機(jī)器人構(gòu)建過程,教程最終的結(jié)果可以在V-REP安裝目錄文件夾下的tutorials/BubbleRob這個(gè)路徑中找到,如果你現(xiàn)在安裝好了V-REP軟件,可以打開看看。效果圖如下:


從上面的圖中可以看出,V-REP設(shè)計(jì)的結(jié)構(gòu)和大部分工程類軟件相似,菜單欄-工具欄-層次結(jié)構(gòu)-仿真環(huán)境顯示。值得注意的是大家要分清scene,page,model這幾個(gè)概念,看一下Scenes and models,大概意思就是model是scene的一部分,比如里面一個(gè)小車是一個(gè)模型,scene就是你所要仿真的整個(gè)環(huán)境,包括小車,障礙物,腳本,逆運(yùn)動(dòng)學(xué),page等等,page是翻譯過來是頁面,個(gè)人感覺就是俯視圖、正視圖等等的組合。

現(xiàn)在開始進(jìn)行實(shí)例建模。

建模

小車建模

首先向場景中添加一個(gè)直徑為0.2m的球體(命令為:[Menu bar --> Add --> Primitive shape --> Sphere]),在彈出窗口中在X-size處填入0.2,點(diǎn)擊OK就可以了。這個(gè)球體將作為小車的車身。

注:在添加球體的窗口中還有一些參數(shù),可以先解釋一下,Sides 和 Faces兩個(gè)參數(shù)決定這個(gè)模型的構(gòu)建的精細(xì)程度,如果你取消選擇Smooth shaded選項(xiàng)的話,你會(huì)發(fā)現(xiàn)球體是由多面體構(gòu)成的。越是精細(xì)的模型計(jì)算越費(fèi)時(shí)間,詳細(xì)說這個(gè)的請看下一個(gè)教程英文版鏈接;勾選Create dynamic and respondable shape這個(gè)選項(xiàng)表明這個(gè)球體是具有動(dòng)力學(xué)特征的,比如質(zhì)量、轉(zhuǎn)動(dòng)慣量等特點(diǎn)。Create pure shape這個(gè)選項(xiàng)暫時(shí)還沒有搞清楚有什么影響。如果設(shè)置過程中有時(shí)候忘了有沒有勾選,也不用著急刪除,可以在屬性對話框中進(jìn)行修改。

添加球體的窗口

現(xiàn)在可以下面圖1視角變換的工具,查看發(fā)現(xiàn)球體的Z軸方向坐標(biāo)為零,直接置于floor(后面都翻譯為地板)上面,因?yàn)楹竺嬉o小車加入輪子,所以要將球體進(jìn)行適當(dāng)?shù)奶Ц摺_x擇圖2中平移工具,對球體進(jìn)行平移。最后球體的Z軸坐標(biāo)為0.12m,x、y的坐標(biāo)均為0(過程參考圖3)。完成平移操作后,雙擊球體的名稱Sphere,將名字改為bubbleRob。

注:1.在V-REP中有兩種選擇物體的方式,可以從仿真環(huán)境中直接點(diǎn)球體,也就是圖3中的右邊的2步驟,也可以直接從scene中選擇球體。
2.在V-REP中進(jìn)行操作的時(shí)候,也有兩種方式。第一種為先選擇好要操作的對象,然后選擇操作的命令,在圖3中也就是先進(jìn)行步驟2的操作,在進(jìn)行步驟1的操作。第二種方式為先選擇命令,然后再選擇要操縱的對象,也就是先進(jìn)行步驟1,然后進(jìn)行步驟2。
3.上面可能讀起來比較繞口,通俗一點(diǎn)講就是,如果你點(diǎn)開的命令窗口是灰色的,選項(xiàng)不可選的狀態(tài),那么肯定是沒有進(jìn)行步驟2的選擇物體的操作!

圖1. 視角變換的工具
圖2. 平移和旋轉(zhuǎn)變換的工具
圖3. 平移變換操作

恭喜完成上面的平移操作,如果你能對我備注里的3條加以體會(huì)的話,后面的操作都將非常簡單。接下來開始構(gòu)建小機(jī)器人的輪子。這里我們選擇新建一個(gè)scene,在這個(gè)臨時(shí)的scene中完成輪子的構(gòu)建。這樣做的目的是為了保護(hù)你剛才完成的球體的構(gòu)建,避免對輪子操作的過程中影響了你之前做的工作。當(dāng)然,如果你不太樂意新建一個(gè)scene的話,你可以在當(dāng)前的scene中完成下面的步驟。
通過Menu bar --> File --> New scene,建立一個(gè)新的場景,添加一個(gè)圓柱體Menu bar --> Add --> Primitive shape --> Cylinder(后面這種添加操作的命令將不再標(biāo)出)。尺寸為0.08,0.08,0.02。對圓柱體進(jìn)行平移變換操作,將其絕對坐標(biāo)設(shè)置為(0.05,0.1,0.04),絕對方向?yàn)椋?90,0,0)。現(xiàn)在將其重命名為bubbleRob_leftWheel,也就是我們的左輪。
重要這里要設(shè)置左輪的屬性,設(shè)置屬性的操作將重復(fù)無數(shù)次,一定要非常熟悉。設(shè)置屬性對話框一般是點(diǎn)擊圖1中的標(biāo)識(shí)部分(Markdown不能圖片編號(hào),所以每一段圖片都重新編號(hào))。圖2表示剛才建立的左輪的屬性對話框,屬性對話框有兩個(gè)選項(xiàng)卡,第一個(gè)為Shape,設(shè)置顏色、形狀、幾何參數(shù)還有下面的動(dòng)力學(xué)屬性等;第二個(gè)為Common,這個(gè)選項(xiàng)卡更為常用,幾乎每個(gè)對象都需要設(shè)置這個(gè)頁面。我們先給左輪設(shè)置其為“可碰撞,可測量,可渲染,可檢測”,見圖3.

圖1 設(shè)置屬性
圖2 左輪的屬性對話框
圖3 左輪Common選項(xiàng)卡

完成上述操作后,選擇左輪,利用復(fù)制粘貼快捷鍵,得到左輪的副本,將其重命名為bubbleRob_rightWheel,并通過平移變換操作將其Y坐標(biāo)設(shè)置為-0.1,最后得到下圖的樣子。摁住Ctrl鍵,同時(shí)選中左輪和右輪,將其復(fù)制,粘貼至最初建立的球體的scene中,得到機(jī)器人的初樣。

左右兩輪的建立
機(jī)器人初樣

此時(shí),我們需要加入電機(jī)來驅(qū)動(dòng)左輪和右輪,通過Menu bar --> Add --> Joint --> Revolute添加回轉(zhuǎn)關(guān)節(jié),通常加入的關(guān)節(jié)都是出于World坐標(biāo)系的原點(diǎn)位置(如果有時(shí)候你原點(diǎn)有個(gè)很大的東西,有可能會(huì)看不到你添加的東西)。為了將關(guān)節(jié)與左輪聯(lián)系一起來,快捷的方式是按照圖1 的方式進(jìn)行對齊,首先打開平移窗口,然后點(diǎn)擊選擇驅(qū)動(dòng)關(guān)節(jié),然后摁住Ctrl鍵選擇你要對齊的左輪,然后點(diǎn)擊Apply to selection,可以發(fā)現(xiàn)關(guān)節(jié)移動(dòng)到了左輪上。將選項(xiàng)卡切換到Orientation/Rotation,進(jìn)行同樣的操作,使得電機(jī)在旋轉(zhuǎn)方向上與左輪一致。(注:這個(gè)操作可以滿足大部分的情況需求,但是有時(shí)候旋轉(zhuǎn)方向還是需要通過手動(dòng)改變歐拉角進(jìn)行手動(dòng)的調(diào)整)。
同樣的道理,添加右輪的驅(qū)動(dòng)關(guān)節(jié),將關(guān)節(jié)重命名為bubbleRob_leftMotor和bubbleRob_rightMotor。由于這兩個(gè)關(guān)節(jié)要作為電機(jī)提供動(dòng)力,因此需要設(shè)置其屬性。參考圖2,打開bubbleRob_leftMotor的屬性對話框,在Joint選項(xiàng)卡下選擇Show dynamic properties dialog,勾選Motor enable,注意不要勾選Lock motor when target velocity i。同理,右輪電機(jī)也需要完成上述操作。(注:在勾選Motor enable之后,可以修改下面的Target velocity修改電機(jī)的輸出速度。)
重要修改層次結(jié)構(gòu),V-REP可以很簡單的將兩個(gè)物體進(jìn)行綁定。通過在Scence Hierarchy中拖拽可以快速的調(diào)整層次結(jié)構(gòu)。調(diào)整后的層次結(jié)構(gòu)見圖3.此時(shí)你可以電機(jī)仿真工具欄中的開始按鈕,進(jìn)行仿真。放著結(jié)構(gòu)發(fā)現(xiàn)機(jī)器人向后翻,因此需要增加第3個(gè)支撐點(diǎn)。

圖1 關(guān)節(jié)與左輪對齊
圖2 配置關(guān)節(jié)屬性
圖3 層次結(jié)構(gòu)

完成上述操作之后需要增加第3個(gè)支撐點(diǎn),第三個(gè)支撐點(diǎn)增加一個(gè)萬向輪,在這里我們增加一個(gè)球體,并設(shè)置其材料屬性為無摩擦。考慮到大家已經(jīng)完成上述的操作,這里就直接介紹過程。新建一個(gè)scene,建立一個(gè)直徑為0.05m的球體,設(shè)置其Common,勾選Object special properties下面的4個(gè)選項(xiàng),即設(shè)置其為“可碰撞,可測量,可渲染,可檢測”,將其重命名為bubbleRob_slider,并選擇其材料Materia屬性為noFrictionMaterial(無摩擦)。由于支撐點(diǎn)要與機(jī)器人進(jìn)行剛性連接,因此需要添加一個(gè)Force sensor(力傳感器),通過Menu bar --> Add --> Force sensor,并將其向上平移0.05m,并將其重命名為bubbleRob_connection 。將這兩個(gè)對象選中并復(fù)制粘貼到原scene中,將其整體沿x軸正方向平移0.07m,此時(shí)的目錄結(jié)構(gòu)可以參考下圖1。此時(shí)可以運(yùn)行仿真,在bullet 2.78的求解器下,發(fā)現(xiàn)在沒有電機(jī)驅(qū)動(dòng)力的情況下小車會(huì)移動(dòng),這與設(shè)計(jì)的狀態(tài)有所不同,因此需要進(jìn)行一些調(diào)整。
首先考慮到由于bubbleRob與bubbleRob_slider之間采用剛性連接,而兩個(gè)都是具有碰撞屬性的,在動(dòng)力學(xué)模擬的過程中可能產(chǎn)生一些問題,因此需要進(jìn)行一些設(shè)置。這里首先解除兩個(gè)球體之間的碰撞屬性,采用的方法為改變local respondable mask,bubbleRob的設(shè)置為11110000,bubbleRob_slider設(shè)置為00001111,設(shè)置狀態(tài)見圖2。此時(shí)繼續(xù)運(yùn)行仿真,發(fā)現(xiàn)采用bullet 2.78求解時(shí)仍然會(huì)移動(dòng),而bullet 2.83求解時(shí)基本不動(dòng),采用ode求解器時(shí)介于兩者之間。
官網(wǎng)給出此現(xiàn)象是由于動(dòng)態(tài)模擬的穩(wěn)定性與涉及的非靜態(tài)形狀的質(zhì)量和慣性緊密相關(guān)。,詳細(xì)的請閱讀此文,這里修改的方式為修改兩個(gè)驅(qū)動(dòng)輪和萬向輪的質(zhì)量,設(shè)置過程見圖3。此時(shí)再次運(yùn)行仿真,發(fā)現(xiàn)機(jī)器人基本處于靜止?fàn)顟B(tài),符合預(yù)設(shè)物理規(guī)律。

圖1 構(gòu)建完成小車模型
圖2 bubbleRob配置情況
圖3 bubbleRob_slider質(zhì)量設(shè)置

此時(shí),我們完成了小車模型基本模型的建立。

距離傳感器、視覺傳感器創(chuàng)建

(待添加)

構(gòu)建模型以及最終仿真結(jié)果。

(待添加)

做此教程的初衷是很少可以看到v-rep的中文教程,但是作者是深深被v-rep的便捷性感染。從軟件安裝到教程的學(xué)習(xí),都感覺非常流暢,而且本身是開源軟件很多開源硬件都是基于v-rep開發(fā)的。然而在剛開始學(xué)習(xí)v-rep的時(shí)候,有些操作會(huì)感覺比較困惑,通過本實(shí)例想拋磚引玉,希望更多的人投入到v-rep教程的建設(shè)當(dāng)中。
做教程的復(fù)雜度和時(shí)間耗費(fèi)情況遠(yuǎn)遠(yuǎn)超出我的想象,如果有人認(rèn)為教程有幫助到你的話,可以回復(fù)我,我盡量將后續(xù)的教程做完。謝謝理解~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容