Robotic toolbox10.2的fkine函數與機械臂MDH和DH變化矩陣的應用
DH和MDH的變換矩陣
請參考3 Robotics Toolbox(1—安裝與座標變換),總之,在B站臺大機器人學之運動學——林沛羣的課程中(第24P)有:
MDH和DH在theta d a alpha的定義上都有所不用,導致建立出來的變化矩陣就不一樣!!!!!!
MATLAB的Robotic toolbox10.2的fkine函數與機械臂MDH和DH變化矩陣的應用
fkine是Robotic toolbox求解正運動的函數,具體是利用MDH方式求解變化矩陣還是DH求解變化矩陣與fkine函數關係不大,和機械臂定義類型有關!!!
已知Robotic toolbox定義機械臂類型有三種:不聲明,聲明’standard’和聲明’modified’。其中不聲明和’standard’都表示使用DH方法求得的變化矩陣,而聲明’modified’則採用實驗MDH求的變化矩陣。參考3 Robotics Toolbox(2—機械臂建模、正逆運動求解和軌跡規劃) ,如果想使用fkine求解得出的是MDH方式的變化矩陣,那就在連桿定義時候後面聲明’modified’,否則得到的都是DH定義方式!!!
下面的用自定義的MDH和DH函數來驗證:①mdl_puma560是DH求解方式,因爲它是默認的定義方式;②mdl_puma560akb採用的是MDH求解方式,因爲文件聲明瞭’modified’;③自定義的機械臂應用fkine函數。
Robotic toolbox的mdl_puma560採用的是DH求解方式
啓動Robotic toolbox10.2,輸入命令mdl_puma560
,再輸入p560.fkine([0 0 0 0 0 0])
查看矩陣變換結果爲左圖,利用自定義的MDH方式(函數名fun_dirsolu_mdh)按照p560.display
得到的參數創建機械臂,求的關節角均爲0時的變化矩陣如圖中,利用DH方式(函數名fun_dirsolu_sdh)求得的變化矩陣如圖右。
mdl_puma560akb採用的是MDH求解方式
輸入命令mdl_puma560akb
,再輸入p560m.fkine([0 0 0 0 0 0])
查看矩陣變換結果爲左圖,利用自定義的MDH方式(函數名fun_dirsolu_mdh)按照p560m.display
得到的參數創建機械臂,求的關節角均爲0時的變化矩陣如圖中,利用DH方式(函數名fun_dirsolu_sdh)求得的變化矩陣如圖右
自定義的機械臂應用fkine函數
在Robotic的 toolbox的安裝文件夾下可以找到很多模型文件,這裏又採用puma560akb的源碼(…/rvctools/robot/models/mdl_puma560akb.m)來應用kine函數。
創建DH類型的PUMA560aku
% %未聲明類型,表示爲standard類型機械臂即採用DH求解變化矩陣
clear;
L(1) = Link([ 0 0 0 0 0]);
L(2) = Link([ 0 0.2435 0 -pi/2 0]);
L(3) = Link([ 0 -0.0934 0.4318 0 0]');
L(4) = Link([ 0 0.4331 -0.0203 pi/2 0]);
L(5) = Link([ 0 0 0 -pi/2 0]);
L(6) = Link([ 0 0 0 pi/2 0]);
robottest = SerialLink(L,'name','robottest');
robottest.fkine([0 0 0 0 0 0])
創建MDH類型的PUMA560aku
clear;
L(1) = Link([ 0 0 0 0 0], 'modified');
L(2) = Link([ 0 0.2435 0 -pi/2 0], 'modified');
L(3) = Link([ 0 -0.0934 0.4318 0 0], 'modified');
L(4) = Link([ 0 0.4331 -0.0203 pi/2 0], 'modified');
L(5) = Link([ 0 0 0 -pi/2 0], 'modified');
L(6) = Link([ 0 0 0 pi/2 0], 'modified');
robottest = SerialLink(L,'name','robottest');
robottest.fkine([0 0 0 0 0 0])
總結
fkine是Robotic toolbox求解正運動的函數,具體是利用MDH方式求解變化矩陣還是DH求解變化矩陣主要看和機械臂定義的類型!!!