劉卓遠,李林升
(1.南華大學(xué) 機械工程學(xué)院,湖南 衡陽 421001;2.上海電機學(xué)院 電氣學(xué)院,上海 201306)
在農(nóng)業(yè)現(xiàn)代化的過程中,農(nóng)業(yè)機器人是必不可少的推動者,因此對農(nóng)業(yè)機器人的研究已經(jīng)成為農(nóng)業(yè)領(lǐng)域的最大研究熱點。果實收獲機器人作為實現(xiàn)農(nóng)業(yè)自動化的一種設(shè)備,實現(xiàn)對其機械臂的精準(zhǔn)調(diào)控是重點,也是提高生產(chǎn)效率、改善產(chǎn)品品質(zhì)的一種方式[1]。
針對機械臂的精準(zhǔn)調(diào)控,人們進行了大量的研究,當(dāng)下研究較多的有以卡爾曼濾波反饋調(diào)節(jié)的機械臂模型,以DSP為控制器設(shè)計控制系統(tǒng);其次就是用單片機控制電機和舵機驅(qū)動電路,完成機械臂的抓取過程;還有一種基于微機控制的機械臂控制系統(tǒng)。上述方法都能較好地實現(xiàn)對機械臂的運動控制,但是運動精度和響應(yīng)效率不是那么理想[2]。
針對以上分析,本文選用意法半導(dǎo)體公司的STM32F103作為主控制器,關(guān)節(jié)姿態(tài)信息檢測器選用陀螺儀傳感器,關(guān)節(jié)的運動控制采用舵機驅(qū)動模塊,以上三部分構(gòu)成了機械臂運動單元的硬件控制系統(tǒng)[3]。機械臂運動單元的軟件部分采用KeiluVision4,將陀螺儀采集的關(guān)節(jié)狀態(tài)參數(shù)作為反饋參數(shù),傳遞給運動控制模塊,進行預(yù)估機械臂的運動狀態(tài),實現(xiàn)對機械臂運動過程中的偏差調(diào)控,這樣從硬件和軟件兩個方面保證了機械臂控制系統(tǒng)的閉環(huán)控制。
1機械臂正運動學(xué)分析
D-H參數(shù)是一個用四個參數(shù)表達兩對關(guān)節(jié)連桿之間位置角度關(guān)系的機械臂數(shù)學(xué)模型和坐標(biāo)系確定系統(tǒng)。它通過限制原點位置和X軸的方向,人為減少了兩個自由度,因此它只需要用四個參數(shù)即可表達關(guān)節(jié)之間原本是六自由度的坐標(biāo)變換[4]。
確定坐標(biāo)系,對于每個關(guān)節(jié)都必須指定一個Z軸和X軸。指定Z軸,如果關(guān)節(jié)是旋轉(zhuǎn)的,則Z軸位于按右手規(guī)則旋轉(zhuǎn)的方向。繞Z軸的旋轉(zhuǎn)角是關(guān)節(jié)的變量;如果關(guān)節(jié)是滑動關(guān)節(jié),則Z軸為沿直線運動的方向。沿Z軸的連桿長度d是關(guān)節(jié)變量。
指定X軸,當(dāng)兩關(guān)節(jié)不平行或相交時,Z軸通常是斜線,但總有一條距離最短的公垂線,它正交于任意兩條斜線。在公垂線方向上定義本地參考坐標(biāo)系的軸。如果an表示Zn-1之間的公垂線,則Xn的方向?qū)⒀豠n。
當(dāng)然也有特殊情況。當(dāng)兩關(guān)節(jié)的Z軸平行,就會有無數(shù)條公垂線。此時可挑選與前一關(guān)節(jié)的公垂線共線的一條,可簡化模型;兩關(guān)節(jié)相交,它們之間沒有垂線,這時可將垂直于兩條軸線構(gòu)成的平面的直線定義為X軸,可簡化模型。
給每個關(guān)節(jié)都附上對應(yīng)坐標(biāo)系之后,如圖1所示。
確定好坐標(biāo)系后,可以用更簡潔的方法來表示D-H四個參數(shù):
Link length(連桿長度)ai-1:沿Xi-1的Zi-1到Zi的距離。
Link twist(連桿扭轉(zhuǎn))αi-1:Zi相對于Zi-1繞Xi-1旋轉(zhuǎn)的角度。
Link offset(連桿偏移)di:沿Zi的Xi-1到Xi的距離。
Joint angle(關(guān)節(jié)轉(zhuǎn)角)θi:Xi相對于Xi-1繞Zi旋轉(zhuǎn)的角度。
接下來寫出機械臂的D-H參數(shù)表,如表1所示。
表1 D-H參數(shù)表
根據(jù)公式:
(1)
依次計算每個關(guān)節(jié),最后得到機械臂的正運動學(xué)公式:
(2)
得到各關(guān)節(jié)的旋轉(zhuǎn)矩陣后即可根據(jù)下面公式得到末端的坐標(biāo):
(3)
逆運動學(xué)是決定要達成所需要的姿勢所要設(shè)置的關(guān)節(jié)可活動對象的參數(shù)的過程。對于機械臂而言,就是給出夾持器的位置和朝向后求每個關(guān)節(jié)的旋轉(zhuǎn)角度。為了簡化模型,去掉下方云臺的旋轉(zhuǎn)關(guān)節(jié),這樣就可以在二維的平面上進行運動學(xué)分析[5]。進行逆運動學(xué)分析要進行大量的矩陣運算,先使用幾何法對機械臂進行分析,如圖2所示。
圖2 機械臂幾何分析示意圖
從圖2知機械臂的端點P的坐標(biāo)(x,y),最終由三個部分組成(x1+x2+x3,y1+y2+y3)。其中圖中的θ1,θ2,θ3就是要求解的舵機的角度。α是爪子與水平面的夾角。從圖上看,顯然α=θ1+θ2+θ3。
據(jù)此可以列出下式:
(4)
其中x、y為目標(biāo)物所在坐標(biāo),l1、l2、l3為機械臂的機械結(jié)構(gòu)固有屬性。
為了方便計算,將已知部分處理一下,作整體考慮:
(5)
將m、n代入已有方程,再化簡可得:
l2=(l1cosθ1+m)2+(l0sinθ1+n)2
(6)
通過計算可得:
(7)
上式是一元二次方程的求根公式的形式,其中
(8)
據(jù)此求出θ1,同理求出θ2。如此便可求出三個舵機的角度,然后根據(jù)角度控制舵機即可實現(xiàn)坐標(biāo)位置的控制。
輸入目標(biāo)位置的x,y坐標(biāo)和爪子的俯仰角度,即可計算出目標(biāo)的舵機角度并轉(zhuǎn)到對應(yīng)角度上去。
為了驗證上述分析的正確性,將使用LeArm開源機械手臂進行運動控制實驗。先使用基于PC+STM32運動控制模塊的方法,需要將兩者通過串口聯(lián)接,這個串口用來與電腦上位機通信。
初始化串口,將串口配置為波特率115 200 b/s、8位數(shù)據(jù)位、1位停止位、無校驗位。另外用兩個IO口來控制單線串口的收發(fā)狀態(tài),發(fā)送的指令需要舵機返回數(shù)據(jù),在發(fā)送了指令之后將單線串口設(shè)為接收狀態(tài)。根據(jù)接收到的指令做出對應(yīng)的操作,如圖3所示。
發(fā)送使用輪詢寄存器方法實現(xiàn),接收使用接收中斷。先讓舵機轉(zhuǎn)動,單片機本身具備單線串口通信的功能,STM32上的串口自身可以支持單線通信,底板上設(shè)計有兩線串口轉(zhuǎn)為單線串口的電路。
使用邏輯電路可以簡化程序代碼,同時提高代碼的通用性。和普通的串口通信一樣使用串口,按照通信協(xié)議即可控制總線舵機。函數(shù)組織好指令之后,調(diào)用UART_TX_ENABLE將單線串口設(shè)為發(fā)送模式,然后調(diào)用發(fā)送函數(shù)將數(shù)據(jù)發(fā)送出去,這樣就能實現(xiàn)機械臂的運動控制[6]。機械臂運動控制系統(tǒng)設(shè)計的流程如圖4所示。
圖4 PC+STM32控制模塊的實驗框圖
本文研究LeArm開源機械手臂,整體結(jié)構(gòu)如圖5所示。
圖5 LeArm開源機械手臂
該機器臂為滿足pieper準(zhǔn)則的6—DOF機器臂,為了研究其位置控制,實驗仿真只針對其關(guān)節(jié)2與關(guān)節(jié)3進行研究[7]。該機器人采用改進的D-H參數(shù)進行標(biāo)識,建模之后的結(jié)構(gòu)如圖6所示。
圖6 LeArm開源機械手臂模型圖
通過實驗選擇定義機械臂的起始點、中間點、終止點坐標(biāo),仿真得出其對應(yīng)的初始點位姿、中間點位姿與末端點位姿,如表2所示。
表2 位姿點4×4矩陣表
由于該機器人滿足pieper準(zhǔn)則,因此其逆解可以采用代數(shù)法進行求解,其逆運動學(xué)采用代數(shù)法對其進行求解[8]。在笛卡爾坐標(biāo)系下給定機器人的末端位姿的軌跡圖,如圖7所示。
圖7 笛卡爾坐標(biāo)系下給定機器人的位姿的軌跡圖
由以上仿真結(jié)果分析可得,采用改進后的軌跡規(guī)劃方法能夠縮短整個機械臂的運行時間,并且能夠保證規(guī)劃出來的位移、速度、加速度曲線在整個運動過程中的連續(xù)性和平滑性在一個較理想的范圍內(nèi),從而使得在縮短時間的前提下還能繼續(xù)保證整個機械臂的穩(wěn)定運行。