matlab计算机械臂素的,机械臂动力学——动力学建模
一、動(dòng)力學(xué)基礎(chǔ)概念
基本動(dòng)力學(xué)模型
建模方法
牛頓-歐拉法
拉格朗日法
連桿質(zhì)量,連桿質(zhì)心位置矢量,連桿質(zhì)心慣性矩陣(通過(guò)動(dòng)力學(xué)參數(shù)識(shí)別獲得)
二、牛頓-歐拉法
運(yùn)動(dòng)外推:向外迭代計(jì)算連桿的角速度、角加速度和線加速度
力外推:計(jì)算作用在連桿質(zhì)心上的慣性力和力矩
力矩內(nèi)推:向內(nèi)迭代計(jì)算關(guān)節(jié)力矩
2.1 運(yùn)動(dòng)向外迭代
2.1.1 剛體線速度和角速度
線速度
坐標(biāo)系{A}為固定,坐標(biāo)系{B}固連在剛體上。
2.1.2 連桿速度
連桿i+1的速度為連桿i的速度加上附加到關(guān)節(jié)i+1上的速度分量。
注意:線速度相對(duì)于一點(diǎn),角速度相對(duì)于一個(gè)物體,因此,"連桿的速度“指連桿坐標(biāo)原點(diǎn)的線速度和連桿的角速度
角速度
連桿i+1的角速度等于連桿i的角速度加上一個(gè)由于關(guān)節(jié)i+1上的角速度引起的分量。
2.2 力向外迭代
2.2.1 牛頓方程(Newton)
用于描述剛體的平動(dòng)。
質(zhì)點(diǎn)的牛頓方程
m為質(zhì)點(diǎn)質(zhì)量,r為矢徑,為加速度,F為質(zhì)點(diǎn)的合力。
平動(dòng)剛體的牛頓方程
剛體平動(dòng)為剛體上每一點(diǎn)速度一致。
為剛體上任一點(diǎn)加速度。
一般運(yùn)動(dòng)剛體的牛頓方程
剛體平動(dòng)為剛體上各點(diǎn)速度不相同。
為剛體質(zhì)心的加速度。
2.2.2 歐拉方程(Euler方程)
繞定點(diǎn)轉(zhuǎn)動(dòng)剛體的Euler方程
w為剛體固連坐標(biāo)系的角速度,為常值矩陣,表示剛體在與剛體固連坐標(biāo)系中對(duì)O點(diǎn)的慣性張量矩。
2.3 力和力矩向內(nèi)迭代
上圖為典型連桿在無(wú)重力狀態(tài)下受力圖,根據(jù)該圖建立力平衡方程和力矩平衡方程。
力平衡方程
為連桿i-1作用在連桿i上的力
力矩平衡方程
為連桿i-1作用在連桿i上的力矩
根據(jù)力平衡方程和附加旋轉(zhuǎn)矩陣可化簡(jiǎn)該公式
迭代方程
按照連桿序號(hào)高到低排序獲得迭代關(guān)系為
2.4 建立動(dòng)力學(xué)方程
2.5 兩連桿動(dòng)力學(xué)方程
假設(shè)連桿質(zhì)量集中在連桿末端,質(zhì)量分別為m 1?和m2?。
連桿質(zhì)心位置矢量
連桿2
連桿1
Matlab建模
% 動(dòng)力學(xué)建模
syms l1 l2 m1 m2 g;
syms q1 q2 dq1 dq2 ddq1 ddq2;
%% 參數(shù)初始化
R{1}=[cos(q1) -sin(q1) 0;sin(q1) cos(q1) 0;0 0 1];
R{2}=[cos(q2) -sin(q2) 0;sin(q2) cos(q2) 0;0 0 1];
R{3}=[1 0 0;0 1 0;0 0 1];
% 坐標(biāo)系原點(diǎn)位移,用P{1}表示坐標(biāo)系1與坐標(biāo)系0原點(diǎn)位置關(guān)系,用P{2}表示坐標(biāo)系2與坐標(biāo)系1原點(diǎn)位置關(guān)系。
P = cell(1,3);
P{1}=[0;0;0];P{2}=[l1;0;0];P{3}=[l2;0;0];
% 每個(gè)連桿質(zhì)心的位置矢量
Pc = cell(1,3);
Pc{1}=[0;0;0];Pc{2}=[l1;0;0];Pc{3}=[l2;0;0];
% 連桿質(zhì)量
m = cell(1,3);
m{2}=m1;
m{3}=m2;
% 慣性張量
I = cell(1,3);
I{2}=[0;0;0];
I{3}=[0;0;0];
% 連桿間角速度和角加速度
w = cell(1,3);dw = cell(1,3);
w{1}=[0;0;0];dw{1}=[0;0;0];% 機(jī)器人底座不旋轉(zhuǎn)
% 連桿坐標(biāo)原點(diǎn)和質(zhì)心加速度
dv = cell(1,3);dvc = cell(1,3);
dv{1}=[0;g;0];% 重力因素
% 關(guān)節(jié)速度和加速度
dq = cell(1,3); ddq = cell(1,3);
dq{2}=[0;0;dq1];dq{3}=[0;0;dq2];
ddq{2}=[0;0;ddq1];ddq{3}=[0;0;ddq2];
% 末端執(zhí)行器沒(méi)有力
f = cell(1,4);n = cell(1,4);
f{4}=[0;0;0];
n{4}=[0;0;0];
%% 建立運(yùn)動(dòng)學(xué)方程
% 外推
for i=1:2 %matlab下標(biāo)從1開(kāi)始
w{i+1}=R{i}.'*w{i}+dq{i+1};
dw{i+1}=R{i}.'*dw{i}+cross(R{i}.'*w{i},dq{i+1})+ddq{i+1};
dv{i+1}=R{i}.'*(cross(dw{i},P{i})+cross(w{i},cross(w{i},P{i}))+dv{i});
dvc{i+1}=cross(dw{i+1},Pc{i+1})+cross(w{i+1},cross(w{i+1},Pc{i+1}))+dv{i+1};
F{i+1}=m{i+1}*dvc{i+1};
N{i+1}=[0;0;0];%假設(shè)質(zhì)量集中,每個(gè)連桿慣性張量為0
end
% 內(nèi)推
for i=3:-1:2
f{i}=R{i}*f{i+1}+F{i};
n{i}=N{i}+R{i}*n{i+1}+cross(Pc{i},F{i})+cross(P{i},R{i}*f{i+1});
end
% 力矩
tau = cell(1,2);
tau{1} = n{2}(3);
tau{2} = n{3}(3);
celldisp(tau)
三、拉格朗日法
拉格朗日法為基于能量的動(dòng)力學(xué)方法。
3.1 動(dòng)能
第i根連桿的動(dòng)能k i k_iki?為連桿質(zhì)心線速度產(chǎn)生動(dòng)能和連桿角速度產(chǎn)生動(dòng)能之和
3.3 構(gòu)建動(dòng)力學(xué)方程
拉格朗日函數(shù)定義為系統(tǒng)的動(dòng)能減去勢(shì)能
操作臂運(yùn)動(dòng)方程為
τ為n x 1力矩矢量,運(yùn)動(dòng)方程代入拉格朗日函數(shù)為
3.4 兩連桿動(dòng)力學(xué)方程
2R機(jī)械臂在處在xy平面內(nèi),重力沿-y方向。
連桿質(zhì)心線速度
連桿1
連桿2
連桿角速度
因質(zhì)量集中,連桿質(zhì)心慣性張量為零矩陣
因此連桿角速度產(chǎn)生動(dòng)能為0,即
連桿動(dòng)能
連桿勢(shì)能
拉格朗日方程
使用運(yùn)動(dòng)方程求力矩
狀態(tài)空間方程
matlab建模
% 質(zhì)量集中,無(wú)慣性矩陣,連桿長(zhǎng)度與質(zhì)心位置重合
syms m1 m2 l1 l2 g
syms q1 q2 q1d q2d q1dd q2dd
syms x1(t) x1d x1dd x2(t) x2d x2dd
x1d=diff(x1,t); x2d=diff(x2,t);
x1dd=diff(x1,t,t); x2dd=diff(x2,t,t);
%質(zhì)量矩陣
M1=diag([m1,m1]);
M2=diag([m2,m2]);
% 速度
V1=[[l1*cos(x1(t)) 0];[l1*sin(x1(t)) 0]]*[x1d;x2d];
V2=[[-l1*sin(x1(t))-l2*sin(x1(t)+x2(t)) -l2*sin(x1(t)+x2(t))];
[l1*cos(x1(t))+l2*cos(x1(t)+x2(t)) l2*cos(x1(t)+x2(t))]]*[x1d;x2d];
% 動(dòng)能
K1=simplify((1/2)*V1.'*M1*V1);
K2=simplify((1/2)*V2.'*M2*V2);
K =K1+K2;
% 勢(shì)能
u1=m1*g*l1*sin(q1);
u2=m2*g*(l1*sin(q1)+l2*sin(q1+q2));
u =u1+u2;
% 拉格朗日方程
L=K-u;
L=subs(L,{x1,x2,x1d,x2d,x1dd,x2dd},{q1,q2,q1d,q2d,q1dd,q2dd});
% 利用運(yùn)動(dòng)方程計(jì)算力矩方程
dLdqd=[diff(L,q1d); diff(L,q2d)];
dLdqd =subs(dLdqd, {q1,q2,q1d,q2d,q1dd,q2dd}, {x1,x2,x1d,x2d,x1dd,x2dd});
ddLdqddt=diff(dLdqd,t);
ddLdqddt= subs(ddLdqddt,{x1,x2,x1d,x2d,x1dd,x2dd},{q1,q2,q1d,q2d,q1dd,q2dd});
dLdq=[diff(L,q1); diff(L,q2)];
% 輸出結(jié)果
syms f
f=simplify(ddLdqddt-dLdq)
四、算法對(duì)比
通過(guò)牛頓歐拉方程導(dǎo)出的逆動(dòng)力算法較拉格朗日方程推導(dǎo)計(jì)算量要少,但實(shí)際上兩者差異在于表示連桿角速度的方式不一致,牛頓歐拉方程采用三維矢量,拉格朗日方程采用3 × 3 3 \times 33×3旋轉(zhuǎn)矩陣導(dǎo)數(shù),因此多余因素造成計(jì)算量增大,若在計(jì)算動(dòng)能時(shí)采用三維角速度矢量描述,則拉格朗日方程可推導(dǎo)處與牛頓歐拉方程相同的形式的逆動(dòng)力方程。
在實(shí)際應(yīng)用中,多軸機(jī)械臂連桿結(jié)合計(jì)算機(jī)建模更適合選用牛頓-歐拉法,手動(dòng)推算下拉格朗日法更加簡(jiǎn)單直觀,但推導(dǎo)多軸機(jī)械臂較為困難。
參考
MATLAB機(jī)器人運(yùn)動(dòng)學(xué)與動(dòng)力學(xué)
MATLAB 中的機(jī)械臂算法——?jiǎng)恿W(xué)
三關(guān)節(jié)機(jī)械臂動(dòng)力學(xué)模型問(wèn)題?
【機(jī)器人學(xué)】機(jī)器人開(kāi)源項(xiàng)目KDL源碼學(xué)習(xí):(4)機(jī)械臂逆動(dòng)力學(xué)的牛頓歐拉算法
matlab遞推牛頓-歐拉法解機(jī)械臂動(dòng)力學(xué)方程
《機(jī)器人動(dòng)力學(xué)與控制》第九章——?jiǎng)恿W(xué) 9.1初探歐拉拉格朗日方程法
機(jī)器人動(dòng)力學(xué)–拉格朗日公式
《機(jī)器人動(dòng)力學(xué)與控制》
《機(jī)器人技術(shù)基礎(chǔ)》
《機(jī)器人學(xué)導(dǎo)論》
Kenvin M. Lynch , Frank C. Park, Modern Robotics Mechanics,Planning , and Control. May 3, 2017
總結(jié)
以上是生活随笔為你收集整理的matlab计算机械臂素的,机械臂动力学——动力学建模的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WriteComponent,ReadC
- 下一篇: matlab人脸追踪,求大神帮助我这个菜