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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器人原理与实践(三)】六轴机械臂正逆解控制

發(fā)布時間:2024/3/24 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器人原理与实践(三)】六轴机械臂正逆解控制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 3.1 空間轉(zhuǎn)換矩陣的理解
      • 3.1.1平移變換
      • 3.1.2旋轉(zhuǎn)變換
    • 3.2 D-H參數(shù)法
    • 3.3 建立機械臂模型
      • 3.3.1 機械臂模型介紹
      • 3.3.2 使用Matlab進行示教仿真
    • 3.4 機器人運動學(xué)
      • 3.4.1 機器人正運動學(xué)
      • 3.4.2機器人逆運動學(xué)
    • 3.5 機械臂運動過程分析
    • 3.6 本章小結(jié)

本章針對機械臂的運動學(xué)進行建模分析。機械臂運動學(xué)模型反映的是個關(guān)節(jié)的角度與執(zhí)行器末端位姿之間的映射關(guān)系。在工業(yè)過程中需要考慮的根據(jù)期望位姿推導(dǎo)關(guān)節(jié)角度(機械臂逆解),以及根據(jù)現(xiàn)有的關(guān)節(jié)角度推導(dǎo)末端執(zhí)行器位姿(機械臂正解)。

3.1 空間轉(zhuǎn)換矩陣的理解

3.1.1平移變換

3.1.2旋轉(zhuǎn)變換

除了位置之外,還需要對剛體的指向,即姿態(tài)進行描述。而這也是旋轉(zhuǎn)矩陣最本質(zhì)的來源,即來源于 坐標系的旋轉(zhuǎn),這一部分理解不好或是理解不透徹,會導(dǎo)致此后面對各種形式的旋轉(zhuǎn)時出現(xiàn)混亂,所以公式將進行詳細的表述。

描述姿態(tài)的方式就是為剛體建立一個固連于剛體的標準正交坐標系,并由 其相對于參考坐標系的 單位向量 在參考坐標系中的描述 來表示。如上圖所示,剛體的局部固連參考系為o-xyz,其局部固連參考系坐標系的單位向量為(x,y,z),而這局部坐標系的單位向量在參考坐標系 O?xyz 中的表示為:

可以進行進一步的整理,即上式等價于:

最后一個矩陣就是兩個坐標系基之間的關(guān)系,即兩個坐標系之間的轉(zhuǎn)換關(guān)系,將這個矩陣定義為旋轉(zhuǎn)矩陣

結(jié)合上面兩種變換可以得到三維空間變換的一般形式:

用這個4X4的矩陣就可以描述四個機械臂末端相對于機械臂位置的變換,而當你將機械臂的起始坐標設(shè)置為(0,0,0)你就可以直接通過上述矩陣確定機械臂的末端位姿。(px,py,pz)將直接反應(yīng)機械臂末端所直接對應(yīng)的坐標。而n,o,a將直接反應(yīng)機械臂末端坐標系相對于機械臂基座坐標系所發(fā)生的的旋轉(zhuǎn)。

3.2 D-H參數(shù)法

D-H參數(shù)法是Denavit和Hartenberg在他們1955年提出的一種機器人的建模方法。該方法看似簡單,但是通用性很強,雖然年代久遠,但仍然是推導(dǎo)機器人運動學(xué)方程的標準方法。
機械臂通常有多個關(guān)節(jié)組成。D-H參數(shù)法在這些關(guān)節(jié)處以一定的規(guī)則建立參考,然后找到兩兩相鄰的關(guān)節(jié)坐標系之間的轉(zhuǎn)換關(guān)系,就是說在建立了坐標系的約束下,有限次的平移的旋轉(zhuǎn)運動可以使用一個齊次矩陣表示這種轉(zhuǎn)換關(guān)系。只要將相應(yīng)的轉(zhuǎn)換矩陣相乘,就可以得到任意兩個關(guān)節(jié)坐標系的位置關(guān)系。在實際應(yīng)用中,僅僅需要第一關(guān)節(jié)與最后一個關(guān)節(jié)的轉(zhuǎn)換關(guān)系,就可在首關(guān)節(jié)確定的情況下確定末端執(zhí)行器位姿。

以上圖為例從關(guān)節(jié)n+1到關(guān)節(jié)n+2:
繞z軸轉(zhuǎn)θ_(n+1),使x_n軸和x_(n+1)軸相互平行。
延z軸平移d_(n+1),使x_n軸和x_(n+1)軸共線。
延x軸平移a_(n+1),使x_n軸和x_(n+1)軸原點重合。
z_n軸繞x_(n+1)軸旋轉(zhuǎn)旋轉(zhuǎn)α_(n+1)角度,使z_n z_(n+1)重合。
相鄰坐標系之間的變換都可以遵循以上步驟:
繞z軸轉(zhuǎn)θ_(n+1):

