目錄
一、機(jī)器人選型
二、機(jī)器人DH參數(shù)和正運(yùn)動(dòng)學(xué)
(一)、DH參數(shù)
?(二)、正運(yùn)動(dòng)學(xué)
三、工作空間繪制
四、構(gòu)型分析
五、附錄
一、機(jī)器人選型
????????UR協(xié)作機(jī)器人系列是優(yōu)傲公司的代表產(chǎn)品,也是目前比較通用的產(chǎn)品級(jí)機(jī)械臂。選取UR系列的UR5協(xié)作機(jī)器人,產(chǎn)品參數(shù)如下:
二、機(jī)器人DH參數(shù)和正運(yùn)動(dòng)學(xué)
(一)、DH參數(shù)
????????機(jī)械臂的正運(yùn)動(dòng)學(xué)是把機(jī)械臂的關(guān)節(jié)變量作為自變量,描述機(jī)械臂末端執(zhí)行器的位置和姿態(tài)與機(jī)械臂基座之間的函數(shù)關(guān)系。
????????將各關(guān)節(jié)簡(jiǎn)化為圓柱體,將如下?tīng)顟B(tài)視為初始狀態(tài),用標(biāo)準(zhǔn)DH法建立坐標(biāo)如下:
????????坐標(biāo)系1,2,3,4,5,6是各個(gè)關(guān)節(jié)的坐標(biāo),其中坐標(biāo)系2,3,4,5,6由于Zn-1和Zn?共面而導(dǎo)致坐標(biāo)系偏離實(shí)際關(guān)節(jié)中心(坐標(biāo)系應(yīng)建立在Zn-1 和Zn 的交點(diǎn)處),坐標(biāo)系7是機(jī)械臂末端點(diǎn)的位姿。
????????得到下列DH參數(shù)表:
?????????其中,由機(jī)械臂參數(shù)可得:
?保留?t?heta????變量,將常量代入DH參數(shù)表,即:
?(二)、正運(yùn)動(dòng)學(xué)
????????下面根據(jù)DH表推導(dǎo)UR5機(jī)器人正運(yùn)動(dòng)學(xué)。
????????標(biāo)準(zhǔn)DH法坐標(biāo)系n到n+1的變換矩陣如下:
????????觀察DH參數(shù)表,可以知道α 均為0或±90°,故cos?????α 、sinα 均為0或±1,這里先將其帶入其次變換矩陣,這一步是為了方便后續(xù)編程進(jìn)行符號(hào)運(yùn)算。?
???則有:
?????????利用matlab在畫(huà)布上畫(huà)出機(jī)器人驗(yàn)證DH法推導(dǎo)過(guò)程是否正確,繪制出的機(jī)器人構(gòu)型和模擬運(yùn)動(dòng)符合預(yù)期(完整視頻可見(jiàn)附錄):
三、工作空間繪制
????????將正運(yùn)動(dòng)學(xué)得到的齊次變換矩陣輸入matlab代碼文件中,利用matlab符號(hào)運(yùn)算得出夾具末端位置坐標(biāo)點(diǎn)的計(jì)算公式:
????????為了減少函數(shù)調(diào)用的時(shí)間,可以先將所有點(diǎn)的位置計(jì)算出來(lái),這樣只需調(diào)用一次繪圖函數(shù)即可繪制所有的點(diǎn)。這樣的做節(jié)省的是調(diào)用繪圖函數(shù)的時(shí)間。即使先計(jì)算點(diǎn)的坐標(biāo),算法的時(shí)間復(fù)雜度仍然沒(méi)有下降。
????????實(shí)際上,在Matlab或Pyhton等語(yǔ)言中,調(diào)用庫(kù)函數(shù)或者自帶的矩陣運(yùn)算操作會(huì)比自己寫(xiě)for循環(huán)快得多,因?yàn)閹?kù)函數(shù)和矩陣變換一般會(huì)有更底層語(yǔ)言的代碼支持。
????????利用上述思想,我的做法是使用ndgrid函數(shù)建立網(wǎng)格坐標(biāo),省去for循環(huán)優(yōu)化處理的速度。再使用plot3或scatter3函數(shù)進(jìn)行工作空間繪制。ndgrid是一個(gè)網(wǎng)格坐標(biāo)生成函數(shù),和python的meshgrid異曲同工。對(duì)于傳入的多個(gè)向量,函數(shù)返回由這些向量中的點(diǎn)所構(gòu)成給的網(wǎng)格點(diǎn)的坐標(biāo)。如調(diào)用如下語(yǔ)句:
[x1,x2]=ndgrid([1,2,3],[4,5,6])
????????則函數(shù)會(huì)返回:
????????當(dāng)我們把x1和x2中每個(gè)位置的數(shù)匹配起來(lái)看:
????????會(huì)得到:
?????????我們將Ans展開(kāi)即可得到:分別從數(shù)列1,2,3和數(shù)列4,5,6中各取一個(gè)數(shù)的所有可能情況。故我們可以將六個(gè)角度的范圍傳入ndgrid來(lái)得到所有角度的組合,來(lái)得到角度所有可能的組合。再利用對(duì)矩陣取cos、sin以及加減等操作,得到最終包含所有點(diǎn)的x,y,z坐標(biāo)的向量。
? ? ? ? 使用此方式繪制得到的工作空間如下:
????????上述的優(yōu)化始終改變不了算法的時(shí)間復(fù)雜度,一切的投機(jī)取巧終究還是班門(mén)弄斧,改變不了算法復(fù)雜本質(zhì)。想要加快繪制的速度,除非換個(gè)算法,這里有一個(gè)更快而且能更好的擬合工作空間的算法:蒙特卡洛法。?
?????????當(dāng)我們隨機(jī)地取一定數(shù)量的θ?,當(dāng)取的數(shù)量“足夠多”時(shí),就可以很好得描述工作空間的形狀。顯然這里的“足夠多”可以遠(yuǎn)遠(yuǎn)小于十的九次方? 。相比之前的方法,本方法得到的點(diǎn)云雖然稀疏,但很均勻。更能描述工作空間的形狀。而且算法實(shí)現(xiàn)也很簡(jiǎn)單。當(dāng)取1000個(gè)點(diǎn)時(shí),效果如下:
????????查閱官方的數(shù)據(jù)手冊(cè):UR5機(jī)器人的工作空間是指機(jī)座關(guān)節(jié)周?chē)欢臻g內(nèi)的球形區(qū)域除去機(jī)械臂上方的圓柱形區(qū)域。
?????????觀察上述圖像,可以推斷,如果?θ?很小時(shí),得出的工作空間確實(shí)是一個(gè)球。這里還有一個(gè)問(wèn)題,除去的圓柱形區(qū)域在我們所繪制的空間中沒(méi)有體現(xiàn),這一點(diǎn)將在關(guān)節(jié)構(gòu)型處分析。
? ? ? ? 上述算法的流程圖如下:
????????蒙特卡洛法雖然又快又準(zhǔn),但形態(tài)上卻看不出變化的過(guò)程。暴力枚舉法雖然難以達(dá)到理想的結(jié)果,但每一次的蛻變都會(huì)帶來(lái)形態(tài)上變化。好比生活并不只看結(jié)果,享受過(guò)程又何嘗不是一種快樂(lè)。
四、構(gòu)型分析
?????????對(duì)于UR5機(jī)器人,先只考慮機(jī)器人的第六個(gè)關(guān)節(jié):
?????????由于最后一個(gè)關(guān)節(jié)的旋轉(zhuǎn),它的軌跡是一個(gè)點(diǎn)。
????????接著考慮第五、第六兩個(gè)關(guān)節(jié):
????????上一步中的點(diǎn)繞一個(gè)軸純旋轉(zhuǎn),最后得到的是軌跡是一個(gè)圓形的軌跡線(xiàn)。
????????設(shè)如圖所示P點(diǎn)的坐標(biāo)為初始坐標(biāo),旋轉(zhuǎn)的半徑為r1,則軌跡為:
????????再考慮倒數(shù)第三個(gè)關(guān)節(jié):
????????即一個(gè)圓形線(xiàn)繞著一根平行于該線(xiàn)所在平面的線(xiàn)旋轉(zhuǎn),主視圖如上,最終的軌跡應(yīng)該是一個(gè)帶孔的圓柱:?
? ? ? ? ?其中:
????????最終得到軌跡如下:
?????????考慮倒數(shù)第四個(gè)關(guān)節(jié):
?????????將帶孔圓柱繞著一條平行于帶孔圓柱軸線(xiàn)的直線(xiàn)進(jìn)行旋轉(zhuǎn),這里有兩種可能:
(1)
(2)
? ? ? ? ?情況(1)關(guān)節(jié)在帶孔圓柱內(nèi)部,旋轉(zhuǎn)的結(jié)果是一個(gè)不帶孔的圓柱;
? ? ? ? ?情況(2)關(guān)節(jié)在帶孔圓柱外部,旋轉(zhuǎn)的結(jié)果仍然是一個(gè)帶孔的圓柱
? ? ? ? ?對(duì)于UR5來(lái)說(shuō)這里屬于第二種情況:
? ? ? ? ?有:
????????得到的仍然是帶孔圓柱。
????????再考慮倒數(shù)第五個(gè)關(guān)節(jié),此種情況同上種情況類(lèi)似,但此時(shí)屬于情況(1),故得到是一個(gè)完整的圓柱:
? ? ? ? ?有:
? ? ? ? 再考慮最后一個(gè)關(guān)節(jié),俯視圖:
????????圖中的矩形代表上一環(huán)節(jié)圓柱的側(cè)視圖,這種情況下的俯視圖是一個(gè)矩形繞一個(gè)點(diǎn)進(jìn)行旋轉(zhuǎn),最后得到的結(jié)果應(yīng)該是一個(gè)帶圓柱形通孔的球狀區(qū)域,注意這里并不是一個(gè)標(biāo)準(zhǔn)的球形區(qū)域,因?yàn)楦┮晥D和主視圖的半徑并不一樣:
????????(1)對(duì)于俯視圖:
?????????其中,圓柱形通孔的半徑為:
?????????外圓形的半徑為:
????????(2)對(duì)于主視圖?:
?????????代入?yún)?shù)計(jì)算可得:
????????觀察上述式子可以看到:
????????由于主視圖橫豎近似相等,故可將主視圖看成一個(gè)標(biāo)準(zhǔn)圓形。
????????由于俯視圖內(nèi)外半徑差距極大,故可將俯視圖看出一個(gè)標(biāo)準(zhǔn)的圓形。
????????我認(rèn)為這也是使用Matlab繪制出來(lái)的工作空間看不出空心圓柱的原因。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-775700.html
五、附錄
????????UR5機(jī)器人運(yùn)動(dòng)模擬文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-775700.html
到了這里,關(guān)于GDUT自動(dòng)化創(chuàng)卓機(jī)器人學(xué)課程大作業(yè):機(jī)械臂工作空間繪制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!