Tải bản đầy đủ (.doc) (69 trang)

Đồ Án Robot Di Dộng Bám Theo Vật (Kèm Theo Program+C+So do nguyen ly)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.19 MB, 69 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA ĐIỆN - ĐIỆN TỬ



ĐỒ ÁN 2
ĐỀ TÀI:

ROBOT DI DỘNG BÁM THEO VẬT

GVHD : THS.PHẠM THÀNH DANH
SVTH : PHẠM ĐÔNG NHẬT DUY (06044601)
NGUYỄN ĐẠI DƯƠNG (06046371)
LỚP : DHDT2A1

Tp. Hồ Chí Minh, tháng 5 năm 2010


Trong thời đại ngày nay, ngành công nghiệp đóng vai trò quan trọng trong nền
kinh tế, khoa học… những ROBOT tự động, sẽ giúp cho con người rất nhiều,
chúng đã thay thế sức con người một cách hiệu quả nhất. ROBOT được sử dụng
rộng rãi cuộc sống, nơi mà môi trường có tính độc hại , nguy hiểm cũng như các
công việc yêu cầu có độ chính xác cao. Do vậy ROBOT có tầm quan trọng rất
lớn trong thời đại ngày nay.
Là sinh viên chuyên ngành điện tử tự động, để bổ sung những kiến thức
đã học cũng như nghiên cứu những vấn đề mới trong lĩnh vực điều khiển tự
động nên chúng em quyết định chọn đề tài “ROBOT DI DỘNG BÁM THEO
VẬT”.
Mặc dù đã cố gắng hoàn thành đồ án đúng thời hạn nhưng trong quá trình
thực hiện không tránh khỏi những thiếu sót. Chúng em rất mong nhận được sự


đóng góp ý kiến từ quý Thầy cô và các bạn.


MỤC LỤC
PHẦN

Trang

Phần 1.Lý thuyết định vị robot

6

Phần 2.Thiết kế mạch điều khiển

9

Phần 3. Thiết kế phần cơ Robot

18

Phần 4. Điều khiển Robot

20

Phần 5. Xử lý ảnh

25

Phần 6.Tổng quan về OPENCV


30

Phần 7. Truyền dữ liệu bằng module RF

40

Phần 8. Chương trình điều khiển

46


Phần 1: LÝ THUYẾT VỀ ĐỊNH VỊ ROBOT
1.1.

Định vị cho robot:
Có 2 cách: định vị tương đối và tuyệt đối
1.1.1. Định vị tương đối
Là một phương pháp phổ biến dùng để xác định vị trí tương đối của

robot di động trong mặt phẳng sau một quá trình duy chuyển nào đó so với
vị trí ban đầu. Việc giải bài toán định vị tương đối thực ra là giải bài toán
động học cho robot di động, nhằm xác định vị trí và hướng tức thời của
robot sau một quá trình chuyển động trong gốc tọa độ với bề mặt sàn của
robot ở thời điểm ban đầu.
Việc khó khăn là robot liên kết với sàn thi đấu bằng bánh xe và lớp
cao su, vì vậy việc chuyển động là nhờ vào lực ma sát, do đó việc chính
xác không cao lắm vì phục thuộc tương đối vào hai bánh xe, sự trượt
của bánh.....Sai số hệ thống là do những cơ cấu chấp hành,những thiết kế
không chính xác như: hai bánh xe không bằng nhau,không cân bằng…
Phương pháp định vị tương đối chủ yếu dựa vào số vòng quay của

motor, để xác định vị trí tương đối của robot sau một quá trình chuyển
động. Phương pháp này thì đơn giản, nhưng có khuyết điểm lớn nhất là
bán kính sai số lớn và là sai số tích lũy.
Sau đây là 1 ví dụ đơn giản:


Hình 1.1: Mô hình robot đơn giản
Trong hình hai bánh xe được truyền động bằng hai motor giảm tốc
riêng biệt và có hai encorder hồi tiếp xung cho mỗi motor. Đặt vấn đề là
bài toán yêu cầu cho robot chạy một đoạn thẳng 10 cm thì có sai số không
và sai số là bao nhiêu. Để giải quyết bài toán trên ta giả sử dùng 2 encoder
cho hai bánh xe với độ phân giải là 100 xung/vòng quay và encoder được
gắn trên bánh xe có đường kính 5cm,
Gọi D là đường kính của bánh xe Encorder
S là chu vi của bánh xe encorder
P là độ phân giải của encoder
D=50mm  S=2*3.14*25= 157 mm (1 vòng quay)
P=100  1góc =3.60 và 1xung=1.57mm
 100 xung=64 xung
Yêu cầu bài toán là cho robot chạy 1 đoạn 10cm(100mm)  robot
phải chạy sao cho bánh xe encoder phải quay hết 64 xung
Trên đây chỉ là tính toán tuyệt đối và encorder xoay trong điều kiện
lý tưởng,nhưng thực tế thì thường có sai số vì:
• Bánh xe không tròn
• Đường kính bánh xe thực tế không bằng với bánh xe dùng
trong tính toán
• Bánh xe lệch trục


• Vị trí lắp bánh xe không thích hợp dẫn đến bánh xe có thể






không tiếp xúc nền
Tần số lấy mẫu của encoder
Mặt sàn không cân bằng
Trượt bánh xe so với nền
Khi quay quá nhanh làm bánh xe bị trượt một khoảng

1.1.2. Định vị tuyệt đối:
Định vị tuyệt đối là phương pháp xác định vị trí chính xác của robot,
phương pháp này được thực hiện không thể thiếu các cảm biến, encoder,
công tắc hành trình ... những phần tử này tạo cơ sở cho robot nhận biết
đang ở đâu, toạ độ bao nhiêu. Điểm khác so với định vị tương đối là:
• Các phần thiết kế cơ khí không cần tuyệt đối chính xác
• Luôn luôn đọc giá trị hiện tại
• Điều khiển theo cơ sở logic
a. Ưu điểm của phương pháp định vị tuyệt đối:
• Định vị chính xác
• Vị trí sai số nhỏ,không đáng kể
• Cơ khí không cần thiết kế tuyệt đối chính xác
b. Nhược điểm của phương pháp này:
• Tốn kém kinh phí đầu tư
• Mạch thiết kế phức tạp, để đáp ứng yêu cầu điều khiển
• Cần cập nhật giá trị cảm biến liên tục

