生活随笔
收集整理的這篇文章主要介紹了
机械臂动力学建模(2)- Kane凯恩算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Kane算法
參考
主要的參考是:
鏈接: 百度文庫的ppt.
這個ppt的思路能講明白,但是公式到了最后一步求τ的時候有問題:
計算τ的第一項中缺少一個加速度項,應該是:
文獻: 基于凱恩方程的機器人動力學遞推算法.
里面開始就給了公式
思路
可以看參考中ppt,主要就是通過kane提出的廣義速度的偏速度:
來表征動力學方程中的微分位移
之后就可以把普通的動力學方程
改寫成廣義主動力和廣義慣性力的形式。
之后求廣義偏速度,并帶入
最后使τ為主動力,通過廣義慣性力計算(式子可能有錯,參考前面修改意見):
實現
迭代法計算線速度,角速度,重心速度以及導數
matlab代碼:
for i
= 1:6
if i
== 1w
{i
} = R
{i
}*w0 + qd
(i
)*e
;wd
{i
} = R
{i
}*wd0 + qdd
(i
)*e + cross
(R
{i
}*w0,qd
(i
)*e
);v
{i
} = R
{i
} *
(v0 + cross
(w
{i
},p
{i
}));vd
{i
} = R
{i
} *
(vd0 + cross
(w0, cross
(w0, p
{i
})) + cross
(wd0, p
{i
}));elsew
{i
} = R
{i
}*w
{i-1
} + qd
(i
)*e
;wd
{i
} = R
{i
}*wd
{i-1
} + qdd
(i
)*e + cross
(R
{i
}*w
{i-1
},qd
(i
)*e
);v
{i
} = R
{i
} *
(v
{i-1
} + cross
(w
{i
},p
{i
}));vd
{i
} = R
{i
} *
(vd
{i-1
} + cross
(w
{i-1
}, cross
(w
{i-1
}, p
{i
})) + cross
(wd
{i-1
}, p
{i
}));endvc
{i
} = vd
{i
} + cross
(wd
{i
},c
{i
}) + cross
(w
{i
}, cross
(w
{i
}, c
{i
}));end
計算偏速度
matlab代碼
i=1時候自己設置一下
for i
= 2:6
for j
= 1:6
if j
< iwp
{i,j
} = R
{i
} * wp
{i-1,j
};vp
{i,j
} = R
{i
} *
(cross
(wp
{i-1,j
},p
{i
}) + vp
{i-1,j
});vcp
{i,j
} = vp
{i,j
} + cross
(wp
{i,j
},c
{i
});elseif j
== iwp
{i,j
} = e
;vp
{i,j
} = [0 0 0
]';vcp{i,j} = cross(e, c{i});elsewp{i,j} = [0 0 0]';vp
{i,j
} = [0 0 0
]';vcp{i,j} = [0 0 0]';endendend
計算tau
matlab代碼
for i
= 1:6N
{i
} = I
{i
}*wd
{i
} + cross
(w
{i
},I
{i
}*w
{i
});endtau
= zeros
(6,1
);for j
= 1:6
for i
= j:6tau
(j
) = tau
(j
) + M
(i
)*dot
(vc
{i
},vcp
{i,j
}) + dot
(N
{i
}, wp
{i,j
});endend
至此計算完成
總結
以上是生活随笔為你收集整理的机械臂动力学建模(2)- Kane凯恩算法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。