|
本帖最后由 太空將軍 于 2018-5-20 03:53 編輯
麥克納納姆輪是一種全向輪,底盤可以向前向后,也可以像螃蟹左右橫向移動,原地轉(zhuǎn)動,任何方向的飄逸都行,所以挺好玩的,所以將最簡單最精髓的部分分享出來,一定要切記!切記!切記!參考資料論文中我畫圈的逆運動學(xué)公式,自己利用數(shù)學(xué)算一下,不難的。(論文中其它部分完全可以忽略,因為我們搞應(yīng)用的,就是把別人的研究成果拿來用就好了)你是學(xué)霸非要全部看懂,我不攔你滴!只需要提供X_Y_W_speed的值,就能逆運算出W1、W2、W3、W4四個輪子的轉(zhuǎn)速!!!超級簡單
制作出來的智能車實物圖:
IMG_20150528_225403_LI.jpg (1.46 MB, 下載次數(shù): 159)
下載附件
輪子的安裝請參考這個車就行
2018-5-20 03:30 上傳
0.png (46.49 KB, 下載次數(shù): 144)
下載附件
2018-5-20 03:45 上傳
0.png (69.71 KB, 下載次數(shù): 156)
下載附件
2018-5-20 03:46 上傳
0.png (216.51 KB, 下載次數(shù): 153)
下載附件
2018-5-20 03:46 上傳
部分單片機(jī)源程序如下:
- //地點:武夷學(xué)院機(jī)器人實驗室
- //作者:0721的
- //描述:RM戰(zhàn)車2號程序
- //交流QQ:825470791
- //輪子的安裝請參考圖片!!!!
- int32_t L=250,W=200,R=75; //車尺寸,單位mm
- int32_t X_speed=0;
- int32_t Y_speed=0;
- int32_t W_speed=0;
- int32_t right_or_left=0;
- int32_t forward_or_back=0;
- int32_t W_right_or_left=0;
- char motor1_Direction; //0或者1 四個輪子方向
- char motor2_Direction; //0或者1
- char motor3_Direction; //0或者1
- char motor4_Direction; //0或者1
- int32_t W1=0,W2=0,W3=0,W4=0; //四個電機(jī)的轉(zhuǎn)速
- int pwm_data1=0,pwm_data2=0; //電機(jī)1、2輸出
- int pwm_data3=0,pwm_data4=0; //電機(jī)3、4輸出
- W1=((forward_or_back)*X_speed*2-(right_or_left)*Y_speed*2-W*W_right_or_left*W_speed-L*W_speed)/R; //矩陣運算得出W1,W2,W3,W4
- W2=((forward_or_back)*X_speed*2+(right_or_left)*Y_speed*2-W*W_right_or_left*W_speed-L*W_speed)/R;
- W3=((forward_or_back)*X_speed*2-(right_or_left)*Y_speed*2+W*W_right_or_left*W_speed+L*W_speed)/R; //此處強(qiáng)烈建議參考文件夾中的論文中的
- W4=((forward_or_back)*X_speed*2+(right_or_left)*Y_speed*2+W*W_right_or_left*W_speed+L*W_speed)/R; //我打紅圈的逆運動學(xué)公式,可能加減符號有問題!
-
- if(W1>0)motor1_Direction=0;else motor1_Direction=1;//0為正轉(zhuǎn),1為反轉(zhuǎn)
- if(W2>0)motor2_Direction=0;else motor2_Direction=1;
- if(W3>0)motor3_Direction=0;else motor3_Direction=1;
- if(W4>0)motor4_Direction=0;else motor4_Direction=1;
-
- pwm_data1=2*abs(W1); //pwm為算出的占空比值
- pwm_data2=2*abs(W2);
- pwm_data3=2*abs(W3);
- pwm_data4=2*abs(W4);
- if(pwm_data1<0)pwm_data1=0;if(pwm_data1>75)pwm_data1=75; //限值,萬一算出來的值超過了你最大PWM允許的值需要限值的
- if(pwm_data2<0)pwm_data2=0;if(pwm_data2>75)pwm_data2=75; //我的是75,你的根據(jù)你的PWM思路自己掌握
- if(pwm_data3<0)pwm_data3=0;if(pwm_data3>75)pwm_data3=75;
- if(pwm_data4<0)pwm_data4=0;if(pwm_data4>75)pwm_data4=75;
- //電機(jī)的正反轉(zhuǎn)接線能否正確,靠你自己啦!!加油!!
復(fù)制代碼
所有資料51hei提供下載:
麥克納姆輪最簡單控制資料.zip
(2.26 MB, 下載次數(shù): 567)
2018-5-20 03:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|