Phần 2: THIẾT KẾ PHẦN MẠCH ĐIỀU KHIỂN
2.1.


Tìm hiểu encoder:

Hình 2.1 Mô hình Encoder và encoder đang sử dụng E6B2


Ngõ ra của encoder có thể được xem như kênh A và kênh B như
hình dưới.
Hình2.2: Trạng thái ngõ ra kênh A và kênh B
H I

H I

3

1

A

H I

IS O 1

R 1 4 .7 K

L1A

2

R 11 170


3

7414

R 2 14K

2

1
C LR

1

PR E

4

2

4

R 3 4 .7 K

R 7 130

C LK
D

Q


6
D 1

7474

Q 1
2N 2222

Q 3
2N 3906

0
H I

0

DIR

3

1

IS O 2

4

2

R 6 4 .7 K


R 4 4 .7 K

Q 2
2N 2222

R 10 170
R 5 14K

0

1

0

L2A

B

2

7414


Ngõ ra của kênh A là điện áp được khuếch đại bởi transisstor Q1 và
tương thích TTL với thời gian tăng và giảm bằng mạch kích Schmittriger
L1. Hoạt động tương tự ở kênh B qua Q2 và L2. Rõ ràng là mạch kích
Schmitt kênh A tạo ra xung clock để chốt và mạch kích Schmitt kênh B
nối với ngõ vào diode của chốt. Với cấu hình này, trạng thái của ngõ ra Q
của chốt sẽ cho biết chiều quay của đĩa mã hoá.

Giả sử trạng thái logic của ngõ ra Q của SN7474 là mức cao. Thế thì
kênh B được ưu tiên dẫn trước kênh A. Nói cách khác, khi chốt được kích
cạnh, có 1 tín hiệu logic ở ngõ vào diode của nó. Dưới các điều kiện này,
bảng sự thật của mạch chốt sẽ biểu diễn ngõ ra Q của nó sẽ lên mức cao.
Chiều quay ngược chiều kim đồng hồ tồn tại dưới điều kiện kênh B dẫn
trước kênh A. Các điều kiện ngược lại làm quay theo chiều kim đồng hồ và
ngõ raQ của mạch chốt ở mức thấp.
Mạch điều khiển động cơ:
R O LE

24V

4
12V

12V

D 7

1

2.2.

3
5
8

R 6
2 .2 k


12V

6
Q 3

IR F 5 4 0
Q 5

12V
1
2

D 6

2

R 5
2 .2 k
1

4

2

3

Q 2

D KR L1


Q 4

D 8

330 - 1W

PW M 1

M O TO R D C
7

R L1

Q 7

12V
1

4

2

3

10K

R L1
10K

Hình 2.3: Mạch điều khiển động cơ


Giản đồ trạng thái điện áp:


Hình 2.4: Giản đồ trạng thái điện áp ngõ ra
Nếu cho động cơ chạy thì chân 1 Opto(PWM1) phải ở mức logic
1,lúc này nội trở hai chân 3 và 4 của Opto sẽ thấp, nguồn 12v qua R5(do
Opto) dẫn nên tại chân B của Q2 sẽ đạt mức logic thấp Q2 tắt  Q3
dẫn bão hoà  Q4 tắt  Q5 dẫn  Động cơ chạy.
Ngược lại, khi Opto tắt  Q2 dẫn bão hòa  Q3 tắt  Q4 dẫn(nếu
có điện áp rơi trên chân E của Q4)  Q5 tắt  Động cơ tắt
Khi muốn đảo chiều động cơ ta chỉ cần xuất mức logic 0 tại chân
DKRL1, lúc này role 2 sẽ ON, nhờ vào những tiếp điểm của role ta sẽ đảo
chiều cấp nguồn của động cơ  Động cơ chạy ngược chiều
2.3.

Mạch Detect màu trên sân thi đấu:
5V

4

100k
10K

3

D 3
LE D

Q U A N G T R O


2

220

+

1

-

LM 324
11

R 3
240

LE D

Hình 2.5: Mạch detect màu trên sân thi đấu

Nguyên lý hoạt động: Dựa vào sự thay đổi nội trở của Photo
Resistor khi được chiếu sáng hay che tối, điều này làm thay đổi nội trở
(dạng analog) tại chân (-) của Opam.Chân (+) là áp ngưỡng so sánh cho
ngõ vào (-).Vì vậy ở ngõ ra chỉ tồn tại hai trạng thái 1 nếu áp chân (-) nhỏ
hơn áp tại chân (+) và ngược lại là mức 0.
Trong sân thi đấu có hai màu, xanh và trắng, nếu led phát vào màu
trắng thì ánh sáng phản chiếu vào quang trở sẽ mạnh hơn khi đi vào màu
xanh vì vậy khi vào vạch trắng thì điện áp tại chân (-) nhỏ hơn áp tại chân
(+)  ngõ ra = 1.Ngược lại khi ra khỏi vạch trắng thì áp tại chân (-) lớn

hơn áp tại chân (+)  ngõ ra = 0,lấy mức logic này đưa vào mạch đảo tín
hiệu để tạo mức logic chính xác trước khi đưa vào vi điều khiển để nhận


biết màu và đưa ra điều khiển thích hợp. Ta có dạng trạng thái xung trong
hình sau:

Hình 2.6: Trạng thái xung
2.4. Mạch chọn kênh chương trình:

1
R 2

