最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

技術(shù)干貨 | Matlab機(jī)器人工具箱—機(jī)器人的建立、繪制與正逆運(yùn)動(dòng)學(xué)

2023-04-24 15:16 作者:BFT白芙堂機(jī)器人  | 我要投稿

文 | BFT機(jī)器人

01


引言


很多小伙伴在初學(xué)機(jī)器人學(xué)的時(shí)候,面對(duì)大量的概念和復(fù)雜的公式,往往不知道從何開(kāi)始入手。一味的啃機(jī)器人學(xué)的概念和公式枯燥又無(wú)味,堅(jiān)持不了幾天就從入門(mén)到放棄一條龍走完了。
堅(jiān)持下去的動(dòng)力之一就是能盡快看到自己的學(xué)習(xí)成果,而MATLAB機(jī)器人工具箱就是非常簡(jiǎn)單的機(jī)器人平臺(tái)快速搭建工具。
本文主要介紹如何使用matlab工具箱建立機(jī)器人模型,并對(duì)其進(jìn)行繪制。這里使用的RTB工具箱10.2版本,不同版本間代碼風(fēng)格可能會(huì)有差異,因此請(qǐng)注意工具箱的使用版本。



02


rtbdemo


rtbdemo是工具箱自帶的一個(gè)歷程腳本,在命令行窗口輸入:



就會(huì)蹦出來(lái)一個(gè)GUI界面:


圖片


如字面意思,左邊一列是通用函數(shù)的例子(如:旋轉(zhuǎn),平移,軌跡等);中間主要是機(jī)械臂的基礎(chǔ)函數(shù),右邊為移動(dòng)機(jī)器人的一些歷程。這些功能都寫(xiě)的很清楚了,都可以隨便點(diǎn)點(diǎn)看,會(huì)很有意思。


本博客主要專注于機(jī)械臂的搭建和使用,因此會(huì)對(duì)前兩列的函數(shù)進(jìn)行展開(kāi)介紹。



03


機(jī)器人的建立


以經(jīng)典的4軸機(jī)械臂Scara為例(因?yàn)榧扔修D(zhuǎn)動(dòng)關(guān)節(jié)又有移動(dòng)關(guān)節(jié)),介紹一下機(jī)械臂建立的步驟,首先上代碼:



運(yùn)行這段代碼,會(huì)出現(xiàn):


圖片


OK,現(xiàn)在可以感受下成果了。拖動(dòng)左邊的q1—q4就可以看到建立的機(jī)器人動(dòng)起來(lái)了!


說(shuō)明:q1—q4右邊的數(shù)值為角度制,xyz為工具坐標(biāo)系在世界坐標(biāo)系的位置,rpy表示相對(duì)世界坐標(biāo)系的旋轉(zhuǎn),定義可參見(jiàn):


https://blog.csdn.net/lyhbkz/article/details/83542248


代碼解析:


單個(gè)Link的解釋


theta ? ? ?d ? ? ? ?a ? ? ? ?alpha L(1)=Link([ ?0 ? ? ? ? d1 ? ? ?a1 ? ? ?alpha1]); L(1).qlim=[-pi,pi];L(2)=Link([ ?0 ? ? ? ? d2 ? ? ?a2 ? ? ?alpha2]); L(2).qlim=[-pi,pi]; L(2).offset=pi/2;L(3)=Link([ ?0 ? ? ? ? d3 ? ? ?a3 ? ? ?alpha3]); L(3).qlim=[-pi,pi];% 移動(dòng)關(guān)節(jié)需要特別指定關(guān)節(jié)類型--jointtypeL(4)=Link([theta4 ? ? ? 0 ? ? ?a4 ? ? ?alpha4]); L(4).qlim=[0,180]; L(4).jointtype='P';



Link函數(shù)是根據(jù)DH參數(shù)建立連桿,其中包含了關(guān)節(jié)的信息,DH的輸入順序見(jiàn)代碼;


qlim指定關(guān)節(jié)極限,注意,工具箱中的移動(dòng)關(guān)節(jié)變量不允許有負(fù)值;


jointtype指定關(guān)節(jié)類型,默認(rèn)為轉(zhuǎn)動(dòng)關(guān)節(jié),L(4).jointtype='P’意味著第四根link是由移動(dòng)關(guān)節(jié)連接的;


offset為關(guān)節(jié)初始值的偏置。這里要注意的是,定義好關(guān)節(jié)類型后,相應(yīng)的變量必須為0,初值必須由offset定義,例如,關(guān)節(jié)2為轉(zhuǎn)動(dòng)關(guān)節(jié),那么L(2)的theta必須為0,但是我們又希望初始狀態(tài)下關(guān)節(jié)2能有一個(gè)偏置,那么就通過(guò) L(2).offset=pi/2;來(lái)實(shí)現(xiàn)。


