- [連載 0]Vrep入門介紹
- [連載 1]Vrep小車建募脚迹——前進和轉(zhuǎn)向
- [連載 2]Vrep小車建闹士觯——內(nèi)嵌腳本
- [連載 3]Vrep小車建模——matlab控制
- [連載 4]Vrep導(dǎo)入三維模型——PUMA560機械臂
- [連載 5]Vrep--Matlab Robitic Toolbox--PUMA560機械臂控制
- [番外 1]Vrep小車機械臂抓取
- [Lib庫 1]CoppeliaSim差分避障小車的Simulink實現(xiàn)(B站視頻講解)
- [Lib庫 2]CoppeliaSim機械臂抓取的Simulink實現(xiàn)(B站視頻講解)
- 知乎專欄:Vrep機器人動力學(xué)建模仿真
相信大家在看完Vrep入門介紹之后已經(jīng)開始摩拳擦掌,準(zhǔn)備自己動手完成一個模型吧司恳,下面就介紹如何制作一個可以前進和轉(zhuǎn)向的小車。
此教程是基于vrep 3.3.2版本制作的彪蓬,初學(xué)可以先安裝3.3.2版本進行學(xué)習(xí)朽砰,后面再使用更新的版本。(舊版下載鏈接:鏈接:https://pan.baidu.com/s/1PIl5t-Pwx2dawOIHfzDelA 提取碼:qirx)
Step1模型準(zhǔn)備
說明:這個模型可以從零開始建立并思,也可以根據(jù)我給大家提供的起始文件庐氮,起始文件我放在淘寶上了,大家可以購買得到宋彼,收費的目的是為了讓大家更加珍視這次Vrep的學(xué)習(xí)過程弄砍,希望大家不要半途而廢,也是我堅持完成系列教程的動力所在宙暇。寶貝鏈接
Step2構(gòu)建驅(qū)動輪
這里搭建的小車為大家熟知的萬向輪小車输枯,通過小車后面兩個輪子的速度匹配實現(xiàn)前進、轉(zhuǎn)向占贫、后退等運動桃熄,是最常見的小車運動形式之一。現(xiàn)在我們先構(gòu)建一個主動驅(qū)動輪。
主動驅(qū)動輪的構(gòu)建思路如下:
- 建立一個扁平狀的圓柱體瞳收,作為驅(qū)動輪的實體
- 調(diào)整驅(qū)動輪的位置和方向碉京,滿足滾動的要求
- 設(shè)置實體輪子的動力學(xué)參數(shù)
- 將實體輪與貼紙輪組合,完成一個驅(qū)動輪構(gòu)建
- 通過復(fù)制操作螟深,完成兩個驅(qū)動輪的擺放
2.1添加實體
向環(huán)境中添加一個圓柱體谐宙,從菜單欄依次選擇[Menu bar --> Add --> Primitive shape --> Cylinder]
,參數(shù)按照下圖1進行配置界弧,僅需要修改紅框中的內(nèi)容凡蜻,得到圖2中的結(jié)果。
2.2調(diào)整位置和方向
默認(rèn)添加輪子的方向不符合滾動要求垢箕,需要將其豎直起來划栓。首先在模型樹選中剛加入的圓柱體Cylinder,點擊旋轉(zhuǎn)按鈕条获,根據(jù)圖3完成操作忠荞。
調(diào)整輪子的位置,將相對于world坐標(biāo)系的Z方向位置為0.1175(=0.235/2)帅掘,設(shè)置過程見圖4.
2.3設(shè)置實體輪子的動力學(xué)參數(shù)
關(guān)閉平移和旋轉(zhuǎn)的對話框委煤,雙擊模型樹中,模型前面的圖標(biāo)修档,見圖5碧绞,打開模型屬性窗口。按照圖6完成模型的質(zhì)量屬性和轉(zhuǎn)動慣量屬性修改萍悴。完成此項工作之后头遭,可以嘗試運行一下仿真,看看實體輪是否會運動癣诱。
2.4與貼紙輪結(jié)合计维,完成一個主動驅(qū)動輪的設(shè)計
由于添加的實體圓柱輪看起來實在太丑,因此我為大家提供了一個貼紙輪撕予,為什么叫做貼紙輪呢鲫惶?是因為這個輪子只提供一個外觀,并不參與到動力學(xué)計算中实抡,就好像我在上面貼了一層圖案欠母。貼紙輪的獲取方式請點擊寶貝鏈接。
將貼紙輪位置設(shè)置與實體輪重合吆寨,我們這里采用一種更為便捷的方式赏淌,也是后面涉及到Vrep裝配最常用的手段之一,請大家注意啄清。
首先先用鼠標(biāo)點選貼紙輪六水,然后摁住Ctrl鍵,選擇實體輪,點擊移動按鈕掷贾,在平移對話框里選擇Apply to selection
睛榄,完成移動,具體過程見圖7想帅。移動后的效果見圖8场靴。
這里需要強調(diào)一下點擊的順序,先選擇的是希望移動的部分港准,最后選擇的是目標(biāo)位置旨剥。這里希望將貼紙輪移動到實體輪這里,所以首先點擊貼紙輪叉趣,然后點擊實體輪泞边。
2.5通過復(fù)制操作该押,完成兩個驅(qū)動輪的擺放
這里我們在學(xué)習(xí)兩個操作疗杉,第一個是復(fù)制操作,第二個是調(diào)整模型樹中的層次關(guān)系蚕礼。
用Ctrl按鍵同時選擇實體輪和貼紙輪烟具,利用快捷鍵Ctrl + c
,Ctrl + v
完成復(fù)制粘貼。
選擇模型樹中的LeftWheel_visual
奠蹬,用快捷鍵del
將其刪除(由于我們剛才已經(jīng)復(fù)制產(chǎn)生了新的貼紙輪朝聋,就不需要原來的貼紙輪了)。
現(xiàn)在修改模型樹中的模型名稱囤躁,雙擊模型樹的模型名稱進入編輯狀態(tài)冀痕,見下圖,將Cylinder
修改為RightWheel
狸演,將Cylinder0
修改為LeftWheel
言蛇,將RightWheel_visual0
改為LeftWheel_visual
現(xiàn)在調(diào)整模型樹的層次結(jié)構(gòu),在模型樹窗口中宵距,鼠標(biāo)拖動
LeftWheel_visual
至LeftWheel
上腊尚,拖動RightWheel_visual
至RightWheel
上,完成后的效果如下:Vrep簡單易用主要體現(xiàn)在模型樹的操作十分靈活满哪,裝配非常方便婿斥,靈活應(yīng)用平移旋轉(zhuǎn)工具調(diào)整好相對位置之后就可以用模型樹固定下相對關(guān)系,對于組裝復(fù)雜的模型非常便捷哨鸭,大家后面會慢慢體會到民宿。
完成上面的工作之后,將兩個輪子按照XOZ平面對稱放置像鸡,左驅(qū)動輪的設(shè)置如圖9活鹰,右輪類似,將Y方向坐標(biāo)設(shè)置為-0.25
即可。
最后的樣子為下圖:
3添加車身和萬向輪
3.1添加車身
車身采用一個長方體即可华望,在[Menu bar --> Add --> Primitive shape --> Cuboid]
蕊蝗,設(shè)置參數(shù)如下圖:
將車身名稱改為
Car_body
,點開平移對話框,設(shè)置其位置如下圖:將
Car_body_visual
移動到Car_body
上赖舟,操作參考2.4與貼紙輪結(jié)合蓬戚,完成一個主動驅(qū)動輪的設(shè)計,完成后效果如下(由于車身貼紙比車身小一點宾抓,所以看不到了):將車身貼紙移動到車身下一層子漩,修改車身動力學(xué)屬性,如下圖石洗。至此已完成車身的構(gòu)建幢泼,可以嘗試運行一下仿真,看看效果讲衫。
3.2構(gòu)建萬向輪
真實的模擬萬向輪相對麻煩一點缕棵,這里為了第一個教程的簡便,我們采用一種投機取巧的辦法涉兽,我們把萬向輪抽象為一個與地面沒有摩擦力的實體招驴,即實現(xiàn)了萬向輪的功能。
這種“投機取巧”的行為在后面的動力學(xué)仿真中會經(jīng)常用到枷畏,通過合理的抽象别厘,將一些次要功能簡單化的實現(xiàn),從而將注意力集中到核心問題上拥诡,達(dá)到自己的研究目的触趴。這是我們用到的第一個投機取巧的功能,后續(xù)我會不斷介紹一些小技巧渴肉,讓大家能夠更快更好的完成仿真冗懦。
鑒于大家已經(jīng)認(rèn)真完成上面的操作走到這里,下面我將不再細(xì)致的講解已經(jīng)說明的操作宾娜。
通過菜單欄添加一個球體(Sphere)批狐,設(shè)置球體直徑為0.15,修改其名稱為Universal_wheel
前塔,調(diào)整其空間位置如下圖嚣艇。將貼紙輪與球體重合,并修改層次關(guān)系华弓。最后設(shè)置一下球體的動力學(xué)屬性以食零,完成萬向輪的構(gòu)建。
最后別忘了一點寂屏,我們需要設(shè)置萬向輪與地面無摩擦贰谣,選擇
noFrictionMaterial
娜搂。完成上述內(nèi)容后可以嘗試運行一下仿真,發(fā)現(xiàn)車體迅速分解吱抚,下一節(jié)我們就添加約束關(guān)系百宇。
4添加各部件約束,完成車體模型樹構(gòu)建
4.1將萬向輪與車身固定
在Vrep中有兩種方式可以將兩個具有動力學(xué)屬性的物體固定
- 采用力傳感器(Force sensor)將兩個物體進行連接秘豹,實現(xiàn)固連
- 采用
Group
或Merge
將兩個物體進行組合
我們這里先采用第一種方式携御,[Menu bar --> Add --> Force sensor]
,移動其位置既绕,并按照下圖設(shè)置模型層次啄刹。運行仿真,可以看到萬向輪與車身不會分開凄贩。
4.2添加驅(qū)動關(guān)節(jié)
驅(qū)動關(guān)節(jié)可以模擬機器人的驅(qū)動電機誓军,能夠?qū)崿F(xiàn)速度控制、位置控制和力控制等疲扎。我們這里準(zhǔn)備采用速度控制昵时。
采用菜單欄命令[Menu bar --> Add --> Joint --> Revolute ]
,得到下圖评肆。將關(guān)節(jié)名字重命名為RightMotor
债查。
這里我們還是采用2.4節(jié)的位置調(diào)整方式,不過這次我們不僅要調(diào)整關(guān)節(jié)的位置瓜挽,還需要調(diào)整關(guān)節(jié)的方向。調(diào)整關(guān)節(jié)位置依然是首先選擇關(guān)節(jié)征绸,然后選擇右輪久橙,然后選擇位置選項卡,完成平移管怠。
旋轉(zhuǎn)操作類似淆衷,依次執(zhí)行下圖的操作,完成方向設(shè)置渤弛。
重復(fù)上面的操作祝拯,完成左輪的驅(qū)動關(guān)節(jié)添加,最后調(diào)整關(guān)節(jié)的模型層次樹她肯,最后結(jié)果見下圖佳头。運行仿真,發(fā)現(xiàn)車體沒有解體晴氨,證明我們的車身結(jié)構(gòu)已經(jīng)搭建完成康嘉。
如果在完成車身結(jié)構(gòu)搭建后,運行仿真發(fā)現(xiàn)車身會運動籽前,可以選擇不同的求解器亭珍,看看不同求解器的差別敷钾,下面將解決無緣無故車體運動的問題。
5完成全部工作
5.1設(shè)置可見和不可見屬性
現(xiàn)在模型和帖子混在一起肄梨,既看起來丑阻荒,也沒有發(fā)揮貼紙的作用,下面將簡單的實體隱藏众羡。
選擇Car_body
财松,打開屬性對話框,按照下圖設(shè)置纱控,將其隱藏辆毡。
同理,對于非貼紙類型的甜害,都隱藏舶掖,得到下圖,是不是好看多了尔店?
感覺車身位置略高眨攘,我們需要重新調(diào)整一下貼紙的位置,
5.2設(shè)置關(guān)節(jié)驅(qū)動參數(shù)
關(guān)節(jié)需要打開
Motor enable
嚣州,使得關(guān)節(jié)能夠輸出扭矩鲫售,提供動力,將左右兩個關(guān)節(jié)均按照下圖設(shè)置该肴,設(shè)置完成后嘗試運行一下仿真情竹。可以看到模型可以運動,試著給兩個電機不同的速度信號匀哄,實現(xiàn)轉(zhuǎn)向秦效。
細(xì)心的同學(xué)可能會發(fā)現(xiàn)給關(guān)節(jié)電機是正方向的指令,但是小車卻是向后運動涎嚼。這個沒有關(guān)系阱州,只要我們在給電機輸入指令是注意一下即可。強迫癥的同學(xué)請嘗試旋轉(zhuǎn)關(guān)節(jié)法梯,將其正方向與小車前進方向?qū)?yīng)苔货,這里不再贅述。
結(jié)語
下一節(jié)教程我想介紹一下如何用內(nèi)嵌腳本實現(xiàn)一些簡單的功能立哑,歡迎大家交換想法~~
到這里已經(jīng)完成了本節(jié)的教程夜惭,實屬不易啊,如果覺得不錯請為我的文章捐贈刁憋,我會有更大的動力完成后面的教程