9
8
7
6
5
4
3
2
9
8
7
6
5
4
3
2


R 6

1

VC C

P
P
P
P
P
P
P
P
P
P
S
S
S
S
S
S

R
R
R
R
R
R
R

R
R
R
W
W
W
W
W
W

O
O
O
O
O
O
O
O
O
O
1
2
3
4
5
6

1
2
3

4
5
6
7
8
9
10

U 17

2
2
2
2
1
1
1
1

9
8
7
6
5
4
3
2
3
2
1

0
9
8
7
6

I0
I1
I2
I3
I4
I5
I6
I7
I8
I9
I1
I1
I1
I1
I1
I1

C I/O
S
S
S
S

0

1
2
3

EN

O U TPU T

1
1
1
1
1

0
1
4
3

S
S
S
S

E
E
E
E

L

L
L
L

E
E
E
E

C
C
C
C

T1
T2
T3
T4

15

0
1
2
3
4
5

Dùng vi mạch
4067 chúng ta


4067

có thể chọn được 16 chương trình từ 5 chân của vi điều khiển
Bảng hoạt động như sau:
Select 4
0
0
0
0
0
0
0

Select 3
0
0
0
0
1
1
1

Select 2
0
0
1
1
0
0

1

Select 1
0
1
0
1
0
1
0

EN
0
0
0
0
0
0
0

Output
Pro_1
Pro_2
Pro_3
Pro_4
Pro_5
Pro_6
Pro_7

0

1
1

1
0
0

1
0
0

1
0
1

0
0
0

Pro_8
Pro_9
Pro_10


1
0
1
0
0
SW1

1
0
1
1
0
SW2
1
1
0
0
0
SW3
1
1
0
1
0
SW4
1
1
1
0
0
SW5
1
1
1
1
0
SW6

X
X
X
X
1
No(*)
No(*) không kết nối với bất kỳ ngõ input nào,lúc này ngõ ra ở mức
1,nếu được tích cực thì ứng với mỗi trạng thái select X thì ngõ ra output sẽ
kết nối với 1 input mà ta vừa mới select X.
2.5.

Mạch nạp chương trình vào vi điều khiển:
P1

U 2
1
6
2
7
3
8
4
9
5

7
8
1

T2O U T

R 2 IN

T 2 IN

C 1+

C 2+

C 3

9

R XD

10

TXD

C 1V-

C 1

TO 89V51

4

M A X232
3
6


C O N N EC T TO PC

R 2O U T

C 4
C 2V+

5
2
C 2

Mạch trên dùng vi mạch Max232 dùng để chuyển từ chuẩn RS232
5V

sang mức logic 0 ;1.Nhờ vi điều khiển có chức năng nạp trực tiếp từ max
232 nên ta đưa trực tiếp hai chân TXD,RXD từ max232 vào vi điều khiển
(Dùng phần mềm Flash Magic của Phillips để load chương trình vào,ra vi
điều khiển)
2.6.

Mạch tổng quát:
A. Sơ đồ mạch Layout:

Sơ đồ mạch Capture:


SW 2
R 5

VC C


SPAR E

VC C
VC C

3
R 25
cuon day 1

R 36

VC C

1
C 9
1 0 4V C C
R 31
R

VC C
XTA L1

D 22

1 1 .0 5 9 2 M h Z

C 6

LED


J5

C

XTA L2
VC C

VC C
Q 6

3 .3 K

R 58 10K

LS1
100K

R 57
U 19A
11

LM 324

R 32
R

W A IT IN G

C O N 3

D 21

R 69
100K

40

E A /V P P
R ST

1
1
1
1
1
1
1
1

0
1
2
3
4
5
6
7

R XD
TXD

IN T0
IN T1
O U T EN C O D ER 1
O U T EN C O D ER 2
R L4
R L5

2
3
4
5
6
7
8
9

30
29

R 4
R 28

LED
Q 1
VC C

R

D 9
R

VC C

1

R 168

C 16
C

C
VC C

R XD

R XD
TXD

C 17
C

J4

J3
IN T 0
IN T 1

1
2
3
4

5
6
7
8

TXD

SW 1

LED

VC C

C 13

1

1
2
3

S E R IA L P O R T
C O N 3

S W D I P -2

A T89C 52

J1
1

2
3

EN C O D ER 2

120

R 16

LE D
R 108

D 25

220

LE D

1

C O N 3

VC C

R 7

VC C

R 9


VC C

VC C

Q 3

R 11

VC C

Q 4

R 12

VC C

Q 7

R 13

VC C

Q 8

R 14

VC C

Q 9


R 15

VC C

Q 10

R 17
VC C

VC C

Q 11

Q 12

Q 13

1

R 6

R 10

10K
Q 2

4
VC C

A LE /P R O G

PSEN

9
8
7
6
5
4
3
2

SPEAKER

+

3

-

2

XTA L1
XTA L2

U TPU T
E LE C T1
E LE C T2
E LE C T3
E LE C T4
SPAR E

LED
W A IT IN G

R 30
R

1

VC C R 67

31
9

VC C

.0 /T 2
P 3 .0 /R X D
.1 /T 2 -E X P 3 .1 /T X D
.2
P 3 . 2 /IN T 0
.3
P 3 . 3 /IN T 1
.4
P 3 .4 /T0
.5
P 3 .5 /T1
.6
P 3 .6 /W R
.7
P 3 .7/R D


O
S
S
S
S

R L5

VC C

R ST

VC C

1
2
3

EN C O D ER 1

19
18

1
1
1
1
1
1

1
1

1
2
3
4
5
6
7
8

R L4

Y 1
C 24

R ST
R 113
8 .2K

XT A L 1
XT A L 2

R E S I S T O R S IP 9

P
P
P
P

P
P
P
P

20

SW R ST

C 30
10U F

V R 100K
R 106

R 107

1
2
3
4
5
6
7
8

2
2
2
2

2
2
2
2

R L3