延z軸平移d_(n+1):

延x軸平移a_(n+1):

z_n軸繞x_(n+1)軸旋轉(zhuǎn)旋轉(zhuǎn)α_(n+1)角度:

總變換矩陣為以上矩陣按順序相乘

這就是任意相鄰坐標系之間轉(zhuǎn)換矩陣的通式。根據(jù)上述描述可以很容易的發(fā)現(xiàn),使用D-H參數(shù)法建立機械臂運動學(xué)方程,關(guān)鍵在于要根據(jù)具體的機械臂建立合適點的關(guān)節(jié)坐標系。建立這樣的一個關(guān)節(jié)坐標系需要四個關(guān)鍵參數(shù),即θ,d,a,α, 這些參數(shù)就是機械臂的D-H參數(shù),我們也可以根據(jù)這些參數(shù)使用Matlab進行相關(guān)的仿真。

3.3 建立機械臂模型

3.3.1 機械臂模型介紹


這是一個簡單的六軸機械臂

圖3.5 簡化圖片

經(jīng)過測量以后得到機械臂的D-H參數(shù)表:

表格 3.1 D-H參數(shù)表

序號θdaα
0-1θ1580pi/2
1-2θ2+pi/20550
2-3θ30550
3-4θ40550

使用Matlab 機器人工具箱構(gòu)建仿真
L(1) = Link([ 0, d(1), aa(1), alpha(1),0,offset(1) ]);
L(2) = Link([ 0, d(2), aa(2), alpha(2) ,0,offset(2) ]);
L(3) = Link([ 0, d(3), aa(3), alpha(3),0,offset(3) ]);
L(4) = Link([ 0, d(4), aa(4), alpha(4),0,offset(4) ]);

結(jié)合表3.1與公式2.4結(jié)合Matlab得到A1-A6所有的轉(zhuǎn)換矩陣,與總的轉(zhuǎn)換矩陣:


那么該機械臂的正運動學(xué)方程即為以上4個矩陣按順序乘積,由于結(jié)構(gòu)太過于復(fù)雜這里不直接列出了A04=A01A12A23*A34;

在得到旋轉(zhuǎn)矩陣之后,根據(jù)以下公式就可求出末端執(zhí)行器的位姿

這里有四個旋轉(zhuǎn)角,在D-H參數(shù)已知的情況下,該運動學(xué)方程的計算結(jié)果就是機械臂末端相對機械臂底端坐標系的位姿矩陣。

3.3.2 使用Matlab進行示教仿真

3.4 機器人運動學(xué)

3.4.1 機器人正運動學(xué)

關(guān)于機械臂的正運動學(xué)問題,可以調(diào)用Robotics工具箱中的fkine函數(shù)進行求解。函數(shù)調(diào)用的一般形式為T=R.fkine{Q},其中R表示機械臂模型,T為前向運動的正解,Q為機械臂四個關(guān)節(jié)的角度值。
取Q1=[pi/5,-pi/3.pi/2.-pi/4],帶入fkine函數(shù),或者直接帶入公式1計算的矩陣的到一個齊次變換矩陣如下:
T =

-1 0 0 -1300 0 -1 00 -1 0 1130 0 0 1

可以得到仿真圖像:


根據(jù)得到的圖像結(jié)合實際可以確定,我們做出的正向運動學(xué)仿真大致是正確的。

3.4.2機器人逆運動學(xué)

[4]我們已經(jīng)看到了前向運動學(xué)問題。逆運動學(xué)問題更有趣,其解決方案更有用。在位置層面,問題表述為:“考慮到機器人手部的理想位置,所有機器人關(guān)節(jié)的角度必須是什么?”。人類一直在解決這個問題,甚至沒有想到它。當你早上吃麥片時,你只需伸手拿起勺子。你不會想,“我的肩膀需要這樣做,我的肘部需要這樣做,等等。” 下面我們將看看大多數(shù)機器人如何解決這個問題。我們將從一個非常簡單的例子開始:
將機械臂的末端指向(-130,0,113)
對于機器人逆運動學(xué)的問題同樣可以使用工具箱中的ikine函數(shù)解決這個問題。
可以在指定轉(zhuǎn)化函數(shù)p的情況下輸入,得到所有關(guān)節(jié)的角度向量:
q=bot.ikine(p,‘mask’,[1 1 1 1 0 0])
figure(2);
bot.plot(q)

p =

-1 0 0 -1300 0 -1 00 -1 0 1130 0 0 1

q =
0.0000 0.1111 1.0963 0.6225

