赞
踩
一.模型
以****的六轴为例,我就直接放照片了,等以后有时间,我再画图。
DH模型:
i i i | θ i \theta_i θi | d i d_i di | a i a_i ai | α i \alpha_i αi |
---|---|---|---|---|
1 1 1 | θ 1 \theta_1 θ1 | 0 0 0 | 0.180 0.180 0.180 | π 2 \frac{\pi}{2} 2π |
2 2 2 | θ 2 \theta_2 θ2 | 0 0 0 | 0.600 0.600 0.600 | 0 0 0 |
3 3 3 | θ 3 \theta_3 θ3 | 0 0 0 | 0.130 0.130 0.130 | − π 2 -\frac{\pi}{2} −2π |
4 4 4 | θ 4 \theta_4 θ4 | 0.630 0.630 0.630 | 0 0 0 | π 2 \frac{\pi}{2} 2π |
5 5 5 | θ 5 \theta_5 θ5 | 0 0 0 | 0 0 0 | − π 2 -\frac{\pi}{2} −2π |
6 6 6 | θ 6 \theta_6 θ6 | 0.1075 0.1075 0.1075 | 0 0 0 | 0 0 0 |
改进DH模型:
i i i | θ i \theta_i θi | d i d_i di | a i − 1 a_{i-1} ai−1 | α i − 1 \alpha_{i-1} αi−1 |
---|---|---|---|---|
1 1 1 | θ 1 \theta_1 θ1 | 0 0 0 | 0 0 0 | 0 0 0 |
2 2 2 | θ 2 \theta_2 θ2 | 0 0 0 | 0.180 0.180 0.180 | − π 2 -\frac{\pi}{2} −2π |
3 3 3 | θ 3 \theta_3 θ3 | 0 0 0 | 0.600 0.600 0.600 | 0 |
4 4 4 | θ 4 \theta_4 θ4 | 0.630 0.630 0.630 | 0.130 0.130 0.130 | − π 2 -\frac{\pi}{2} −2π |
5 5 5 | θ 5 \theta_5 θ5 | 0 0 0 | 0 0 0 | π 2 \frac{\pi}{2} 2π |
6 6 6 | θ 6 \theta_6 θ6 | 0 0 0 | 0 0 0 | − π 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,则工具坐标系到基坐标系的转换矩阵为:
b
T
0
⋅
(
0
T
1
⋅
1
T
2
⋅
2
T
3
⋅
3
T
4
⋅
4
T
5
⋅
5
T
6
)
⋅
6
T
e
=
b
T
e
{^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
D
H
:
DH:
DH:后置模型,将6系和e系,建立在一起。
改
进
D
H
:
改进DH:
改进DH:前置模型,将0系和1系,建立在一起。
因此,DH下表示的位姿,跟改进DH下的位姿,差了一个
6
T
e
{^6T_e}
6Te的变换,一般性都是一个纯平移。当然这个变换可以补偿到DH参数表中。
PS:未完待续,会有更新。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。