C 23

L1
L2
L3
W M 1
W M 2
W M 3
W M 4
W M 5

2 .0 /A 8
2 .1 /A 9
.2 /A 1 0
.3 /A 1 1
.4 /A 1 2
.5 /A 1 3
.6 /A 1 4
.7 /A 1 5

LED

Q 14


R 68
P
P
P2
P2
P2
P2
P2
P2

R L2

C 5
C

R
R
R
P
P
P
P
P

2
3
4
5
6

7
8
9

0
1
2
3
4
5
6
7

R L1

O U T

D
D
D
D
D
D
D
D

PW M 5

IN


/A
/A
/A
/A
/A
/A
/A
/A

PW M 4

C 4
C

.0
.1
.2
.3
.4
.5
.6
.7

PW M 3

LE D N G U O N

0
0
0

0
0
0
0
0

G N D

1
2

2

J15

P
P
P
P
P
P
P
P

PW M 1

1
R 55
D IO D E
1K


P O W _V X L

L M 7 8 0 5 C /T O 2 2 0

39
38
37
36
35
34
33
32

PW M 2

U 9

G N D

D 53

LE F T3
LE F T2
LE F T1
C EN TE R L
C EN TE R R
R IG H T 1
R IG H T 2
R IG H T 3


2
3
4
5
6
7
8
9

D 8
C O LO U R

U 16

R 66
1

VC C

VC C

R 2

LE F TA 3

R 8
120

VC C


R 18
R

R 19
R

R 20
R

R 21
R

R 22
R

R 23
R

R 24
R

R 26
R

R 27
R

4


LE D
C E N TE R L1

VC C

AQ 3

4
R O LE

AQ 4
IS O 1

AQ 2

A10

A8

A9
AQ 23

D 30

LE D

12V

M G 4


M O TO R AC

3

4

1
8

R O LE

AD 16

D IO D E
AD 13

AD 4

AD 1

AQ 22

IS O 7

AR 16
IR L 5 4 0 N /T O

AQ 6

AQ 24


AQ 20
AR 27

220

6

5
2
AQ 21

AR 4

A9

12V

1

A6
ISO 2

ISO 8

12V

4

AR 21


C O N 12
R 112

1

LS4
7

A R 15
R

12V
1
8

AQ 5
IR L 54 0 N /TO

1

AR 28

1

AR 22
2
3

4


2

3

11

1
2
3
4
5
6
7

+

3

-

2

1
2
3
4
5
6


24V

AR 13
R

M O TO R AC

C O N 7

U 20A

LM 324

W
W
W
W
W
W

M G 1

3

4

R 72
100K

S

S
S
S
S
S

LED

D 33
6

5
2

2

14
220

VC C

LS6
7

AR 3
R

4

D 29


AR 1
R

J13

3

R 111

1
2
3
4
5
6
7
8
9
10
11
12

2

11

LM 324

1

2
3
4
5
6
7
8
9
10

LED

12V

24V
D 17

P
P
P
P
P
P
P
P
P
P

+


12

-

13

C O N 10

12V

J12
U 19D

LED

2

4067

VC C

LED

0
1
2
3
4
5


LE F TA 1

R 71
100K

LED

A7

O
O
O
O
O
O
O
O
O
O

15

LED

A6

R
R
R
R

R
R
R
R
R
R

LED

4

220

VC C

EN

LE D

A4

8

2
2
2
2
1
1
1

1

SELEC T1
SELEC T2
SELEC T3
SELEC T4

LED

4

10

D 28

+

1
2
3
4
5
6
7
8
9
10

-


J7

R 110

10
11
14
13

LED

1

11

LM 324

S0
S1
S2
S3

LED

3

U 19C

C I/O


O U TPU T

1

VC C

9

I0
I1
I2
I3
I4
I5
I6
I7
I8
I9
I1
I1
I1
I1
I1
I1

1

2

LE F TA 2


R 70
100K

U 17
9
8
7
6
5
4
3
2
3
2
1
0
9
8
7
6

A1

VC C

1
2
3
4

5
6
7
8
9
10

1

VC C

O
O
O
O
O
O
O
O
O
O
1
2
3
4
5
6

A5


4

LE D

R
R
R
R
R
R
R
R
R
R
W
W
W
W
W
W

A4

+
220

P
P
P
P

P
P
P
P
P
P
S
S
S
S
S
S

A3

D 27

A2

-

5

R 109

7

A1

11


LM 324

9
8
7
6
5
4
3
2
9
8
7
6
5
4
3
2

U 19B
6

C E N TE R R 1

LE D

24V

AQ 11

AQ 9

4

AR 19
R

LE D

1

M O TO R AC

AD 20

D IO D E

ISO 12

AQ 28

AR 20
IR L 5 40 N /TO

3

AQ 12

2


AR 8

AQ 30

A Q 26

IS O 4

AR 29

12V

A10
1

O U T EN C O D ER 1

2

1

1

A7
4

14

+
EN C O D ER 1


AR 23

U 18A

12V

IS O 1 0

AR 24

AR 30
2

3

2

7

40106
3

4

M G 5

1
8


4

R

VC C

12V
3

4
R O LE

AD 5
AQ 8

3

2
D 37

R IG H T A 2

R 75

AQ 29

AD 17

IS O 3
R 3


6

5
2
AQ 27

1
8

R O LE

A R 17
R

8

VC C

U 20D
11

VC C

LM 324

R 64

D 38


R

LE D

VC C

14

R IG H T A 3

3

12V

LS3

24V

O U T EN C O D ER 2

7

D 24
AR 9
R

6

AR 11
R


5
2
A Q 15

7

40106

A Q 1 7D I O D E

4
R O LE

D 19
12V

M G 3

M O TO R AC

3

R 29

1
8

Q 32


24V

AD 12

D IO D E

4

1

1

U 18B
4

VC C

2

14
EN C O D ER 2

A3

4

12

