Lời nói đầu

Trong sự nghiệp công nghiệp hóa, hiện đại hóa đất nước vấn đề tự động hóa
sản xuất có vai trò đặc biệt quan trọng .
Nhằm nâng cao năng suất dây chuyền công nghệ, nâng cao chất lượng và
khả năng cạnh tranh của sản phẩm, cải thiện điều kiện lao động , nâng cao năng
suất lao động…đặt ra là hệ thống sản xuất phải có tính linh hoạt cao. Robot công
nghiệp là một bộ phận quan trọng để tạo ra những hệ thống tự động đó.
Robot công nghiệp đã có mặt trong sản xuất từ nhiều năm trước, ngày nay
robot công nghiệp được dùng ở nhiều lĩnh vực sản xuất. đó là xuất phát từ những
ưu điểm mà robot đó đã được chọn và đúc kêt lại trong quá trình sản xuất,robot có
những tính năng mà con người không thể có được, khả năng làm việc ổn định,làm
việc trong môi trường độc hại… Do đó việc đầu tư nghiên cứu, chế tạo ra ngững
loại robot phục vụ cho công cuộc tự động hóa sản xuất là rất cần thiết cho hiện tại
và trong tương lai.
Môn học ĐỒ ÁN CƠ ĐIỆN TỬ giúp chúng em bước đầu làm quen,tìm hiểu,
học cách chế tạo và rất có ích cho chúng em sau này.
Trong quá trình học môn ĐỒ ÁN CƠ ĐIỆN TỬ chúng em còn nhiều thiếu
sót mong các thầy chỉ bảo thêm cho chúng em.
Chân thành cảm ơn
Nhóm sinh viên :
Nguyễn Đình Quảng
Nguyễn Đăng Thi
Nguyễn Văn Thảo
Ngô Văn Thắng
1
I-Xây dựng sơ đồ động học và các ma trận biểu diễn cấu trúc
1-Sơ đồ động học của PUMA.
2- Các ma trận chuyển biểu diễn cấu trúc của PUMA.
1
1
1
1
]
1

¸

·
1 0 0 0
1 0 0
0 0 6 6
0 0 6 6
6
6
d
C S
S C
A
1
1
1
1
]
1

¸


·
1 0 0 0
0 0 1 0
0 5 0 5
0 5 0 5
5
C S
S C
A
1
1
1
1
]
1

¸



·
1 0 0 0
0 1 0
0 4 0 4
0 4 0 4
4
4
d
C S
S C
A
1
1
1
1
]
1

¸


·
1 0 0 0
0 0 1 0
3 3 0 3
3 3 0 3
6
3
3
3
a S C S
a C S C
A
1
1
1
1
]
1

¸

·
1 0 0 0
1 0 0
2 0 2 2
2 0 2 2
2
2
2
2
d
a S C S
a C S C
A
1
1
1
1
]
1

¸



·
1 0 0 0
0 0 1 0
0 1 0 1
0 1 0 1
1
C S
S C
A
Trong đó: để tiện theo dõi ta ký hiệu
Cx =cos(x): x là các biến khớp
Sx= sin(x)
II-Tính Toán Động Học Thuận:
2
Bảng thông số DH:

khâu
i
θ
i
α
i
a
i
d
1 1
*
θ -90 0 0
2
*
2
θ 0 a2 d2
3
*
3
θ 90 a3 0
4
*
4
θ -90 0 d4
5
*
5
θ 90 0 0
6
*
6
θ 0 0 d6


1
1
1
1
]
1

¸

·
1 0 0 0
1 0 0
0 0 6 6
0 0 6 6
6
6
d
C S
S C
A

1
1
1
1
]
1

¸


·
1 0 0 0
0 0 1 0
0 5 0 5
0 5 0 5
5
C S
S C
A

1
1
1
1
]
1

¸

− − −

· ·
1 0 0 0
0 0 6 6
5 5 6 5 6 5
5 5 6 5 6 5
.
6
6
6
5
5 6
4
C S
d C C S S C S
d S S S C C C
T A T

1
1
1
1
]
1

¸



·
1 0 0 0
0 1 0
0 4 0 4
0 4 0 4
4
4
d
C S
S C
A

