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求解變化矩陣主要看和機械臂定義的類型!!!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章