+


13

C 10
C

-

R 39

24V

AD 9
J2

AR 12
IR L 5 4 0 N /T O

3

F2

AQ 18

2
12V

12V
R
D 7


2
1

C 18
C

LED

4

1

AC Q U Y 2
IS O 6

L M 7 8 1 2 C /T O 2 2 0
1
3
IN
O U T

R

J8
AR 25
A8

R 38

1

2

AC Q U Y 1

AQ 14

G N D

AQ 16

IS O 5
2

3

AR 26
2

100K

M O TO R A C

AQ 10

LM 324

LS5
7

D 40

12V

3

AD 8

U 20C
9

IR L 5 40 N /TO

24V

6

5
2

VC C

10

12V

LS2
7

D 20
AR 7
R


1

12V

AR 5
R

G 1
G 2

1

R IG H T3
R IG H T2
R IG H T1
C EN TE R R
C EN TE R L
LEF T1
LEF T2
LEF T3

18
17
16
15
14
13
12
11


R IG H T A 1

R 74
100K

11

VC C

1
2
3
4
5
6
7
8

74H C 540

4

R

Y
Y
Y
Y
Y

Y
Y
Y

2

1
19

1
2
3
4
5
6
7
8

4

D 36

A
A
A
A
A
A
A
A


1

R 62

2
3
4
5
6
7
8
9

A5

11

LM 324
7

+

5

-

6

U 1056968899

R IG H TA 3
R IG H T A 2
R IG H TA 1
C EN TER R 1
C EN TER L1
LE F TA 1
LE F TA 2
LE F TA 3

2

U 20B

A2

R 73
100K

4

VC C

VC C

Phần 3: THIẾT KẾ PHẦN CƠ CHO ROBOT
3.1.

Các hình
a.
Hình


chiếu của robot:
chiếu đứng:


Hình 3.a: Hình chiếu đứng robot tự động
b. Hình chiếu bằng:

Hình 3.b:
bằng

robot

tự

Hình

chiếu

động

c. Hình chiếu cạnh:

Hình

3.c:

robot

tự


Hình chiếu cạnh
động


Phần 4: ĐIỀU KHIỂN ROBOT
4.1.

Vi xử lý và các ngõ vào ra:
• Vi điều khiển P89V51RB2FN
16KB chương trình,5 kênh điều rộng xung,hai thanh ghi
DPTR,Watch dog timer,Brown out detect
• 16 CTHT tương ứng cho 16 chương trình hoặc 16 công tắc
hành trình
8 ngõ vào sensor dò đường
2 ngõ vào encoder, 2 ngõ vào ngắt ngoài
5 motor điều rộng xung
2 SW tổ hợp chọn chế độ hoạt động,1 nút chọn màu của đội






đỏ/xanh
4.2. Lập trình cho robot:
4.2.1 Đọc tín hiệu từ máy tính:
Phân vùng cảm biến : 8 led được chia thành 16 vùng (8 vùng trái và
8 vùng phải)
L3


L2

L1

CL

CR

R1

R2

R3

Với:









L3 sensor trái thứ 3 so với sensor trung tâm
L2 sensor trái thứ 2 so với sensor trung tâm
L1 sensor trái thứ 1so với sensor trung tâm
CL sensor trung tâm bên trái
CR sensor trung tâm bên phải

R1 sensor phải thứ 1 so với sensor trung tâm
R2 sensor phải thứ 2 so với sensor trung tâm
R3 sensor phải thứ 3 so với sensor trung tâm

Đọc cảm biến theo nguyên tắc : đọc từ trong ra ngoài, tức là kiểm
tra giá trị sensor từ CL,CR  L1,R1  L2,R2  L3,R3  Vùng error
Vùng Error sẽ được thực thi khi và chỉ khi robot đang chạy dò
đường nhưng bất ngờ không có sensor nào tích cực  đã chạy sai vạch 
tăng tốc bánh bên trái nếu trước đó rẽ phải hoặc tăng tốc bánh bên phải
nếu trước đó rẽ trái
A.

Bảng phân vùng :


L3

L2

L1

CL

CR

R1

R2

R3


1

1

1

0

0

1

1

1

1
1
1
1
1

1
1
1
0
0

1

0
0
0
1

0
0
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1

1
1
1
1

0

0

1

1

1

1

1

1

0
1
1
1
1
1

1
1

1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

1
0
0
1
1
1

1
1
0
0

0
1

1
1
1
1
0
0

1
1
1
1
1
1

1

1

1

1

1

1

0


0

1
1
1
1
00H
0
1

1
1

1
1

1
1
1
1
01H
1
0

1
1

0
1


Phân vùng
Vùng trung tâm
(Clr 00,01H)
Vùng trái 1
Vùng trái 2
Vùng trái 3
Vùng trái 4
Vùng trái 5
Vùng trái 6
(Setb 00H,Clr 01H)
Vùng trái 7
Vùng phải 1
Vùng phải 2
Vùng phải 3
Vùng phải 4
Vùng phải 5
Vùng phải 6
(Setb 01H,Clr 01H)
Vùng phải 7
XXX
Vùng lạc
Lạc phải
Lạc trái

(XXX) nếu không có sensor nào tích cực thì phải xét thêm hai bit 00H,01H
Ứng với mỗi vùng có 1 tốc độ riêng biệt  robot không thể lạc vạch được
B: Bảng tốc độ: ta có 4 hàm tốc độ ứng vời mỗi hàm có 16 tốc độ
khác nhau
Vùng

Tốc độ
Bánh trái
Bánh phải
Vùng trung tâm
60
60
Vùng trái 1
55
60
Vùng trái 2
50
60
Vùng trái 3
45
60
Vùng trái 4
40
60
Speed 1
Chậm
Vùng trái 5
30
60
Vùng trái 6
20
60
Vùng trái 7
10
60
Vùng phải 1