1
1
1
1
]
1

¸

+ −
+ − +
− − −
· ·
1 0 0 0
5 5 6 5 6 5
5 4 5 4 6 4 6 5 4 6 4 6 5 4
5 4 5 4 6 4 6 5 4 6 4 6 5 4
.
4 6
6
6
6
4
4 6
3
d d C C S S C S
d S S S S C C S C S S C C C S
d S C S C C S S C C S S C C C
T A T
3

1
1
1
1
]
1

¸


·
1 0 0 0
0 0 1 0
3 3 0 3
3 3 0 3
6
3
3
3
a S C S
a C S C
A

6
3
3 6
2
. T A T ·
các hệ số trong ma trận:

. 6 5 4 ) 4 , 3 (
; 5 4 ) 3 , 3 (
; 6 4 6 5 4 ) 2 , 3 (
; 6 4 6 5 4 ) 1 , 3 (
; 3 3 ) 4 6 5 ( 3 6 5 4 3 ) 4 , 2 (
; 5 3 5 4 3 ) 3 , 2 (
; 6 5 3 ) 6 4 6 5 4 ( 3 ) 2 , 2 (
; 6 5 3 ) 6 4 6 5 4 ( 3 ) 1 , 2 (
; 5 3 5 4 3 ) 3 , 1 (
; 6 5 3 ) 6 4 6 5 4 ( * 3 ) 2 , 1 (
; 6 5 3 _ 6 4 6 5 4 ( 2 ) 1 , 1 (
6
2
6
2
6
2
6
2
6
2
6
2
6
2
6
2
6
2
6
2
6
2
d S S T
S S T
C C S C S T
S C C C S T
a S d d C C d S C S T
C C S C S T
S S C C S S C C S T
C S C S S C C C T
C S S C C T
S S S S S S C C C T
S S S S S C C C C T
·
·
+ − ·
+ ·
+ + − ·
− ·
− − − ·
+ − ·
+ ·
+ − − ·
− − ·


1
1
1
1
]
1

¸

·
1 0 0 0
1 0 0
2 0 2 2
2 0 2 2
2
2
2
2
d
a S C S
a C S C
A

6
2
2 6
1
. T A T ·
các hệ số trong
6
1
T
là:
4

2 6 5 4 ) 4 , 3 (
5 4 ) 3 , 3 (
6 4 6 5 4 ) 2 , 3 (
6 4 6 5 4 ) 1 , 3 (
2 2
] 3 3 ) 4 6 5 ( 3 6 4 3 [ 2 ] 3 3 ) 4 6 5 ( 3 6 5 4 3 [ 2 ) 4 , 2 (
) 5 3 5 4 3 ( 2 ) 5 3 5 4 3 ( 2 ) 3 , 2 (
] 6 5 3 ) 6 4 6 5 4 ( 3 [ 3 ] 6 5 3 ) 6 4 6 6 4 ( 3 [ 2 ) 2 , 2 (
] 6 5 3 ) 6 4 6 5 4 ( 3 [ 2 ] 6 5 3 ) 6 4 6 5 4 ( 3 [ 2 ) 1 , 2 (
2 2
] 3 3 ) 4 6 5 ( 3 6 5 4 3 [ 2 ] 3 3 ) 4 6 5 ( 3 6 5 4 3 [ 2 ) 4 , 1 (
) 5 3 5 4 3 ( 2 ) 5 3 5 4 3 ( 2 ) 3 , 1 (
6 5 23 ) 6 4 6 5 4 ( 23 ) 2 , 1 (
6 5 23 ) 6 4 6 5 4 ( 2 ) 1 , 1 (
6
1
6
1
6
1
6
1
6
1
6
1
6
1
6
1
6
1
6
1
6
1
6
1
d d S S T
S S T
C C S C S T
S C C C S T
a S
a S d d C C d C S C a C d d C S d S C C S T
C C S C S C C S S C C S T
S S C C S S C C S C S S S C S S C C C S T
C S C S S C C C S C C S S S S C C C C S T
a C
a S d d C C d S C S S a C d d C S d S C C C T
C C S C S S C S S C C C T
S S S C S S C C C T
C S S S S C C C C T
+ ·
·
+ − ·
+ ·
+
+ + − + + + + ·
− + + ·
− − − + + − − ·
+ − + − − ·
+
+ + − − + + + ·
− − + ·
+ + − ·
− − ·

1
1
1
1
]
1

¸



·
1 0 0 0
0 0 1 0
0 1 0 1
0 1 0 1
1
C S
S C
A

6
1
1 6
0
. T A T ·

các hệ số trong
6
0
T
là:
1[ 23( 4 5 6 4 6) 23 5 6] 1( 4 5 6 4 6]
x
N C C C C C S S S S S S S C C C S · − − − +
1[ 23( 4 5 6 4 6) 23 5 6] 1( 4 5 6 4 6)
x
O C C C C S S C S S S S C S C C · − + + − − +
1[ 2( 3 4 5 3 5) 2( 3 4 5 3 5) 1 4 5
x
A C C C C S S C S S C S C C S S S · + − − −
5
1[ 2[ 3 4 5 6 3( 5 6 4) 3 3] 2[ 3 4 5 6
3( 5 6 4) 3 3] 2 2] 1( 4 5 6 2)
x
P C C C C S d S C d d C a S S C S d
C C d d S a C a S S S d d
· + + + −
− + + + − +
1[ 23( 4 5 6 4 6) 23 5 6] 1( 4 5 6 4 6)
y
N S C C C C S S S S S C S C S C S · − − − + +
1[ 23( 4 5 6 4 6) 23 5 6] 1( 4 5 6 4 6)
y
O S C C C S S C S S S C S C S C C · − + + + − +
1[ 2( 3 4 5 3 5) 2( 3 4 5 3 5) 1 4 5
y
A S C C C S S C S S C S C C C S S · + − − +
1[ 2[ 3 4 5 6 3( 4 6 4) 3 3] 2[ 3 4 5 6 3( 5 6 4)] 2 2]
1( 4 5 6 2)
Py S C C C S d S C d d C a S S C S d C d d C a
C S S d d
· + + + − − + +
+ +
[ 2( 3( 4 5 6 4 6) 3 5 6) 2( 3( 4 5 6 4 6) 3 5 6)]
z
N S C C C C S S S S C C S C C C S S C S S · − − − + − +
[ 2( 3( 4 5 6 4 6) 3 5 6) 2( 3( 4 5 6 4 6) 3 5 6)]
z
O S C C C S S C S S S C S C C S S C C S S · − − − + + − − −
[ 2( 3 4 5 3 5) 2( 3 4 5 3 5)]
z
A S C C S S C C S C S C C · − + + −
[ 2( 33 4 5 6 3( 5 6 4) 3 3) 2[ 3 4 5 6 3( 5 6 4) 3 3] 2 2]
z
P S C C S d S C d d C a C S C S d C C d d S a S a · − + + + + − + + +
III. PHƯƠNG TRÌNH ĐỘNG HỌC NGƯỢC ROBOT PUMA
Bài toán động học ngược là rất khó, đối với tay máy 6 khớp có ba khớp cuối
đồng quy tại một điểm, ta có thể tách bài toán động học ngược thành hai bài toán
đơn giản hơn là động học ngược vị trí và động học ngược hướng
+ Tìm vị trí giao điểm các trục cổ tay (tâm cổ tay)
+ Tìm hướng của cổ tay.
Ta biểu diễn thành hai hệ phương trình như sau:
Trong đó Ovà R là hướng và vị trí của dụng cụ, được biểu diễn đối với hệ tọa độ
cố định bên ngoài (world coordinate system). Ta phải giải bài toán trên đối với các
ẩn 6 1
, , q q 
.
Cơ cấu 6 khớp quay có 3 khớp cuối giao nhau có phương pháp giải như sau:
Vị trí của tâm cổ tay,P
C
xác định qua vị trí công cụ (The given tool position)
và phương của Tool pointing (
6
Z
).Do đó vị trí của tâm cổ tay phụ thuộc vào 3 biến
khớp đầu tiên.
The relative wrist oriention
6
3
R

6
Các biến khớp 4 5 6
, , θ θ θ
xác định từ ma trận định hướng cổ tay (The arm
orientation)
3
0
R
và ma trận định hướng công cụ (The given tool orientation)
0
6
R
.
+ Ma trân trạng thái (The given tool pose)
0
6
T
+ Solve porions của động học ngược để tìm ra
0
3
R
1 2 3
( , , ) θ θ θ

3
6 4 5 6
( , , ) R θ θ θ
.
+ Định vị trí của tâm cổ tay c
O
có tọa độ cho trước như sau:
0
6
0
. . 0
1
C
O O d R
1
1
· −
1
1
¸ ]
trong đó
O
và R là hướng và vị trí của dụng cụ, được biểu
diễn đối với hệ tọa độ cố định bên ngoài (world coordinate system).
c
P
as
6
d
(cột cuối cùng của
0
6
T
) –
6
d
(tool offset length)*
6
Z
(3 cột của ma trận
0
6
T
)
+ Thiết lập c
P
= cột cuối cùng của
0
3
R
1 2 3
( , , ) θ θ θ
để tìm ra các biến khớp
1 2 3
, , θ θ θ
Tính
1
3 0 0
6 3 6
R R R

· sau khi đã thay giá trị của các biến khớp vào 1 2 3
, , θ θ θ
vào
0
3
R
1 2 3
( , , ) θ θ θ
+So sánh
3
6
R

3
6 4 5 6
( , , ) R θ θ θ
để rút ra
4 5 6
, , θ θ θ
Tọa độ của điểm C trong hệ tọa độ 6
R
:
6
r
C
=
0
0
6
d
t
1
1
1
1

1
1
¸ ]
Tọa độ của C trong hệ tọa độ 0
R
:
r
C
=
E
T
.
6
r
E
=
6
6
6
.
0
0 .
.
6
1
1
0 0 0 1
x p
y p
z p
n s a p
a d x
x x x x
n s a p
a d y
y y y y
d
a d z
n s a p
z z z z
1
1
1
− +
1
1
1
1
1
− + 1
1
1 ·
1
− 1
− + 1
1
1
1
1
1 1 ¸ ]
¸ ]
¸ ]
(*)
Ma trận chuyển từ hệ tọa độ 0

