引言
本篇為五軸機(jī)械臂的數(shù)值法實(shí)現(xiàn),同時(shí),本方法可應(yīng)用于六軸、七軸手臂的逆解。
數(shù)值法的好處:給定起始與目標(biāo)位姿,能夠自動(dòng)迭代出最優(yōu)解,無多解問題
關(guān)于解析法的實(shí)現(xiàn),可以看我之前的博客:https://blog.csdn.net/qq_43557907/article/details/122707124
本篇文章是記錄我個(gè)人在學(xué)習(xí)時(shí)的一些記錄,如果各位有發(fā)現(xiàn)錯(cuò)誤,麻煩在評(píng)論區(qū)批評(píng)或指出,我會(huì)第一時(shí)間改正,與大家共同學(xué)習(xí),謝謝。
一、牛頓迭代
以下是牛頓迭代的基本公式,具體原理可以去B站搜。
二、構(gòu)建雅可比矩陣
根據(jù)以上思想,
三、求解思路
四、MATLAB實(shí)現(xiàn)
這里只貼出關(guān)鍵部分,不再贅述
% 牛頓迭代求解逆運(yùn)動(dòng)學(xué)
syms theta1 theta2 theta3 theta4 theta5; % 定義變量
theta = [theta1 theta2 theta3 theta4 theta5];
T = roboarm_fkine(theta, alpha, d, a);
F = T - T_new;
f1 = F(1,1);f2 = F(1,2);f3 = F(1,3);f4 = F(1,4);
f5 = F(2,1);f6 = F(2,2);f7 = F(2,3);f8 = F(2,4);
f9 = F(3,1);f10 = F(3,2);f11 = F(3,3);f12 = F(3,4);
f = [f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11;f12];
i = 1;% 迭代次數(shù)
while(i < 1000)
J_k = subs(jacobian(f, theta), theta, theta_k);
f_k = subs(f, theta, theta_k);
theta_k = vpa((theta_k' - pinv(J_k) * f_k)', 4);
i = i + 1;
if(norm(f_k) < 0.0001)
fprintf('Solution has converged');
break;
end
end
五、驗(yàn)證
迭代后得出的角度:
目標(biāo)角度:
可以看見基本吻合。文章來源:http://www.zghlxwxcb.cn/news/detail-532096.html
參考文獻(xiàn)
[1] 張栩曼, 張中哲, 王燕波, 等. 基于空間六自由度機(jī)械臂的逆運(yùn)動(dòng)學(xué)數(shù)值解法[J]. 導(dǎo)彈與航天運(yùn)載技術(shù), 2016 (3): 81-84.
[2] 機(jī)器人學(xué)導(dǎo)論
[3] 牛頓迭代法求解工業(yè)機(jī)械人運(yùn)動(dòng)學(xué)逆解(改進(jìn)DH模型)https://blog.csdn.net/libizhide/article/details/106078575文章來源地址http://www.zghlxwxcb.cn/news/detail-532096.html
到了這里,關(guān)于【MATLAB】五自由度機(jī)械臂運(yùn)動(dòng)學(xué)逆解(數(shù)值法——牛頓迭代)實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!