另外這里還有一個(gè)常用的基于改進(jìn)的DH建立模型的方法,程序中沒(méi)有說(shuō)明,格式為:



文章附錄->六軸機(jī)器人改進(jìn)的DH方法demo中為關(guān)于此用法的demo。


以上為建立連桿時(shí)常用的函數(shù),但工具箱對(duì)link的定義遠(yuǎn)不至此,如有更多需求,可在命令行窗口輸入:



來(lái)查看官方幫助文檔,說(shuō)到這里不得不提一句,學(xué)習(xí)無(wú)論是機(jī)器人工具箱還是matlab基礎(chǔ)的學(xué)習(xí),help函數(shù)都非常有用!


建立機(jī)器人整體的解釋



L為剛剛建立好的四根link,‘name’為可選項(xiàng),可以不加,就是給機(jī)器人取個(gè)名字,看它骨骼驚奇,這里就叫它‘Scara’啦。


同樣的,SerialLink函數(shù)還有其他的可選則項(xiàng)在此不一一介紹,欲了解則:



這條語(yǔ)句就建立了一個(gè)叫Scara的機(jī)器人類型的對(duì)象,下面就可以對(duì)他操作了。



具體含義為,把我們的Scara基部沿著z軸平移305mm,工具坐標(biāo)系則以最后一個(gè)坐標(biāo)為基礎(chǔ),沿z方向平移100mm。


transl函數(shù)涉及到工具箱中對(duì)旋轉(zhuǎn)、平移以及齊次坐標(biāo)的變換,可參考:


https://blog.csdn.net/weixin_43502392/article/details/105468060



字面意思,對(duì)機(jī)器人進(jìn)行示教。



04


繪制


上一節(jié)已經(jīng)介紹了teach()函數(shù),本節(jié)將簡(jiǎn)要介紹一下plot函數(shù)。


在上述代碼中加入:



即可繪制機(jī)器人關(guān)節(jié)變量為[pi/6 0 pi/3 150]時(shí)的機(jī)器人狀態(tài):


圖片


如果joint是一個(gè)數(shù)組,如:



則會(huì)繪制機(jī)器人運(yùn)動(dòng)的動(dòng)畫(huà),其中joint的列數(shù)必須和關(guān)節(jié)數(shù)目相同


其中,’jointdiam‘設(shè)置關(guān)節(jié)的圓柱體直徑的大小,‘fps’**設(shè)置繪制動(dòng)畫(huà)的幀率,,'trail’會(huì)繪制出末端的軌跡


更多plot函數(shù)的可選項(xiàng),照舊help:



有時(shí)候需要像博主一樣把結(jié)果展示給別人看,因此我把繪制動(dòng)圖的程序放在了附錄-> 繪制動(dòng)圖中,供參考。


更多關(guān)于可視化的使用方法將在機(jī)器人軌跡規(guī)劃一章中進(jìn)行介紹。



05


正運(yùn)動(dòng)學(xué)



傻瓜式操作,輸入關(guān)節(jié)角度,輸出SE3類的齊次變換矩陣



06


逆運(yùn)動(dòng)學(xué)



T為我們剛剛正解得到的齊次變換矩陣,輸出為關(guān)節(jié)向量。


常用可選項(xiàng):


‘mask’,M: mask vector (6x1) that correspond to translation in X, Y and Z, and rotation about X, Y and Z respectively.這里Scara機(jī)器人只有四個(gè)自由度,在x,y兩個(gè)方向的旋轉(zhuǎn)不存在自由度,因此為[1 1 1 0 0 1];


’q0’,Q為求解提供一個(gè)關(guān)節(jié)初值,因?yàn)閿?shù)值法逆解可能不會(huì)收斂到想要的構(gòu)型,提供一個(gè)初值,可以增大得到我們想要構(gòu)型的概率。


’lambda’,L :initial value of lambda (default 0.1) 數(shù)值解法的步長(zhǎng),如果求解失敗,可以減小步長(zhǎng)再嘗試,當(dāng)然減小步長(zhǎng)意味著求解時(shí)間更長(zhǎng);


’tol’,T容許誤差,精度要求不高的話可以適當(dāng)調(diào)大一點(diǎn),默認(rèn)為1e^-10

’ilimit’,L迭代的最大次數(shù),求解失敗時(shí)可以適當(dāng)增大重新嘗試。