3:
7
0
R
3=
A
1.
A
2.
A
3
=
23 3 23 2 2 1 2
3 23 2 2 1 2
3 23 2 2
. ( . . ) .
1 23 1 1
1
. ( . . ) .
1 1 23 1
1
. .
0
23 1 23
0
1 0 0
C S C C C a C a C S d
S
S S S S a C a C C d
C
S a S a S d C
1
+ −

1
1
+ −
1
1 − − − +
1
1
¸ ]

Tọa độ của C trong
0
R
:
r
C
=
0
R
3
.
4
r
C =
4 3 23 2 1 2 1 2
4 3 23 2 1 2 1 2
4 23 3 23 2 2 1
. . . . . .
1 23 1
. . . . . .
1 23 1
. . .
C S d a C C a C C S d
S S d a S C a S C C d
d C a S a S d
t
1
+ + −
1
1
+ + +
1
1 − − +
1
¸ ]
(**)
Đối chiếu (*) và (**) ta được hệ 3 phương trình 3 ẩn :
1 23 4 3 23 2 2 1 2 6
1 23 4 3 23 2 2 1 2 6
4 23 3 23 2 2 6 1
( . . . ) . .
( . . . ) . .
. . . .
p x
p y
p z
C S d a C a C S d x a d
S S d a C a C C d y a d
d C a S a S z a d d
+ + − · −
+ + + · −
− − · − −
Nhân (2) với cos 1
θ
trừ đi (1) nhân với sin 1
θ
:
2 6 1 6 1
2
1 6 6
2 2
6 6
( ) os ( )sin
cos tan 2( , )
( ) ( )
p y p x
p x p y
p y p x
d y a d c x a d
d
Ar A x a d y a d
y a d x a d
θ θ
θ
· − − −
¸ _

