動力學
1、動力學方程

其中:在關節空間中,
分别表示關節處角度、角速度、角加速度;
表示關節力距,
為nxn的品質矩陣,
是nx1的離心力和科氏力矢量;
是nx1的重力矢量。笛卡爾空間與關節空間類似。(注,上訴動力學方程隻包含了剛體力學中的那些力,并未考慮摩擦力)
在機器人工具箱中,我們有以下函數求解上訴一些相關矩陣
- R.gravload() %重力載荷
- R.inertia() %關節空間慣性矩陣
- R.coriolis() %有效載荷(作用 在末端執行器處)的耦合矩陣
- R.payload() %有效載荷(作用在末端執行器處)
例:
mdl_puma560 %調用puma560模型
q = qn %設定關節角度
qd = [0.2,0.1,0,0.1,0,0] %設定一個初始速度
G = p560.gravload(q) %重力矢量
M = p560.inertia(q) %關節空間品質矩陣
V = p560.coriolis(q,qn) %計算離心力和科氏力矢量
p560.payload(1,[0 0 0]) %添加有效載荷
M1 = p560.inertia(q) %計算添加載荷後的品質矩陣
2、在搭建機器人模型是,每個連杆都有許多的動力學參數(品質、慣性距等等),我們可以利用dyn函數顯示這些參數。
- R.dyn( ) %顯示模型中所有連杆的動力學屬性
- R.dyn( i ) %顯示第i根連杆的屬性參數,也相當于R.links(2).dyn
(m(關節品質),r(3*1的關節齒輪向量),I(3*3對稱慣性矩陣),Jm(電機慣性),Bm(粘性摩擦),Tc(庫侖摩擦),G(齒輪傳動比),qlim(關節變量上下限))
mdl_puma560 %調用puma560模型
p560.dyn( ); %顯示所有關節動力學參數
p560.dyn(1); %顯示第一個關節屬性參數
p560.links(1).dyn %顯示第一個關節屬性參數
- R.rne(q,qd,qdd) %(角度/角速度/角加速度→力/力矩)
- R.rne(q,qd,qdd,grav,fext) %grav:重力加速度; fext=[Fx Fy Fz MxMy Mz]
- [T,q,qd]=R.fdyn(T,torqfun) %(力/力矩→角度/角速度/角加速度)
- qdd=R.accel(q,qd,torqfun) %計算角加速度
mdl_puma560 %調用puma560模型
q = qn; %設定初始關節角度
qd = [5 1 0 0 0 0]; %設定關節加速度
qdd = [0 0 0 0 0 0]; %設定關節角加速度
T = p560.rne(q,qd,qdd,[0 0 0]) %求解逆向動力學
torqfun=[1 2 3 4 5 6]; %設定初始力矩
p560=p560.nofriction( ); %沒有摩擦的動力學模型
[T,q,qd]=p560.fdyn(1,torqfun); %求解正向動力學
for kk=1:65
qdd(kk,:)=p560.accel(q(kk,:),qd(kk,:),torqfun); %求解角加速度
end