麥克納姆安裝及計算
《麥克納姆安裝及計算》由會員分享,可在線閱讀,更多相關(guān)《麥克納姆安裝及計算(24頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、麥克納姆輪淺談 什么是麥克納姆輪 在競賽機器人和特殊工種機器人中,全向移動經(jīng)常是一個必需的功能?!溉蛞苿印挂馕吨梢栽谄矫鎯?nèi)做出任意方向平移同時自轉(zhuǎn)的動作。為了實現(xiàn)全向移動,一般機器人會使用「全向輪」(OmniWheel)或「麥克納姆輪」 (MecanumWheel)這兩種特殊輪子。 全向輪: 麥克納姆輪 全向輪與麥克納姆輪的共同點在于他們都由兩大部分組成:輪轂和根子 (roller)。輪轂是整個輪子的主體支架,根子則是安裝在輪轂上的鼓狀物。 全向輪的輪轂軸與根子轉(zhuǎn)軸相互垂直,而麥克納姆輪的輪轂軸與根子轉(zhuǎn)軸呈 45°角。理論上,這個夾角可以是任意值,根據(jù)不同的夾角可以制作出
2、不同的輪子,但最常用的還是這兩種。 全向輪與麥克納姆輪(以下簡稱「麥輪」)在結(jié)構(gòu)、力學(xué)特性、運動學(xué)特性上都有差異,其本質(zhì)原因是輪轂軸與根子轉(zhuǎn)軸的角度不同。經(jīng)過分析,二者的運動學(xué)和力學(xué)特性區(qū)別可以通過以下表格來體現(xiàn)。 口 ■£> Ether Mecanum 分.,R > > V 6雋蓊芟 吞嫉立Mr 盤典?*:,?尸 JtAlT 曰?J.Eh>>『 才?收3工 v?rf ALi-fZ-jErt1 身 再d/ d 塞?,產(chǎn)星刊fRftA 立用款「jfi-Jjr* MlT .fqL 用餐壯 wArf?-**/ nrqmrTzxj?uAJX ?,+!姓)肛心? MM號Q w*r>j^s
3、jsn£JcAj^tg! Xftzxnc akejfij j
計算過程如下,供參考,
學(xué)霸可點開大圖驗算:
47/i~
4丁/?-
2丁72,/-
TKethreecolLimniaar?fgrs-taneflaird.ort^cLmeeanijm4--wl-ieelecivetnlelAs.
respectively.TKeomursiveliidea8wineels 4、,anddia)0Dngkfor日
OivenwwKtti華pewde(r>曰>之色羊,主存。]IT"靜coneitKreerow手二r?!笆渴瑃otaEp。手nin。
force:fforwsFd,strafe,and1dhftgon曰LforagivenwKeeltorq:uiep1.Ttnesel^asttinre0roiws
a.后『tjm。通}ftiotionN。尋尋m。。曰riuim!atnedomniroller匕叁日rings^日nd
t?)s-wfficicfnttraciiorT量o9Mppoirttki^renationFd「。。
近年來,麥輪的 5、應(yīng)用逐漸增多,特別是在Robocon、FRC等機器人賽事上。
這是因為麥克納姆輪可以像傳統(tǒng)輪子一樣,安裝在相互平行的軸上。而若想
使用全向輪完成類似的功能,幾個輪轂軸之間的角度就必須是60。,90。或
120°等角度,這樣的角度生產(chǎn)和制造起來比較麻煩。所以許多工業(yè)全向移動
平臺都是使用麥克納姆輪而不是全向輪,
比如這個國產(chǎn)的叉車:
?全向移動平
臺麥克納姆輪叉車美科斯叉車另外一個原因,可能是麥輪的造型比全向輪要酷炫得多,看起來有一種不明覺厲的感覺
的確,第一次看到麥輪運轉(zhuǎn)起來,不少人都會驚嘆。以下視頻直觀地說明了
麥輪底盤在平移和旋轉(zhuǎn)時的輪子旋轉(zhuǎn)方向。
麥輪的 6、安裝方法
麥輪一般是四個一組使用,兩個左旋輪,兩個右旋輪。左旋輪和右旋輪呈手
性對稱,區(qū)別如下圖。
安裝方式有多種,主要分為:X-正方形(X-square)、X-長方形(X-rectangle)、
O-正方形(O-square)、O-長方形(O-rectangle)。其中X和O表示的
是與四個輪子地面接觸的根子所形成的圖形;正方形與長方形指的是四個輪
子與地面接觸點所圍成的形狀。
? X-正方形:輪子轉(zhuǎn)動產(chǎn)生的力矩會經(jīng)過同一個點,所以yaw軸無法主動旋轉(zhuǎn),也無法主動保持yaw軸的角度。一般幾乎不會使用這種安裝方式。
? X-長方形:輪子轉(zhuǎn)動可以產(chǎn)生yaw軸轉(zhuǎn)動力矩,但轉(zhuǎn)動力矩的 7、力臂一般會比較短。這種安裝方式也不多見。
? 。-正方形:四個輪子位于正方形的四個頂點,平移和旋轉(zhuǎn)都沒有任何問題。受限于機器人底盤的形狀、尺寸等因素,這種安裝方式雖然理想,但可遇而不可求。
?O-長方形:輪子轉(zhuǎn)動可以產(chǎn)生yaw軸轉(zhuǎn)動力矩,而且轉(zhuǎn)動力矩的力臂也比較長。是最常見的安裝方式。
麥輪底盤的正逆運動學(xué)模型
以O(shè)-長方形的安裝方式為例,四個輪子的著地點形成一個矩形。正運動學(xué)模
型(forwardkinematicmodel)將得到一系列公式,讓我們可以通過四個輪
子的速度,計算出底盤的運動狀態(tài);而逆運動學(xué)模型(inversekinematicmodel)得到的公式則是可以根據(jù)底 8、盤的運動狀態(tài)解算出四個輪子的速度。需要注意
的是,底盤的運動可以用三個獨立變量來描述:X軸平動、Y軸平動、yaw軸
自轉(zhuǎn);而四個麥輪的速度也是由四個獨立的電機提供的。所以四個麥輪的合理速度是存在某種約束關(guān)系的,逆運動學(xué)可以得到唯一解,而正運動學(xué)中不符合這個約束關(guān)系的方程將無解。
先試圖構(gòu)建逆運動學(xué)模型,由于麥輪底盤的數(shù)學(xué)模型比較復(fù)雜,我們在此分
四步進行:
①將底盤的運動分解為三個獨立變量來描述;
②根據(jù)第一步的結(jié)果,計算出每個輪子軸心位置的速度;
③根據(jù)第二步的結(jié)果,計算出每個輪子與地面接觸的輯子的速度;
④根據(jù)第三部的結(jié)果,計算出輪子的真實轉(zhuǎn)速。
一、底盤運動的分解
我 9、們知道,剛體在平面內(nèi)的運動可以分解為三個獨立分量:X軸平動、Y軸
平動、yaw軸自轉(zhuǎn)。如下圖所示,底盤的運動也可以分解為三個量:
?表示X軸運動的速度,即左右方向,定義向右為正;
?表示Y軸運動的速度,即前后方向,定義向前為正;
?表示yaw軸自轉(zhuǎn)的角速度,定義逆時針為正。
以上三個量一般都視為四個輪子的幾何中心(矩形的對角線交點)的速度。
二、計算出輪子軸心位置的速度
定義:
?為從幾何中心指向輪子軸心的矢量;?為輪子軸心的運動速度矢量;
?為輪子軸心沿垂直于??的方向(即切線方向)的速度分量;
那么可以計算出:
v—+a)xr
分別計算X、Y軸的分量為:
同理可以 10、算出其他三個輪子軸心的速度。
三、計算根子的速度
根據(jù)輪子軸心的速度,可以分解出沿輯子方向的速度??和垂直于輯子方
向的速度??。其中?是可以無視的(思考題:為什么垂直方向的速度
可以無視?),而
其中??是沿輯子方向的單位矢量。
四、計算輪子的速度
從根子速度到輪子轉(zhuǎn)速的計算比較簡單:
以上方程組就是O-長方形麥輪底盤的逆運動學(xué)模型,而正運動學(xué)模型可以直接根據(jù)逆運動學(xué)模型中的三個方程解出來,此處不再贅述。
另一種計算方式
「傳統(tǒng)」的推導(dǎo)過程雖然嚴謹,但還是比較繁瑣的。這里介紹一種簡單的逆
運動學(xué)計算方式。
我們知道,全向移動底盤是一個純線性系統(tǒng),而剛體運動又可以線性分 11、解為
三個分量。那么只需要計算出麥輪底盤在「沿X軸平移」、「沿Y軸平移」、
「繞幾何中心自轉(zhuǎn)」時,四個輪子的速度,就可以通過簡單的加法,計算出
這三種簡單運動所合成的「平動+旋轉(zhuǎn)」運動時所需要的四個輪子的轉(zhuǎn)速。而
這三種簡單運動時,四個輪子的速度可以通過簡單的測試,或是推動底盤觀
察現(xiàn)象得出。
當(dāng)?shù)妆P沿著X軸平移時:
當(dāng)?shù)妆P沿著Y軸平移時:
當(dāng)?shù)妆P繞幾何中心自轉(zhuǎn)時:
將以上三個方程組相加,得到的恰好是根據(jù)「傳統(tǒng)」方法計算出的結(jié)果。這
種計算方式不僅適用于O-長方形的麥輪底盤,也適用于任何一種全向移動的
機器人底盤。
Makeblock麥輪底盤的組裝
理論分析完成,可以 12、開始嘗試將其付諸實踐了。
第一步,組裝矩形框架。
第二步,組裝電機模塊。
由于麥輪底盤的四個輪子速度有約束關(guān)系,必須精確地控制每個輪子的速度,
否則將會導(dǎo)致輯子與地面發(fā)生滑動摩擦,不僅會讓底盤運動異常,還會讓麥
輪的壽命減少。所以必須使用編碼電機。
第三步,將電機模塊安裝到框架上。
第四步,將麥輪安裝到框架上。
第五步,安裝電路板并接線。
編碼電機必須配上相應(yīng)的驅(qū)動板才能正常工作。這里使用的Makeblock編碼電機驅(qū)動板,每一塊板可以驅(qū)動兩個電機。接線順序在下文中會提及,也
可以隨意接上,在代碼中定義好對應(yīng)的順序即可。
第六步,裝上電池至此,一個能獨立運 13、行的麥輪底盤就完成了。
控制程序
根據(jù)麥輪的底盤的運動學(xué)模型,要完全控制它的運動,需要有三個控制量:X軸速度、Y軸速度、自轉(zhuǎn)角速度。要產(chǎn)生這三個控制量,有很多種方法,本文將使用一個USB游戲手柄,左邊的搖桿產(chǎn)生平移速度,右邊的搖桿產(chǎn)生角速度。
首先將一個?USBHost模塊連接到?Orion主板的3口。
然后插上一個無線USB游戲手柄。
后再添加其他細節(jié),就大功告成啦!
⑦畫上幽
Q)畫兩個
④畫上毛發(fā)
?
再添加其他鈾節(jié)就大功告成了I
①畫上臉
其他細節(jié):
14、
#include 15、28-127-128-127-15-8-0-128
//三角:128-127-128-127-31-0-0-128(00011111)
//方形:128-127-128-127-143-0-0-128(10001111)
//叉號:128-127-128-127-79-0-0-128(01001111)
//圓圈:128-127-128-127-47-0-0-128(00101111)
//向上:128-127-128-127-0-0-0-128(00000000)
//向下:128-127-128-127-4-0-0-128(00000100)
//向左:128-127-128 16、-127-6-0-0-128(00000110)
//向右:128-127-128-127-2-0-0-128(00000010)
//左上:128-127-128-127-7-0-0-128(00000111)
//左下:128-127-128-127-5-0-0-128(00000101)
//右上:128-127-128-127-1-0-0-128(00000001)
//右下:128-127-128-127-3-0-0-128(00000011)
//選擇:128-127-128-127-15-16-0-128
//開始:128-127-128-127-15-32-0-1 17、28
//搖桿:右X-右Y-左X-左Y-15-0-0-128
MeEncoderMotor
MeEncoderMotor
MeEncoderMotor
MeEncoderMotor
motor1(0x02,SLOT2);
motor2(0x02,SLOT1);
motor3(0x0A,SLOT2);
motor4(0x0A,SLOT1);
//底盤:a=130mm,b=120mmfloatlinearSpeed=100;
floatmaxLinearSpeed=200;
floatmaxAngularSpeed=200;
floatminLinearSpeed=30 18、;
floatminAngularSpeed=30;
voidsetup()
{
//要上電才能工作,不能只是插上USB線來調(diào)試。
motor1.begin();
motor2.begin();
motor3.begin();
motor4.begin();
Serial.begin(57600);
joypad.init(USB1_0);
}
voidloop()
{
Serial.println("loop:");
〃setEachMotorSpeed(100,50,50,100);
if(!joypad.device_online)
{
//若一直輸出 19、離線狀態(tài),重新拔插USBHost的RJ25線試一下
Serial.println("Deviceoffline.");
joypad.probeDevice();
delay(
1000);
else
{
intlen=joypad.host_recv();
parseJoystick(joypad.RECV_BUFFER);
delay(5);
}
//delay(500);
}
voidsetEachMotorSpeed(floatspeedl,floatspeed2,floatspeed3,floatspeed4)
{
motor1.runSpeed(s 20、peed1);
motor2.runSpeed(-speed2);
motor3.runSpeed(-speed3);
motor4.runSpeed(-speed4);
}
voidparseJoystick(unsignedchar*buf)//Analyticfunction,print8bytesfromUSBHost
{
//輸出手柄的數(shù)據(jù),調(diào)試用
//inti=0;
//for(i=0;i<7;i++)
//{
//Serial.print(buf[i]);//Itwon'tworkifyouconnecttothe
MakeblockOrion.
//S 21、erial.print('-');
//}
//Serial.println(buf[7]);
//delay(10);
//速度增減
switch(buf[5])
{
case 1:
linearSpeed+=
if(linearSpeed
{
linearSpeed
}
break;
case 2:
angularSpeed+=
if(angularSpeed
{
angularSpeed
}break;
case4:
linearSpeed-=
if(linearSpeed
{
linearSpeed
5;
>maxLinearSp 22、eed)
=maxLinearSpeed;
5;
>maxAngularSpeed)
=maxAngularSpeed;
5;
23、
angularSpeed=minAngularSpeed;
}
break;
default:
break;
}
if((128!=buf[0])||(127!=buf[1])buf[3]))
||
(128!=buf[2])||(127
!=
{
//處理搖桿
floatx=((float)(buf[2])
127)/128;
floaty=(127-(float)(buf[3]))
/128;
floata=(127-(float)(buf[0]))
/128;
mecanumRun(x
*linearSpeed,y*linearSpeed, 24、a*angularSpeed);
}
else
switch(buf[4])
case0:
mecanumRun(0,linearSpeed,0);
break;
case4:
mecanumRun(0,-linearSpeed,0);
break;
case6:
-linearSpeed,
mecanumRun(break;
case2:
mecanumRun(linearSpeed,break;
case7:
mecanumRun(-linearS 25、peedbreak;
case5:
mecanumRun(-linearSpeedbreak;
case1:
mecanumRun(linearSpeedbreak;
case3:
mecanumRun(linearSpeedbreak;
0,0);
0,0);
/2,linearSpeed/2,0);
/2,-linearSpeed/2,0)
/2,linearSpeed/2,0);
/2,-linearSpeed/2,0)
default:
26、
mecanumRun(
0,0,0);
}
break;
}
}
}
aSpeed)
-xSpeed + aSpeed;
+ xSpeed - aSpeed;
-xSpeed - aSpeed;
+ xSpeed + aSpeed;
voidmecanumRu、floatxSpeed,floatySpeed,float
floatspeed1=ySpeed
floatspeed2=ySpeedfloatspeed3=ySpee 27、dfloatspeed4=ySpeedfloatmax=speed1;
< speed2) max
< speed3) max
< speed4) max
< maxLinearSpeed)
if(maxif(maxif(max
if(max
{
speed1=speed1
speed2=speed2
speed3=speed3
speed4=speed4
=speed2;
=speed3;
=speed4;
/max*maxLinearSpeed
/max*maxLinearSpeed
/max*maxLinearSpeed
/max*maxLinearSpeed
setEachMotorSpeed(speed1,speed2,speed3,speed4);
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案