⇒ · t − − −

− + −
¸ ,
Nhân (2) với sin
1
θ
cộng với (1) nhân vói cos
1
θ
và kết hợp với (3) ta có hệ
23 4 3 23 2 2 6 6 1
23 4 3 23 2 2 6 1
. . . ( . ) sin ( . ) os
. . . .
p y p x x
p z y
S d a C a C y a d x a d c P
C d a S a S z a d d P
θ θ + + · − + − ·
− − · − − ·

Bình phương 2 vế cộng lại ta được:
2 2 2 2 2
4 3 2 4 2 3 2 3 3
2 2 2 2 2
4 2 3 2 3 3 3 2 4
2 sin 2 os
2 sin 2 os ( )
x y
x y
d a a d a a a c P P
d a a a c P P a a d
θ θ
θ θ
+ + + + · +
⇒ + · + − + +
2 2 2 2 2
3 2 4
3 4 2 2 3
2 2
2 4 3
( )
cos tan 2( , )
2
x y
P P a a d
Arc A d a a a
a d a
θ
¸ _
+ − + +
⇒ · t +

+
¸ ,
Khai triển hệ phương trình liên kết ta được:
8
3 3 2 3 4 2 3 4 3 3 2
3 4 3 3 2 2 3 4 3 3 2
( . . ) ( . .sin ) sin
( . . ) os ( . . os ) sin
x
y
a C a S d C C d a P
C d a S c a S d a c P
θ θ
θ θ θ
+ + + − ·
− − + + ·
2 2
3 3 2 3 4 3 4 3 3
3 3 2 3 4 3 4 3 3
4 3 3 3 2 4 3 3 3
( . . ) ( . . )
( . . ) ( . . )
( . ) ( . )
c x y
s x y
a C a S d C d a S
a C a S d P C d a S P
d C a S P a d S a C P
1 ∆ · − + + + −
¸ ]
1 ∆ · − + + + −
¸ ]
1 ∆ · − − − + +
¸ ]
2
tan 2( , )
s c
A θ
∆ ∆
·
∆ ∆
2 4 3 3 3 2 4 3 3 3 2 4 3 3 3 4 3 3 3
tan 2 ( ) ( ) , ( ) ( )
x y x
A d C a S P a d S a C P a d S a C P d C a S θ 1 ⇒ · − − + + + + + −
¸ ]
Ta có
3
6
R
=
4 5 6
A A A
=
4 4
4 4
4
0 0
0 0
0 1 1
0 0 0 1
C S
S C
d
− 1
1
1
1 −
1
¸ ]
5 5
5 5
0 0
0 0
0 1 0 0
0 0 0 1
C S
S C
1
1

