一.模型

以****的六轴为例,我就直接放照片了,等以后有时间,我再画图。

DH模型:
| iii | θi\theta_iθi | did_idi | aia_iai | αi\alpha_iαi |
|---|---|---|---|---|
| 111 | θ1\theta_1θ1 | 000 | 0.1800.1800.180 | π2\frac{\pi}{2}2π |
| 222 | θ2\theta_2θ2 | 000 | 0.6000.6000.600 | 000 |
| 333 | θ3\theta_3θ3 | 000 | 0.1300.1300.130 | −π2-\frac{\pi}{2}−2π |
| 444 | θ4\theta_4θ4 | 0.6300.6300.630 | 000 | π2\frac{\pi}{2}2π |
| 555 | θ5\theta_5θ5 | 000 | 000 | −π2-\frac{\pi}{2}−2π |
| 666 | θ6\theta_6θ6 | 0.10750.10750.1075 | 000 | 000 |
改进DH模型:

| iii | θi\theta_iθi | did_idi | ai−1a_{i-1}ai−1 | αi−1\alpha_{i-1}αi−1 |
|---|---|---|---|---|
| 111 | θ1\theta_1θ1 | 000 | 000 | 000 |
| 222 | θ2\theta_2θ2 | 000 | 0.1800.1800.180 | −π2-\frac{\pi}{2}−2π |
| 333 | θ3\theta_3θ3 | 000 | 0.6000.6000.600 | 0 |
| 444 | θ4\theta_4θ4 | 0.6300.6300.630 | 0.1300.1300.130 | −π2-\frac{\pi}{2}−2π |
| 555 | θ5\theta_5θ5 | 000 | 000 | π2\frac{\pi}{2}2π |
| 666 | θ6\theta_6θ6 | 000 | 000 | −π2-\frac{\pi}{2}−2π |
二.matlab代码
clear;
clc;
%建立机器人模型
% theta d a alpha offset
SL1=Link([0 0 0.180 -pi/2 0 ],'standard');
SL2=Link([0 0 0.600 0 0 ],'standard');
SL3=Link([0 0 0.130 -pi/2 0 ],'standard');
SL4=Link([0 0.630 0 pi/2 0 ],'standard');
SL5=Link([0 0 0 -pi/2 0 ],'standard');
SL6=Link([0 0.1075 0 0 0 ],'standard');
starobot=SerialLink([SL1 SL2 SL3 SL4 SL5 SL6],'name','Xinje-mod');
figure(1),teach(starobot);
% theta d a alpha offset
ML1=Link([0 0 0 0 0 ],'modified');
ML2=Link([0 0 0.180 -pi/2 0 ],'modified');
ML3=Link([0 0 0.600 0 0 ],'modified');
ML4=Link([0 0.630 0.130 -pi/2 0 ],'modified');
ML5=Link([0 0 0 pi/2 0 ],'modified');
ML6=Link([0 0 0 -pi/2 0 ],'modified');
modrobot=SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','Xinje-sta');
figure(2),teach(modrobot);
三.运行结果

可以看出末端位置,不完全一致,因为改进DH并没有建到工具坐标系,再乘一个纯平移的变换即可。
四.将平移变换补进改进DH模型里
clear;
clc;
%建立机器人模型
% theta d a alpha offset
SL1=Link([0 0 0.180 -pi/2 0 ],'standard');
SL2=Link([0 0 0.600 0 0 ],'standard');
SL3=Link([0 0 0.130 -pi/2 0 ],'standard');
SL4=Link([0 0.630 0 pi/2 0 ],'standard');
SL5=Link([0 0 0 -pi/2 0 ],'standard');
SL6=Link([0 0.1075 0 0 0 ],'standard');
starobot=SerialLink([SL1 SL2 SL3 SL4 SL5 SL6],'name','Xinje-sta');
figure(1),teach(starobot);
% theta d a alpha offset
ML1=Link([0 0 0 0 0 ],'modified');
ML2=Link([0 0 0.180 -pi/2 0 ],'modified');
ML3=Link([0 0 0.600 0 0 ],'modified');
ML4=Link([0 0.630 0.130 -pi/2 0 ],'modified');
ML5=Link([0 0 0 pi/2 0 ],'modified');
ML6=Link([0 0.1075 0 -pi/2 0 ],'modified');
modrobot=SerialLink([ML1 ML2 ML3 ML4 ML5 ML6],'name','Xinje-mod');
figure(2),teach(modrobot);

可见增加了一个平移变换后,末端位姿一致。
五.DH与改进DH模型的区别
将基坐标系表示为b,工具坐标系e,则工具坐标系到基坐标系的转换矩阵为:
bT0⋅(0T1⋅1T2⋅2T3⋅3T4⋅4T5⋅5T6)⋅6Te=bTe{^bT_0}\cdot({^0T_1}\cdot{^1T_2}\cdot{^2T_3}\cdot{^3T_4}\cdot{^4T_5}\cdot{^5T_6})\cdot{^6T_e}={^bT_e}bT0⋅(0T1⋅1T2⋅2T3⋅3T4⋅4T5⋅5T6)⋅6Te=bTe
DH:DH:DH:后置模型,将6系和e系,建立在一起。
改进DH:改进DH:改进DH:前置模型,将0系和1系,建立在一起。
因此,DH下表示的位姿,跟改进DH下的位姿,差了一个6Te{^6T_e}6Te的变换,一般性都是一个纯平移。当然这个变换可以补偿到DH参数表中。
PS:未完待续,会有更新。
本文以PUMA560六轴机器人为例,探讨了标准DH模型和改进DH模型的建立过程,并通过MATLAB代码展示了两者在末端位姿上的差异。改进DH模型未包含工具坐标系的平移,而DH模型则将6系与工具坐标系结合。通过补充平移变换,两种模型的末端位姿得以一致。DH模型为后置模型,而改进DH模型为前置模型,两者间存在一个纯平移的差异。
1835