60
55
Vùng phải 2
60
50
Vùng phải 3
60
45
Vùng phải 4
60
40
Speed 1
Vùng phải 5
60
30
Vùng phải 6
60
20
Vùng phải 7
60
10


Lạc trái
Lạc phải
Vùng trung tâm
Vùng trái 1
Vùng trái 2
Vùng trái 3
Vùng trái 4

Vùng trái 5
Vùng trái 6
Vùng trái 7
Vùng phải 1
Vùng phải 2
Vùng phải 3
Vùng phải 4
Vùng phải 5
Vùng phải 6
Vùng phải 7
Lạc trái
Lạc phải
Vùng trung tâm
Vùng trái 1
Vùng trái 2
Vùng trái 3
Vùng trái 4
Vùng trái 5
Vùng trái 6
Vùng trái 7
Vùng phải 1
Vùng phải 2
Vùng phải 3
Vùng phải 4
Vùng phải 5
Vùng phải 6
Vùng phải 7
Lạc trái
Lạc phải
Vùng trung tâm

Vùng trái 1
Vùng trái 2
Vùng trái 3
Vùng trái 4
Vùng trái 5
Vùng trái 6

Vừa

Nhanh

Nhanh Nhất

00
60
120
100
80
60
40
30
20
10
120
120
120
120
120
120
120

00
120
180
140
100
80
60
40
30
20
180
180
180
180
180
180
180
00
180
255
230
200
170
140
100
50

60
00
120

120
120
120
120
120
120
120
100
80
60
40
30
20
10
120
00
180
180
180
180
180
180
180
180
140
100
80
60
40
30

20
180
00
255
255
255
255
255
255
255

Speed 2

Speed 3

Speed 4


Vùng trái 7
Vùng phải 1
Vùng phải 2
Vùng phải 3
Vùng phải 4
Vùng phải 5
Vùng phải 6
Vùng phải 7
Lạc trái
Lạc phải

20

255
255
255
255
255
255
255
00
200

255
230
200
170
140
100
50
20
200
00

Giải thuật đọc tín hiệu:


PHẦN 5: XỬ LÝ ẢNH
3.1.1 Các khái niệm cơ bản:
3.1.1.1 Điểm ảnh:
Ảnh trong tự nhiên là ảnh liên tục về không gian và độ sáng. Khi ảnh
được lưu vào máy tính thì ảnh đã được số hóa. Số hóa là sự biến đổi gần đúng
của một ảnh liên tục thành một tập hợp điểm phù hợp với ảnh thật về vị trí

không gian và độ sáng. Mỗi điểm như vậy gọi là một điểm ảnh ( PEL : Picture
Element ) hay còn gọi là Pixel. Điểm ảnh Pixel là là một phần tử của ảnh số tại
tọa độ (x,y) với độ sáng hoặc màu nhất định. Tập hợp những điểm ảnh tạo thành
ma trận ảnh.
3.1.1.2 Độ phân giải của ảnh:
Độ phân giải ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được
hiển thị. Khoảng cách các điểm ảnh được chọn sao cho mắt người thấy được sự
liên tục của ảnh và tạo nên mật độ phân bố theo hai trục x và y trong không gian
hai chiều.
3.1.1.3 Mức xám:
Mỗi điểm ảnh được đặc trưng cơ bản bởi tọa độ x, y của điểm ảnh và độ
xám. Mức xám của điểm ảnh là cường độ sáng của nó được gán giá trị số tại
điểm đó. Các thang mức xám thường dùng là: 16, 32, 64, 128, 256.Trong đó
mức 256 thường dùng nhất vì máy tính dùng 1 byte ( 2^8=256) để biểu diễn từ
0 đến 255 mức.

3.1.2 Các loại ảnh:
3.1.2.1 Ảnh đen trắng:
Ảnh đen chỉ bao gồm hai màu: màu đen và màu trắng. Người ta phân biệt
thành nhiều mức khác nhau. Nếu chỉ có hai mức: mức 0 và mức 1 hay còn gọi
là ảnh nhị phân. Mức 1 ứng với màu sáng và mức 0 ứng với màu tối. Nếu số


mức lớn hơn 2 người ta gọi là ảnh đa cấp xám. Việc xác định số mức là phụ
thuộc vào tiêu chí lượng hóa.
Với ảnh nhị phân, mỗi Pixel mã hóa trên một bit, còn với ảnh 256 mức
mỗi Pixel được mã hóa trên 8 bit. Ảnh nhị phân khá đơn giản, các phân tử ảnh
có thể coi như các phần tử logic, ứng dụng chính là tính toán logic để phân biệt
đối tượng ảnh với nền hoặc phân biệt điểm biên với các điểm khác.
3.1.2.2 Ảnh cường độ:

Ảnh cường độ là một ma trận dữ liệu ảnh, mà giá trị của nó đại diện cho
cường độ trong một số vùng nào đó của ảnh . Matlab chứa một ảnh cường độ
như một ma trận dơn , với mỗi phần tử của ma trận tương ứng với một pixel của
ảnh . Ma trận có thể thuộc lớp double , uint8 hay uint16 . Trong khi ảnh cường
độ hiếm khi được lưu với bản đồ màu , Matlab sử dụng bản đồ màu để hiển thị
chúng .
Những phần tử trong ma trận cường độ đại diện cho các cường độ khác
nhau hoặc độ xám . Những điểm có cường độ bằng 0 thường được đại diện
bằng màu đen và cường độ 1,255 hoặc 65535 thường đại diện cho cường độ cao
nhất hay màu trắng .
3.1.2.3 Ảnh màu:
Ảnh màu là ảnh tổ hợp từ 3 màu cơ bản: đỏ (Red), lục (Green), xanh lơ
(Blue) và thường thu nhận trên các dải tầng khác nhau. Mỗi Pixel ảnh màu gồm
3 thành phần. Mỗi thành phần cũng được chia thành L cấp khác nhau( thường là
256). Do vậy để lưu ảnh màu, người ta lưu trữ từng mặt màu riêng biệt, mỗi
màu lưu trữ như một ảnh xám đa cấp. Do đó không gian nhớ cho ảnh màu lớn
gấp 3 lần một ảnh đa cấp xám cùng kích thước.
Một mảng ảnh RGB có thể thuộc lớp double , uint8 hoặc uint16 . Trong
một mảng RGB thuộc lớp double , mỗi thành phần màu có giá trị giữa 0 và 1 .
Một pixel mà thành phần màu của nó là (0,0,0) được hiển thị với màu đen và
một pixel mà thành phần màu là (1,1,1 ) được hiển thị với màu trắng . Ba thành
phần màu của mỗi pixel được lưu trữ cùng với chiều thứ 3 của mảng dữ liệu .
Ví dụ giá trị màu R,G,B của pixel (2,5) được lưu trữ trong RGB(2,5,1) ,