1
1
1
¸ ]
6 6
6 6
6
0 0
0 0
0 0 1
0 0 0 1
C S
S C
d
− 1
1
1
1
1
¸ ]
=
Mặt khác:
1 2 3
A A A
4 5 6
A A A =
E
T
0 3
3 6
.
E
R R T ⇔ ·
3 0( 1)
6 3
.
E
R R T

⇒ ·
1 23 1 23 23 1 23 1 23 23 1 23 1 23 23 14
1 1 1 1 1 1 24
1 23 1 23 23 1 23 1 23 23 1 23 1 23 23 34
0 0 0 1
x y z x y z x y z
x y x y x y
x y z x y z x y z
C C n S C n S n C C s S C s S s C C a S C a S a f
S n C n S s C s S a C a f
C S n S S n C n C S s S S s C s C S a S S a C a f
+ − + − + − 1
1
− + − + − +
1
1 + − + − + −
1
¸ ]

Chỉ cần quan tâm tới phần định hướng tức là ma trận [3,3].
So sánh các phần tử của 2 ma trận [3,3] :
[ ]
3
6
3, 3 R ⇒
cos 5
θ ·
23 1 1 23
( )
x y z
S C a S a C a + −

5
θ ·
23 1 1 23
cos ( )
x y z
Arc S C a S a C a 1 t + −
¸ ]
Nếu sin
5
0 θ ≠ ⇒
9
[ ]
[ ]
3
6 4 5 1 1
1 1
4
5
3
6 4 5 23 1 1 23
23 1 1 23
4
5
1 1 23 1 1 23
4
5 5
2, 3 sin *sin * *
* *
sin
sin
1, 3 os *sin ( * * )
( * * )
os
sin
* * ( * * )
tan 2( , )
sin sin
x y
x y
x y z
x y z
x y x y z
R S a C a
S a C a
R c C C a S a S a
C C a S a S a
c
S a C a C C a S a S a
A
θ θ
θ
θ
θ θ
θ
θ
θ
θ θ
⇒ · − +
− +
⇒ ·
⇒ · + −
+ −
⇒ ·
− + + −
·
[ ]
[ ]
3
6 6 5 1 23 1 23 23
1 23 1 23 23
6
5
3
6 6 5 1 23 1 23 23
1 23 1 23 23
6
5
23 1 1 23 23 1 1
6
5
3, 2 sin *sin
sin
sin
3,1 os *sin
os
sin
( ) ( )
tan 2( ,
sin
x y z
x y z
x y z
x y z
x y z x y
R C S s S S s C s
C S s S S s C s
R c C S n S S n C n
C S n S S n C n
c
S C s S s C s S C n S n C
A
θ θ
θ
θ
θ θ
θ
θ
θ
θ
⇒ · + +
+ +
⇒ ·
⇒ − · + +
+ +
⇒ · −
+ + + +
· −
23
5
)
sin
z
n
θ
Vậy bài toán động học ngược cho ta kết quả như sau:
2
1 6 6
2 2
6 6
cos tan 2( , )
( ) ( )
p x p y
p y p x
d
Ar A x a d y a d
y a d x a d
θ
¸ _

