王文博,李 岸
影響工業(yè)機器人絕對定位精度的因素有很多,大致可以分為三個因素:負載、參數(shù)和環(huán)境,其中參數(shù)的影響因素占到機器人定位誤差的80%以上。因此,為了提高工業(yè)機器人的定位精度,必須盡可能得出準確的運動學參數(shù)。目前廣泛認可的方法有最小二乘法、Levenberg-Marquardt 算法[1]、擴展卡爾曼濾波法、最陡梯度搜索算法等經(jīng)典算法,但都受限于計算量大[2],忽略的誤差因素過多等而不能有效減小機器人的定位誤差。本文采用遺傳算法識別機器人的參數(shù)誤差,利用遺傳算法的進化搜索特性,可以對機器人參數(shù)值進行較準確辨識,滿足機器人的工作要求。
本文研究對象為KUKA KR270R2700 型機器人(見圖1)。
圖1 機器人外形尺寸和運動范圍
設定機器人兩兩相鄰連桿坐標系的運動學變換參數(shù),以ai-1表示連桿的長度,以αi-1表示兩個相鄰坐標系中兩z 軸的夾角,以連桿偏置di表示兩連桿間的最短距離,以關節(jié)轉角θi表示連桿坐標系兩個x 軸的夾角(見表1)。
表1 機器人D-H 參數(shù)
本文分析對象為六自由度機器人,則機器人末端連桿相對于固定基座的轉換矩陣可以表示為:
圖2 遺傳算法運算流程
交叉算子 選用算數(shù)交叉方式可以更好地適應浮點數(shù)編碼。
變異算子 本文選用高斯變異方式以改善算法的局限性。
將遺傳算法通過matlab 軟件實現(xiàn),設置種群內個體數(shù)目N=100,因為六自由度機器人所需辨識的參數(shù)有24 個,所以種群內染色體數(shù)目為24,初始交叉率為0.6,初始變異率為0.2,種群優(yōu)化迭代最大次數(shù)為1 000 代。
筆者對工業(yè)機器人進行預先設定幾何模型參數(shù)的誤差值(見表2)。
表2 預設參數(shù)誤差值
筆者選擇機器人運動空間中的幾組關節(jié)角,將表2 中的預設誤差值與表(1) 中的D-H 參數(shù)值相加作為機器人實際運動學參數(shù)代入式(1) 和式(2),求解出這幾組關節(jié)角分別對應的機器人末端所到達的位置作為實際運動位置。
在運行遺傳算法時,盡可能使適應度函數(shù)趨近于0,使理想位置趨近于實際位置,將識別出來的參數(shù)誤差值與預設誤差值相比較即可驗證算法的正確性[5]。
由迭代圖可知遺傳算法在迭代到200 代左右時適應度函數(shù)就已經(jīng)趨近于0(見圖3),采用遺傳算法識別得到的機器人運動學參數(shù)誤差(見表3)。
表3 遺傳算法識別出的誤差值
圖3 迭代結果
可知,由遺傳算法辨識得到的結果可以使機器人末端位姿趨近于實際位姿,而且遺傳算法辨識出的參數(shù)誤差值與預設參數(shù)誤差值基本一致,證明使用遺傳算法在本課題求解的可行性。
本文通過仿真驗證所建立機器人運動學模型的準確性,使用遺傳算法對推導得到的機器人運動學參數(shù)誤差值進行計算。結果表明,采用遺傳算法對機器人進行參數(shù)辨識是可行的。