RGB(2,5,2) và RGB(2,5,3) tương ứng . Mô hình ảnh màu dựa trên hệ tọa độ
Decac.

Không gian ảnh màu RGB
Ngoài ra trong các camera số, máy chụp ảnh số người ta còn thường dùng

mô hình màu HSV, mô hình YcbCr và mô hình YIQ:
- H: Hue –đặc trưng cho màu sắc.
- S: Saturation – đặc trưng cho mức độ đậm nhạt của màu sắc.
- V: Value – đặc trưng cho cường độ ánh sáng.

Mô hình màu HSV.


Mô hình màu YCbCr

Mô hình màu

YIQ.


Phần 6: TỒNG QUAN VỀ OPENCV
I. Tổng quan về OpenCV:
OpenCV (Open Source Computer Vision Library) là một thư viện
xử lý hình ảnh nguồn mở của Intel. Nó có rất nhiều tác dụng như: tương
tác giữa người và máy tính, nhận dạng vật, phân đoạn và nhận dạng,
nhận dạng khuôn mặt, nhận biết, hiểu về cử chỉ, cấu trúc của vận động,
và trong Robot di động. Thêm vào đó nó cải thiện rất nhiều các thuật
toán cở bản của thị giác máy như các hàm API cấp thấp hơn.
Intel đưa ra phiên bản OpenCV đầu tiên vào năm 1999. Ban đầu nó
yêu cầu phải có thư viện xử lý ảnh của Intel. Sau đó vì sự lệ thuộc này
mà họ đã phải gỡ bỏ và bây giờ chúng ta có thể sử dụng thư viện này
hoàn toàn độc lập. OpenCV rất đa dạng, nó hỗ trợ rất nhiểu hệ điểu
hành như: Window, Linux và MacOSX.
II. Những điểm đặc trưng:
Open CV có rất nhiều chức năng bạn có thể bị bất ngờ khi lần đầu tiên

tiếp xúc nhưng chỉ sau vài lần sử dụng bạn sẽ thấy dễ dàng hơn.
Sau đây là tóm tắt các chức năng cơ bản của openCV 1.0
1. Image and video I/O:
Những giao tiếp này cho phép đọc dữ liệu ảnh từ các file, hoặc từ
những video. Bạn cũng có thể tạo những files hình ảnh và video nữa.
2. Thị giác máy tính và thuật toán xử lý( mức trung bình và thấp):
Sử dụng giao tiếp này bạn có thể thử nghiệm với rất nhiều thuật
toán về thị giác máy tính mà không cần viết thêm code. Nó bao gồm
đường mép, đường thẳng và góc phát hiện, hình elip, hình ảnh kim tụ
tháp cho xử lý đa tỉ lệ, mẫu phù hợp, biến đổi đa dạng và nhiều hơn
nữa.
3. Module thị giác máy tính cấp cao:
OpenCV chứa đựng vài chức năng cao cấp. như nhận dạng khuôn
mặt, nhận dạng vật thể và tracking, nó bao gồm luồng quang học ( sử
dụng camera để xác định cấu trúc 3D), camera xác định kich thước và
âm thanh stereo.
4. AI và phương pháp học của máy:
Thị giác máy tính thường đòi hỏi phương pháp học của máy hay
phương pháp AI khác một vài phương pháp đó có trong OpenCV.
5. Lấy mẫu hình ảnh và sự chuyển đổi:
Nó rất có ích để xử lý một nhóm pixels thành một đơn vị. Open
CV có giao tiếp để trích những phân miền ảnh, lấy mẫu ngẫu nhiên,


chỉnh sửa kích cỡ ảnh, làm cong, xoay, và cho phép tạo hiệu ứng cho
ảnh.
6. Phương pháp để tạo và phân tích ảnh nhị phân:
ảnh nhị phân thường được dùng trong hệ thông kiểm tra, nó quét
để tìm ra sự thay đổi hình dạng hoặc đếm các phần trên ảnh. Sự biểu
diễn ảnh cũng rất thuận tiện khi chúng ta biết rõ vật thể cần bắt.