’transpose’,A迭代時(shí)使用雅克比的轉(zhuǎn)置代替?zhèn)文?,關(guān)于這兩種方法的異同和思想,可參考下面推薦的知乎鏈接。


其他可選項(xiàng)有需求可參考



Note:


令人頭疼的逆解,在matlab工具箱里也是傻瓜操作。但這里是數(shù)值法,僅能求解一組解,多解情況考慮不到,且求解容易失敗。


進(jìn)行軌跡規(guī)劃時(shí)也容易跳躍,所以熟悉值后還是自己寫(xiě)逆運(yùn)動(dòng)學(xué)的解析解吧。另外關(guān)于工具箱數(shù)值解法的解析,可以看知乎上的回答:


https://www.zhihu.com/question/41673569?sort=created




微分運(yùn)動(dòng)學(xué)(求雅克比矩陣)



繼續(xù)傻瓜操作。


輸入關(guān)節(jié)角,輸出6xN的雅克比矩陣,N為機(jī)械臂的自由度數(shù),這里N為4。


有時(shí)候需要求雅克比矩陣的逆或偽逆,順便一提matlab矩陣求逆和偽逆的函數(shù):




07


總結(jié)


本文主要介紹了matlab機(jī)器人工具箱一些基礎(chǔ)函數(shù)的使用方法,主要包括機(jī)械臂的建立,繪圖,以及基礎(chǔ)的運(yùn)動(dòng)學(xué)方法。


篇幅和精力有限,一些函數(shù)的擴(kuò)展介紹僅包括高頻使用的內(nèi)容,如果需要用到一些沒(méi)有列舉到的方法,找matlab的help文檔即可。


后面會(huì)繼續(xù)更新軌跡規(guī)劃,動(dòng)力學(xué)相關(guān)的一些用法。



08


附錄


六軸機(jī)器人改進(jìn)的DH方法demo



圖片


  • clear ; clc; close all;% 機(jī)器人各連桿參數(shù)值d1 = 670;d2 = 0;d3 = 0;d4 = 1280;d5 = 0;d6 = 215;
    a1 = 0;a2 = 312;a3 = 1075;a4 = 225;a5 = 0;a6 = 0;
    alpha1 = 0 / 180 * pi;alpha2 = -90 / 180 * pi;alpha3 = 0 / 180 * pi;alpha4 = -90 / 180 * pi;alpha5 = 90 / 180 * pi;alpha6 = -90 / 180 * pi;% 建立連桿DH參數(shù)(修正的DH)L(1)=Link([0 d1 a1 alpha1], 'modified'); L(1).qlim=[-pi,pi];L(2)=Link([0 d2 a2 alpha2], 'modified'); ?L(2).qlim=[-pi,pi];L(2).offset = -pi/2;L(3)=Link([0 d3 a3 alpha3], 'modified'); L(3).qlim=[-pi,pi];L(4)=Link([0 d4 a4 alpha4], 'modified'); L(4).qlim=[-pi,pi];L(5)=Link([0 d5 a5 alpha5], 'modified'); L(5).qlim=[-pi,pi];L(6)=Link([0 d6 a6 alpha6], 'modified'); L(6).qlim=[-pi,pi];% 定義機(jī)器人FANUC=SerialLink(L(1:6),'name','FANUC');FANUC.tool = transl(0,0,100);FANUC.teach();



繪制動(dòng)圖



版權(quán)聲明:本文為CSDN博主「JY.G」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。


原文鏈接:

https://blog.csdn.net/weixin_43502392/article/details/105447785



更多精彩內(nèi)容請(qǐng)關(guān)注公眾號(hào):BFT機(jī)器人
版權(quán)歸BFT機(jī)器人所有,如需轉(zhuǎn)載請(qǐng)與我們聯(lián)系。若您對(duì)該文章內(nèi)容有任何疑問(wèn),請(qǐng)與我們聯(lián)系,將及時(shí)回應(yīng)。


技術(shù)干貨 | Matlab機(jī)器人工具箱—機(jī)器人的建立、繪制與正逆運(yùn)動(dòng)學(xué)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
德化县| 临猗县| 肇州县| 垣曲县| 凤翔县| 吉隆县| 象州县| 石门县| 长丰县| 健康| 沾益县| 广南县| 沂水县| 右玉县| 水城县| 漳浦县| 玛曲县| 新密市| 平乡县| 富平县| 长乐市| 崇信县| 玉山县| 太保市| 墨竹工卡县| 梁山县| 罗城| 柘荣县| 炉霍县| 兴文县| 藁城市| 广德县| 灵川县| 夏河县| 滦南县| 富阳市| 鹿邑县| 金川县| 科尔| 育儿| 松阳县|