delta机器人与matlab仿真(一)
delta机器人描述
Delta 机器人是典型的空间三自由度(X,Y,Z平移运动)的并联机构,特点是自重负荷与机械臂相比比较小,动态性能好,承载力强,运行速度快。
一般右三个电机,三对主机械臂和三对副机械臂组成和机械爪。
因为3个机械臂都是平行四边形机构所以下方机械爪的运动只能实现平移运动,保证运动中机械爪的平行。
这里说明下为什么能一直保证机械爪的平行,首先使用sw进行建模方便理解。
假设其中一个机械臂的四边形为ABCD另外几个机械臂为A’B’C’D’,A’‘B’‘C’‘D’’。
设上平面为S1,下平面为S2
∵
A
B
/
/
C
D
,
A
′
B
′
/
/
C
′
D
′
,
A
′
′
B
′
′
/
/
C
′
′
D
′
′
∵AB//CD,A'B'//C'D',A''B''//C''D''
∵AB//CD,A′B′//C′D′,A′′B′′//C′′D′′
∵
C
D
,
C
′
D
′
,
C
′
′
D
′
′
∈
S
2
,
A
B
.
A
′
B
′
,
A
′
′
B
′
′
∈
S
1
∵CD,C'D',C''D''∈S_2,AB.A'B',A''B''∈S_1
∵CD,C′D′,C′′D′′∈S2,AB.A′B′,A′′B′′∈S1
∴
S
2
/
/
S
1
∴S_2 // S_1
∴S2//S1
所以可以知道机器人在运动过程中上下平面是始终平行的且不会发生旋转。
运动分析
这里先考虑一个机械臂的运动过程
以上平面的中心为原点O即为(0,0,0),机械臂的三个关节处分别为A,B,C。关节A处AB与Z轴的夹角为α 。OA=a,AB=b,BC=c,CO’=d,OO’=o。下底板中心为(x’,y’,z’),A=(x1,y1,z1),B=(x2,y2,z2),C=(x3,y3,z3),这里设a,b向量都在面XoZ内,所以y1=0,y2=0。
∴
o
⃗
=
a
⃗
+
b
⃗
+
c
⃗
+
d
⃗
∴ \vec o=\vec a+\vec b+\vec c+\vec d
∴o=a+b+c+d
a
=
[
x
1
y
1
z
1
]
b
=
[
x
2
−
x
1
0
z
2
−
z
1
]
c
=
[
x
3
−
x
2
y
3
z
3
−
z
2
]
d
=
[
x
′
−
x
3
y
′
−
y
3
z
′
−
z
3
]
a= \begin{bmatrix} x_1 \\ y_1 \\ z_1 \\ \end{bmatrix} b=\begin{bmatrix} x_2-x_1 \\ 0\\ z_2-z_ 1\\ \end{bmatrix} c=\begin{bmatrix} x_3-x_2 \\ y_3 \\ z_3-z_ 2\\ \end{bmatrix} d=\begin{bmatrix} x'-x_3 \\ y'-y_3 \\ z'-z_ 3\\ \end{bmatrix}
a=⎣⎡x1y1z1⎦⎤b=⎣⎡x2−x10z2−z1⎦⎤c=⎣⎡x3−x2y3z3−z2⎦⎤d=⎣⎡x′−x3y′−y3z′−z3⎦⎤
x
1
=
∣
a
∣
,
x
2
=
∣
a
∣
+
s
i
n
α
⋅
∣
b
∣
,
x
3
=
x
′
+
∣
d
∣
x_1=|a|,x_2=|a|+sinα·|b|,x_3=x'+|d|
x1=∣a∣,x2=∣a∣+sinα⋅∣b∣,x3=x′+∣d∣
z
1
=
0
,
z
2
=
c
o
s
α
⋅
∣
b
∣
,
z
3
=
z
′
z_1=0,z_2=cosα·|b|,z_3=z'
z1=0,z2=cosα⋅∣b∣,z3=z′
y
1
=
y
2
=
0
,
y
3
=
y
′
y_1=y_2=0,y_3=y'
y1=y2=0,y3=y′
∴
c
=
[
x
′
+
∣
d
∣
−
∣
a
∣
+
s
i
n
α
⋅
∣
b
∣
y
′
z
′
−
c
o
s
α
⋅
∣
b
∣
]
,
且
长
度
等
于
∣
c
∣
∴c=\begin{bmatrix} x'+|d|-|a|+sinα·|b| \\ y' \\ z'-cosα·|b|\\ \end{bmatrix},且长度等于|c|
∴c=⎣⎡x′+∣d∣−∣a∣+sinα⋅∣b∣y′z′−cosα⋅∣b∣⎦⎤,且长度等于∣c∣
∴
α
=
a
s
i
n
(
(
x
′
+
∣
d
∣
−
∣
a
∣
)
2
)
+
y
′
2
+
z
′
2
+
∣
b
∣
2
−
∣
c
∣
2
2
z
′
2
+
(
x
′
+
∣
d
∣
−
∣
a
∣
)
2
)
)
−
φ
,
φ
=
a
s
i
n
(
z
′
2
z
′
2
+
(
x
′
+
∣
d
∣
−
∣
a
∣
)
2
)
)
,
且
α
∈
(
0
,
π
)
∴α=asin(\frac{(x'+|d|-|a|)^2)+y'^2+z'^2+|b|^2-|c|^2}{2\sqrt{z'^2+(x'+|d|-|a|)^2)}})-φ,φ=asin(\frac{z'^2}{\sqrt{z'^2+(x'+|d|-|a|)^2)}}),且α∈(0,π)
∴α=asin(2z′2+(x′+∣d∣−∣a∣)2)(x′+∣d∣−∣a∣)2)+y′2+z′2+∣b∣2−∣c∣2)−φ,φ=asin(z′2+(x′+∣d∣−∣a∣)2)z′2),且α∈(0,π)
matlab实现
通过上面分析已经得到其中一个机械臂和最终左边之间的关系,对另外两个臂就不分别计算了,直接使用对z轴的旋转矩阵,两个机械臂分别旋转120°和-120°来计算即可。这里没有使用matlab自带的解矩阵的方式进行求解是因为代码之后要移植到32上所以就直接求出了解。这里最后用matlab实现的末端做一个圆周运动。
模型:https://download.youkuaiyun.com/download/liujianxin828/10942332
代码:https://download.youkuaiyun.com/download/liujianxin828/10942326