當然只用MATLAB是沒有用的我們必須使用可以在開發(fā)板上運行的語言重新實現(xiàn)這樣的效果。
這樣的逆解問題本質(zhì)上其實是解方程的問題,我們可以將上面的問題轉(zhuǎn)換為:
我們需要達到的效果是已知x,y,z(機械臂末端坐標),我們需要計算出th1,th2,th3,th4
通過三個算式四個未知數(shù)顯然是不太可能的,所以可以指定出th4也就是末端角度以后解算下面的方程。

eq1=75*sin(th4)*(cos(th1)*sin(th2)*sin(th3)-cos(th1)*cos(th2)*cos(th3)) -75*cos(th4)*(cos(th1)*cos(th2)*sin(th3) + cos(th1)*cos(th3)*sin(th2)) - 55*cos(th1)*sin(th2) - 55*cos(th1)*cos(th2)*sin(th3) - 55*cos(th1)*cos(th3)*sin(th2)==x;eq2= 75*sin(th4)*(sin(th1)*sin(th2)*sin(th3) - cos(th2)*cos(th3)*sin(th1)) - 75*cos(th4)*(cos(th2)*sin(th1)*sin(th3) + cos(th3)*sin(th1)*sin(th2)) - 55*sin(th1)*sin(th2) - 55*cos(th2)*sin(th1)*sin(th3) - 55*cos(th3)*sin(th1)*sin(th2)==y;eq3= 55*cos(th2) + 55*cos(th2)*cos(th3) - 55*sin(th2)*sin(th3) + 75*cos(th4)*(cos(th2)*cos(th3) - sin(th2)*sin(th3)) - 75*sin(th4)*(cos(th2)*sin(th3) + cos(th3)*sin(th2)) + 58==z;[th1,th2,th3] = solve(eq1,eq2,eq3,th1,th2,th3);

基于這樣的方程解算通過python實現(xiàn):

def changeto(x,y,z,th4,pwm):th4=th4*3.14/180def solve_function(unsolved_value):th1,th2,th3=unsolved_value[0],unsolved_value[1],unsolved_value[2]return [75*sin(th4)*(cos(th1)*sin(th2)*sin(th3) - cos(th1)*cos(th2)*cos(th3)) - 75*cos(th4)*(cos(th1)*cos(th2)*sin(th3) + cos(th1)*cos(th3)*sin(th2)) - 55*cos(th1)*sin(th2) - 55*cos(th1)*cos(th2)*sin(th3) - 55*cos(th1)*cos(th3)*sin(th2)-x,75*sin(th4)*(sin(th1)*sin(th2)*sin(th3) - cos(th2)*cos(th3)*sin(th1)) - 75*cos(th4)*(cos(th2)*sin(th1)*sin(th3) + cos(th3)*sin(th1)*sin(th2)) - 55*sin(th1)*sin(th2) - 55*cos(th2)*sin(th1)*sin(th3) - 55*cos(th3)*sin(th1)*sin(th2)-y,55*cos(th2) + 55*cos(th2)*cos(th3) - 55*sin(th2)*sin(th3) + 75*cos(th4)*(cos(th2)*cos(th3) - sin(th2)*sin(th3)) - 75*sin(th4)*(cos(th2)*sin(th3) + cos(th3)*sin(th2)) + 58-z,]solved=fsolve(solve_function,[0, 0, 0])solved=solved*180/3.14 print(solved)

3.5 機械臂運動過程分析

機械臂的運動過程,也就是舵機驅(qū)動關(guān)節(jié)轉(zhuǎn)動的過程。過程如下:

(1)通過程序設(shè)置初始化各個脫機狀態(tài)。
(2)各個舵機轉(zhuǎn)動一定角度,使得長臂、斷臂和機械臂末端都處于水平位置,整個過程中 號舵機旋轉(zhuǎn)一定角度控制機械爪處于打開狀態(tài)。
(3)2號舵機旋轉(zhuǎn)一定角度,使長臂處于垂直狀態(tài),同時機械爪關(guān)閉。
(4)3號關(guān)節(jié)旋轉(zhuǎn)一定角度,使斷臂穿衣水平狀態(tài),通過機械爪打開。
(5)關(guān)閉機械爪。
(6)使機械臂回到初始狀態(tài)

3.6 本章小結(jié)

本章首先進行連桿坐標,使用并分析了 D-H 模型,并使用 MatLab 軟件進行了正反解的驗證,分析了機械臂運動學(xué)正逆解,并給出了仿真圖。通過Matlab計算出的算式直接應(yīng)用到python中,給出了在python中的正逆解算法。

總結(jié)

以上是生活随笔為你收集整理的【机器人原理与实践(三)】六轴机械臂正逆解控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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