7. Cách thức tính toán thông tin 3D:
Những hàm này rất có ích khi cần sắp xếp và xác định một vật thể
với âm thanh stereo hoặc không gian đa chiều phức tạp từ một
camera.
8. Mã lệnh toán để xử lý ảnh, thị giác máy tính và biên dịch ảnh:
OpenCV sử dụng các phép toán thông dụng như: đại số, thống kê,
hình học.
9. Đồ họa:
Những giao diện này cho phép bạn viết chữ và vẽ trên hình ảnh,
thêm vào đó những chức năng thú vị có thể tạo ảnh, và những tính
năng này còn được dùng để tạo nhãn và đánh dấu. ví dụ nếu bạn muốn
viết một chương trình nhận dạng vật thể, nó sẽ giúp bạn tạo nhãn ảnh
với kích thước và vị trí định sẵn.
10. Phương thức GUI:
OpenCV có cửa sổ giao diện riêng trong khi đó nó bị giới hạn khi
làm việc trong mỗi môi trường, chúng cung cấp đa môi trường API để
hiển thị hình ảnh và cho phép người dùng nhập dữ liệu thông qua
chuột hoặc bàn phím và điều khiển quá trình.
11.Cấu trúc dữ liệu và thuật toán
Với những giao diện này bạn có thể lưu, tìm kiếm, và cách danh
mục điều khiển, các tuyển tập(cũng như các tập hợp lệnh được gọi ),
đồ họa và sơ đồ nhánh một cách hiệu quả.
12.Khả năng tồn tại của dữ liệu
Những phương pháp này cung cấp các giao diện một cách thuận lợi
để lưu trữ các dạng khác nhau của dữ liệu vào đĩa để có thể khôi phục
khi cần thiết.
III. Cấu tạo
Những hàm của OpenCV có chứa ở trong vài modules.
CXCORE chứa đựng các định nghĩa về kiểu dữ liệu cơ bản. ví dụ, cấu
trúc dữ liệu của ảnh, các điểm và các hình chữ nhật được xác định

trong file cxtypes.h. CXCORE cũng chứa đựng các phép toán đại số
tuyến tính,thống kê,các hàm lâu dài và lỗi thao tác. Có một chút kỳ
cục o đây là các hàm đồ họa phục vụ cho vẽ trên ảnh được giữ ở đây.


CV chứa đựng quá trình xử lý ảnh và các phương pháp đánh giá
sơ bộ kích thước ảnh. Những hàm tính toán hình học cũng được lưu
trữ tại đây.
CVAUX được mô tả trong văn bản của OpenCV như là modul
cũ và chỉ dùng để thí nghiệm. Tuy nhiên, giao diện đơn giản nhất cho
nhận dạng mặt được nằm trong modul này. Những mã nguồn nằm
trong module này rất phù hợp cho việc nhận dạng mặt và chúng được
sử dụng rộng rãi cho mục đích này.
1. ML chứa đựng giao diện mechine-learning
Những hàm còn lại được nằm trong HighGUI và CVCAM. Cả hai
đều nẳm ở thư mục có tên “otherlibs”, sử dụng chúng rất dễ gặp lỗi.
Vì rằng HighGUI chứa các thư viện vào ra cơ bản , bạn sẽ muốn chắc
chắn hơn, đừng bỏ sót nó.Nó cũng chứa đựng nhiều cửa sổ đa chức
năng.
CVCAM là thư viện chứa các hàm truy nhập video thông qua
DirectX trên môi trường Window 32 bit. Tuy nhiên, HighGUI cũng có
các giao diện video.Trong bài báo này, tôi chỉ xem xét HighGUI.
Chúng đơn giản, làm việc trên nhiều môi trường. Nếu bạn sử dụng
Window XP hoặc 2000, bạn có thể làm tăng hiểu quả của nó bằng
cách chuyển qua giao diện CVCAM, nhưng học OpenCV sẽ đơn giản
hơn khi dùng HighGUI.


IV.


Cài đặt OpenCV
1. Cài đặt cơ bản
OpenCV cho Linux và MacOSX được đóng gói như một gói
mã nguồn lưu trữ. Bạn sẽ phải xây dựng cả thư viện tĩnh và cả
những đối tượng chia sẻ (shared-object). Bạn cần xây dựng RPM
trước tiên và cài đặt từ nó, hoặc biên dịch và cài đặt nó ngay.Cấu
trúc cho cả hai được nằm trong INSTALL.
Với Window ta khi cài đặt OpenCV,nó sẽ cop file OpenCV
vào thư mục mà bạn chọn.Cách thức lựa chọn trong đường dẫn hệ
thống của bạn chứa mã nhị phân OpenCV, đăng kí một vài bộ lọc
DirectX.Mặc định nó cài đặt
đến C:/Program
Files/OpenCV/<version>
2. Những yêu cầu khi cài đặt trong windows
Đối với người dùng xài Windows, OpenCV rất dễ dàng cài đặtvà
luôn hoạt động. nhưng một chút cải tiến nhỏ sẽ cho bạn kết quả tốt
hơn. Sau đây là một vài đề nghị.
OpenCV chỉ là một công cụ hỗ trợ cho người lập trình
không phải là một chương trình bạn có thể lưu giữ nó ở một nơi
nào đó khác thư mục Progam files. Nếu bạn thích cài vào một nơi
khác hãy chọn thư mục đó trước khi nó hỏi.
Tôi đề nghị bạn cũng quyết định trước khi cài đặt – bạn
muốn windows tìm kiếm những files dll của OpenCV như thế nào.
Bạn có thể chỉnh sửa đường dẫn của hệ thống của bạn thay vì của
hệ thống, hoặc bạn có thể di chuyển chúng sau khi cài đặt từ thư
mục “bin” của OpenCV bằng thư mục gốc của bạn.
Nếu bạn muốn di chuyển các files dll nhưng bạn không chắc
thư mục gốc của bạn nằm ở đâu, bạn có thể lưu chúng bằng cách
chạy tiện ích Sysinfo có sẵn ở địa chỉ www.cognotics.com/utilities.
Nếu bạn thích chỉnh đường dẫn hơn di chuyển các file dll, bạn có

thể cài đặt bằng cách lựa chọn các check box “ Add bin directory
to path”.
3. Sau khi cài đặt
Thư mục OpenCV có chứa và thư mục con. Thư mục “docs” có
chứa các tài liệu html cho tất cả các hàm và kiểu dữ liệu. từ các tài
liệu này bạn có thể làm các ví dụ, bạn cũng có thể duyệt (browse)
thư mục “samples”.
Bạn cũng cần đến những file header khi biên dịch chương
trình nó có ở trong các module của OpenCv. Mặc dù bạn không
cần làm việc này. Tôi thích tập hợp chúng lại với nhau vào trong
một thư mục.


×