· t − − −

− + −
¸ ,
2 4 3 3 3 2 4 3 3 3 2 4 3 3 3 4 3 3 3
tan 2 ( ) ( ) , ( ) ( )
x y x
A d C a S P a d S a C P a d S a C P d C a S θ 1 · − − + + + + + −
¸ ]
2 2 2 2 2
3 2 4
3 4 2 2 3
2 2
2 4 3
( )
cos tan 2( , )
2
x y
P P a a d
Arc A d a a a
a d a
θ
¸ _
+ − + +
· t +

+
¸ ,
1 1 23 1 1 23
4
5 5
* * ( * * )
tan 2( , )
sin sin
x y x y z
S a C a C C a S a S a
A θ
θ θ
− + + −
·
5 23 1 1 23
cos ( )
x y z
Arc S C a S a C a θ 1 · t + −
¸ ]
23 1 1 23 23 1 1 23
6
5 5
( ) ( )
tan 2( , )
sin sin
x y z x y z
S C s S s C s S C n S n C n
A θ
θ θ
+ + + +
· −
10
V.THIẾT KẾ MÔ HÌNH ROBOT PUMA DÙNG SOLIDWORK.
1. Nhiệm vụ của robot.
Gắp một vật nặng khối lượng dưới 1Kg di chuyển trong miền làm việc
2. Phân tích và lựa chọn kết cấu.
2.1 Lựa chọn ổ bi, ổ lăn cho cơ cấu.
- Do tính chất làm việc chịu tải tương đối nhẹ (tải trọng có khối lượng dưới 1kg)
của Robot nên ta sẽ chọn ổ lăn cho các khâu như sau:
+ Khâu 1: Dùng Ổ bi đỡ một dãy có kí hiệu 305.
+ Khâu 2: Dùng Ổ bi đỡ một dãy có kí hiệu 1000902.
+ Khâu 3: Dùng Ổ bi đỡ một dãy có kí hiệu 1000901.
+ Khâu 4: Dùng Ổ bi đỡ một dãy có kí hiệu 1000901.
+ Khâu 5: Dùng Ổ bi đỡ một dãy có kí hiệu 1000099.
2.2 Lựa chọn động cơ cho Robot.
Do yêu cầu điều khiển chính xác vị trí điểm tác động cuối của robot, ta chọn
động cơ cho các khớp quay là loại động cơ Servo.
11
Đây là loại động cơ cho phép ta điều khiển chính xác cả tốc độ và vị trí của
rotor. Động cơ tích hợp một mạch encoder, phản hồi trạng thái vị trí của trục ra,
dựa vào đó ta giảm thiểu được sai số do tải trọng bên ngoài thay đổi…
Dựa vào yêu cầu làm việc của robot, ta chọn được động cơ cho các khớp như
sau:
Khớp Số hiệu DC Khớp Số hiệu
1 T720-012 4 T406-012
2 T511-012 5 T404-012
3 T506-012 6 T402-011
Kích thước và thông số kỹ thuật các động cơ như sau:
12
13
14
3. Thiết kế mô hình dùng phần mềm SolidWorks
Bản vẽ chi tiết phần thiết kế (2D và 3D) của các khâu của robot được kèm
theo ở phần phụ lục. Say đây là một số hình ảnh mô hình 3D của robot.
15
VI. MÔ PHỎNG ĐỘNG HỌC ROBOT PUMA DÙNG VISUAL C++ VÀ OPENGL
Giao diện phần mềm mô phỏng được xây dựng như sau:
16
Phần mềm được xây dựng bằng visual C++. Phần đồ họa được lập trình
bằng các thư viện OpenGL. Giao diện chương trình gồm hai phần chính. Khung
bên phải chứa các nút lệnh điều khiển, và chọn các nhiệm vụ của Robot cần thực
hiện. Khung bên phải dùng để thể hiện mô hình của robot được dùng để mô phỏng.
Mô hình robot được vẽ bằng phần mềm SolidWork và xuất ra file cad 3D dưới
dạng STL sau đó dùng Visual C++ đọc các file này vào chương trình. Sau đó dùng
các hàm OpenGL để vẽ các mô hình này.
Phần động học thuận và ngược trong chương trình được tính trong các hàm
thành viên SolveInverseKinematic và SolveForwardKinematic của lớp
CSerialRobot.
Các hàm này như sau:
void CSerialRobot::SolveInverseKinematic(const CFrame& end ,float* jointVar)
{
CVector nn =end.GetXDir ().GetDirection ();
17
CVector ss=end.GetYDir ().GetDirection ();
CVector aa=end.GetZDir ().GetDirection ();
//CVector aa =CrossProduct (nn,ss);
CPoint3D pp =end.GetOrigin ();
float nx=nn.GetX ();
float ny=nn.GetY ();
float nz=nn.GetZ ();
float sx =ss.GetX ();
float sy =ss.GetY ();
float sz =ss.GetZ ();
float ax =aa.GetX ();
float ay =aa.GetY ();
float az =aa.GetZ ();
float px =pp.GetX ();
float py=pp.GetY ();
float pz=pp.GetZ ();
//joint vars are contained here
float tt1,tt2,tt3,tt4,tt5,tt6;
//link and joint configue
float a2=ROBOT_A2;
float a3=ROBOT_A3;
float d1 =ROBOT_D1;
float d2=ROBOT_D2;
float d4=ROBOT_D4;
float d6=ROBOT_D6;
// calculate theta 1
18
float m =px -ax*d6;
float n =py -ay*d6;
tt1= acosf(d2/sqrt(m*m+n*n)) -atan2(m,n);
float s1=sinf(tt1);
float c1=cosf(tt1);
float K1 = n*s1 + m * c1;
float K2 = pz -az*d6 -d1;
//calulate theta 3
float p=K1*K1+K2*K2 -(a3*a3+a2*a2 +d4*d4);
float q=2*a2*sqrt(d4*d4+a3*a3);
tt3= acosf(p/q) + atan2(d4,a3);
//check the criteria
float c3=cosf(tt3);
float s3=sinf(tt3);
//calculate theta 2
p=a3*c3 +a2 +s3 *d4;
q=d4*c3-a3*s3;
float delta =p*p +q*q;
float deltac =p*K1 +q*K2;
float deltas =q*K1 - p*K2;
tt2= atan2(deltas,deltac);
float s2=sinf(tt2);
float c2=cosf(tt2);
//calculate theta 5;
19
float s23 =sinf(tt2+tt3);
float c23 =cosf(tt2+tt3);
m=c1*ax+s1*ay;
tt5 = acosf(s23*m- c23*az);
float c5= cosf(tt5);
float s5= sinf(tt5);
//calculate theta4
m=c1 *ax +s1*ay;
n=-s1*ax +c1*ay;
if(tt5!=0)
{
tt4 =atan2(n/s5, (c23*m - s23*az)/s5);
}
else
{
tt4=0;
}
//calculate theta 6
tt6 =atan2((s23*(c1*sx +s1*sy)+c23*sz)/s5,
-(s23*(c1*nx +s1*ny)+c23*nz)/s5);
tt1=r2d(tt1);
tt2 =r2d(tt2);
tt3 =r2d(tt3);
tt4 =r2d(tt4);
tt5 =r2d(tt5);
20
tt6 =r2d(tt6);
jointVar[0] =tt1;
jointVar[1] =tt2;
jointVar[2] =tt3;
jointVar[3] =tt4;
jointVar[4] =tt5;
jointVar[5] =tt6;
MoveTo (tt1,tt2,tt3,tt4,tt5,tt6);
}
void CSerialRobot::SolveForwardKinematic
(const float tt1,const float tt2,const float tt3,const float tt4,
const float tt5,const float tt6,CFrame* frm)
{
float c1 =cosf(d2r(tt1));
float c2 =cosf(d2r(tt2));
float c3 =cosf(d2r(tt3));
float c4 =cosf(d2r(tt4));
float c5 =cosf(d2r(tt5));
float c6 =cosf(d2r(tt6));
////
float s1 =sinf(d2r(tt1));
float s2 =sinf(d2r(tt2));
float s3 =sinf(d2r(tt3));
21
float s4 =sinf(d2r(tt4));
float s5 =sinf(d2r(tt5));
float s6 =sinf(d2r(tt6));
float d6=ROBOT_D6;
float d4=ROBOT_D4;
float d2=ROBOT_D2;
float a3=ROBOT_A3;
float a2=ROBOT_A2;
float px =d6*(c5*(c1*c2*s3 + c1*c3*s2) - s5*(s1*s4 - c4*(c1*c2*c3 -
c1*s2*s3))) - d2*s1 + d4*(c1*c2*s3 + c1*c3*s2) + a2*c1*c2 - a3*c1*s2*s3 +
a3*c1*c2*c3;
float py =c1*d2 + d6*(c5*(c2*s1*s3 + c3*s1*s2) + s5*(c1*s4 +
c4*(c2*c3*s1 - s1*s2*s3))) + d4*(c2*s1*s3 + c3*s1*s2) + a2*c2*s1 - a3*s1*s2*s3
+ a3*c2*c3*s1;
float pz =d4*(c2*c3 - s2*s3) - a2*s2 + d6*(c5*(c2*c3 - s2*s3) -
c4*s5*(c2*s3 + c3*s2)) - a3*c2*s3 - a3*c3*s2;
frm->SetOrigin (CPoint3D(px,py,pz));
}
Một số kết quả mô phỏng:
- Điểm tác động cuối chạy theo đường xoắn ốc:
22
- Biên dạng chạy theo đường helixcal:
23
- Mô phỏng gắp một vật:
24
25
KẾT LUẬN.
Robot công nghiệp là một bộ phận rất quan trọng trong nền sản xuất hiện đại.
Nó góp phần thay thế sức lao động của con người, tăng năng suất lao động và tạo ra
những sản phẩm ngày càng phức tạp và đáp ứng nhu cầu ngày càng cao của con
người. Thông qua đồ án này, chúng em đã phần nào hiểu rõ được tầm quan trọng
đó. Với đề tài tìm hiểu về robot Puma, một loại robot công nghiệp phổ biến và điển
hình, nhóm đã phân tích, thiết kế và mô phỏng được hoạt động của loại robot này.
Các vấn đề cơ bản đã được giải quyết như tính toán động học thuận, động học
ngược, thiết kế dùng phần mềm CAD, và mô phỏng bằng Visual C++ và OpenGL.
Bên cạnh đó, do thời gian gấp rút, vẫn còn các vấn đề khác cần tiếp tục giải quyết.
Chúng em xin ý kiến đóng góp của các thầy để đề tài được hoàn thiện hơn. Một lần
nữa nhóm xin chân thành cảm ơn sự hướng dẫn tận tình của thầy Nguyễn Tuấn
Khoa và thầy Đặng Bảo Lâm trong thời gian qua.
26
PHỤ LỤC
27

Sign up to vote on this title
UsefulNot useful