代码传送门:机器人学位置分析-Github
这篇文章并不是讲解如何使用DH,而是假定已经知道如何使用的基础上的matlab拓展,程序实现的功是输入DH表中的内容输出嘴和得到的总变换矩阵
DH表示法是对机器人运动进行建模的标准方法,表示了对机器人的连杆和关节进行建模的一种简单方法,可以用于各种机器人的结构中,而不用管机器人的结构顺序复杂程度如何。
基本思想是,给每一个关节指定一个参考坐标系,确定从一个关节(一个坐标系)到下一个关节(下一个坐标系)来进行变换的步骤。所以,如果把从第一节到第二节一直到最后一个关节的所有变换结合起来就得到了机器人的总变换矩阵。
Θ -> 表示绕着z轴的旋转角
d -> 表示在z轴上两条相邻的公垂线之间的距离
a -> 表示每一条公垂线的长度(关节偏移)
α -> 表示连个相邻的z轴之间的角度(关节扭转)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
% Title: DH % Author: Bing XIong % Date: 2018.01.23 % Description: This function is used to calculate DH % The input example # theta d a alpha % d = [ % 90 0 0 90; % 90 0 0 0; % 0 0 0 90; % ]; % g = degree*pi/180; function [dh] = dh(input) [m,~] = size(input); temp=[]; for i = 1:m % Initializa input theta = input(i,1)*pi/180; d = input(i,2); a = input(i,3); alpha = input(i,4)*pi/180; %caculate matrix A = [ cos(theta) -sin(theta)*cos(alpha) sin(theta)*cos(alpha) a*cos(theta); sin(theta) cos(theta)*cos(alpha) -cos(theta)*sin(alpha) a*sin(theta); 0 sin(alpha) cos(alpha) d ; 0 0 0 1 ]; temp=[temp,A]; end [~,temp_col] = size(temp); dh =diag([1,1,1,1]); for i=1:temp_col/4 dh = dh*temp(:,1+4*(i-1):4*i); end |