Tải bản đầy đủ (.docx) (33 trang)

Báo cáo đồ án môn học Robot tìm đường trong mê cung đơn giản

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 (696.26 KB, 33 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN
--------o0o--------

ĐỒ ÁN MÔN HỌC 1
ĐỀ TÀI:

Điều Khiển Robot Dò Đường Trong Mê Cung

SVTH: 1. Nguyễn Hữu Toàn
2. Hồ Đức Dũng
GVHD: TS. Trương Đình Nhơn

TP HỒ CHÍ MINH, THÁNG 6/2016

13151102
13151015


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Giáo viên hướng dẫn: TS. Trương Đình Nhơn
Họ và tên sinh viên:
Lớp:

Hồ Đức Dũng

MSSV: 13151015

Nguyễn Hữu Toàn


MSSV: 13151102

131512A

Ngành: Công Nghệ Kỹ Thuật Điều Khiển và Tự Động Hóa
Tên đề tài: Thiết Kế và Điều Khiển Robot Dò Đường Trong Mê Cung
Nhận xét của giáo viên hướng dẫn:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

TP.HCM,

tháng 6 năm 2016

TS. Trương Đình Nhơn
2


MỤC LỤC

3


MỞ ĐẦU
Ngày nay điều khiển tự động đã trở thành một nhu cầu không thể thiếu được
của con người. dưới sự xuất hiện của các học thuyết và các ứng dụng cụ thể trong
đời sống hằng ngày, có thể nói điều khiển tự động đang chi phối dần cuộc sống của
chúng ta. con người đang cố gắng sáng tạo ra các con robot có khả năng làm việc
thay cho con người. Chúng ta thường bắt gặp các con robot trong các dây chuyền
công nghiệp sản xuất tự động hay robot giúp việc trong gia đình. Để tìm ra các ý
tưởng sáng tạo hay hàng năm đề diễn ra cuộc thi robocon châu á thái bình dương

đó là tiền đề để tạo ra những con robot có khả năng áp dụng vào thực tế.
Robot di động là một thành phần có vai trò quan trọng trong ngành robot
học. Cùng với sự phát triển mạnh mẽ của hệ thống tự động hóa, các mạch vi điều
khiển, robot tìm đường đã ngày càng hoàn thiện và cho thấy lượi ích to lớn trong
cuộc sống. Một vấn đề rất được quan tâm khi nghiên cứu về robot tìm đường là làm
thế nào robot có thể di chuyển 1 cách ổn định, nhận biết được vị trí nó đang đứng
và di chuyển tránh né các vật cản tới 1 vị trí xác định.
Mục tiêu của đề tài là thiết kế, thi công, điều khiển robot tự hành. Robot tự
hành có thể hoạt động ổn định, tự tìm đường đi đến vị trí đích đã xác định sẵn trong
mê cung, có thể học nhanh chóng cách tìm đường đi khi thay đổi hình dạng mê
cung, sử dụng thuật toán tìm kiếm theo chiều sâu trong trí tuệ nhân tạo. Áp dụng
thuật toán Wall Follower để dò đường và dùng Arduino giao tiếp với máy tính.
Trong phạm vi đề tài này em sẽ tìm hiểu thuật toán và thi công Robot di
chuyển theo mép tường (Wall Following Robot) dựa vào cảm biến hồng ngoại vận
cản.

4


Nội dung của đề tài: bao gồm những chương sau:
Chương 1: Cơ sở lý thuyết.
Nội dung của chương này là trình bày lý thuyết về các thuật toán tìm kiếm
đường và lý thuyết giải thuật PID
Chương 2: Giới thiệu các phẩn tử của Robot
Chương này chủ yếu trình bày sơ lược về cấu trúc hoạt động của Board mạch
Arduino, cảm biến hồng ngoại, mạch cầu H và thiết kế về phần khung xe và phần
điện cho mô hình robot di động.
Chương 3: Thuật toán điều khiển
Chương này trình bày giải thuật tìm đường bám tường, ứng dụng PID để
điểu khiển tốc độ động cơ.

Kết luận và hướng phát triển của đề tài.
Chương này trình bày những kết quả đạt được, các mặt hạn chế và hướng
phát triển của đề tài.

5


CHƯƠNG 1

CƠ SỞ LÝ THUYẾT

1.1 Tổng quan về bài toán bám tường của robot di động

Ngày nay, Robot học đã đạt được những thành tựu to lớn trong nền sản xuất
công nghiệp. Những cánh tay robot có khả năng làm việc với tốc độ cao, chính
xác và liên tục làm năng suất lao động tăng nhiều lần. Chúng có thể làm việc
trong các môi trường độc hại như hàn, phun sơn, các nhà máy hạt nhân, hay lắp ráp
các linh kiện điện tử tạo ra điện thoại, máy tính…một công việc đòi hỏi sự tỉ mỉ,
chính xác cao. Tuy nhiên những robot này có một hạn chế chung đó là hạn chế về
không gian làm việc. Không gian làm việc của chúng bị giới hạn bởi số bậc tự do
tay máy và vị trí gắn chúng. Ngược lại, các Robot tự hành lại có khả năng hoạt
động một cách linh hoạt trong các môi trường khác nhau.
Robot tự hành là loại mobile robot có khả năng tự hoạt động, thực thi nhiệm vụ
mà không cần sự can thiệp của con người. Với những cảm biến, chúng có khả năng
nhận biết về môi trường xung quanh. Robot tự hành ngày càng có nhiều ý nghĩa
trong các ngành công nghiệp, thương mại, y tế, các ứng dụng khoa học và phục vụ
đời sống của con người. Với sự phát triển của ngành Robot học, robot tự hành
ngày càng có khả năng hoạt động trong các môi trường khác nhau, tùy mỗi lĩnh vực
áp dụng mà chúng có nhiều loại khác nhau như robot sơn, robot hàn, robot cắt cỏ,
robot thám hiểm đại dương, robot làm việc ngoài vũ trụ. Cùng với sự phát triển

của yêu cầu trong thực tế, robot tự hành tiếp tục đưa ra những thách thức mới cho
các nhà nghiên cứu. Vấn đề của robot tự hành là làm thế nào để robot tự hành có
thể hoạt động, nhận biết môi trường và thực thi các nhiệm vụ đề ra.

6


Hiện tại vấn đề di chuyển là vấn đề trọng tâm của robot di động. Để di chuyển
được, robot phải thực hiện một loạt các tác vụ, mỗi tác vụ gắn với một bài toán nhỏ
trong bài toán "dịch chuyển". Các bài toán đó gồm:

- Công việc lập bản đồ môi trường hoạt động của robot. Nếu không được cung
cấp dữ liệu trước thì robot phải có khả năng lập bản đồ.
- Việc định vị, robot phải có khả năng biết được mình đang ở đâu trong bản đồ
toàn cục hoặc địa phương.
- Việc hoạch định đường đi sắp tới của robot, sau khi nó biết được bản đồ và
biết mình đang ở vị trí nào.
- Việc điều khiển cho robot di động, tức là điều khiển các cơ cấu để robot đi
theo con đường thu được
- Nhiệm vụ tránh chướng ngại vật khi robot đang di chuyển.
1.1.1 Bài toán di chuyển theo tường
Việc di chuyển theo tường (wall following) là một tác vụ thường thấy ở
robot di động, trong các môi trường biết trước hoặc không biết trước. Tác vụ này
được dùng với các nhiệm vụ: tránh chướng ngại vật, đi theo tường biết trước, đi
theo tường không biết trước.
Để thực hiện mục tiêu trên, trong đồ án này bọn em tập trung vào các vấn đề
sau:
- Nghiên cứu các bộ điều khiển cho robot bám tường.
- Thiết kế và chế tạo một Mobile Robot.
- Thiết kế và thực hiện các mạch điều khiển cho robot.

7


- Lập trình cho robot để hiện thực các bộ điều khiển.
- Nhận xét kết quả và kết luận.
1.2 Giải Thuật PID
1.2.1 Sơ đồ khối nguyên lý hoạt dộng

1.2.2 Lý thuyết
thuật toán PID
Một bộ

điều khiển vi tích

phân tỉ

lệ (bộ điều khiển

PID- Proportional Integral Derivative) là một cơ chế phản hồi vòng điều
khiển (bộ điều khiển) tổng quát được sử dụng rộng rãi trong các hệ thống điều
khiển công nghiệp – bộ điều khiển PID là bộ điều khiển được sử dụng nhiều
nhất trong các bộ điều khiển phản hồi. Bộ điều khiển PID sẽ tính toán giá trị
"sai số" là hiệu số giữa giá trị đo thông số biến đổi và giá trị đặt mong muốn.
Bộ điều khiển sẽ thực hiện giảm tối đa sai số bằng cách điều chỉnh giá trị điều
khiển đầu vào. Giải thuật tính toán bộ điều khiển PID bao gồm 3 thông số riêng
biệt, do đó đôi khi nó còn được gọi là điều khiển ba khâu: các giá trị tỉ lệ, tích
phân và đạo hàm, viết tắt là P, I, và D. Giá trị tỉ lệ xác định tác động của sai số
hiện tại, giá trị tích phân xác định tác động của tổng các sai số quá khứ, và giá
trị vi phân xác định tác động của tốc độ biến đổi sai số. Tổng chập của ba tác
động này dùng để điều chỉnh quá trình thông qua một phần tử điều khiển như vị

trí của van điều khiển hay bộ nguồn của phần tử gia nhiệt. Nhờ vậy, những giá
trị này có thể làm sáng tỏ về quan hệ thời gian: P phụ thuộc vào sai số hiện
8


tại, I phụ thuộc vào tích lũy các sai số quá khứ, và D dự đoán các sai số tương
lai, dựa vào tốc độ thay đổi hiện tại.
Khâu tỉ lệ, tích phân, vi phân được cộng lại với nhau để tính toán đầu ra của bộ
điều khiển PID. Định nghĩa rằng u(t) là đầu ra của bộ điều khiển, biểu thức
cuối cùng của giải thuật PID là:

trong đó các thông số điều chỉnh là:
Độ lợi tỉ lệ,
giá trị càng lớn thì đáp ứng càng nhanh do đó sai số càng lớn, bù khâu tỉ lệ
càng lớn. Một giá gị độ lợi tỉ lệ quá lớn sẽ dấn đến quá trình mất ổn định và
dao động.
Độ lợi tích phân,
giá trị càng lớn kéo theo sai số ổn định bị khử càng nhanh. Đổi lại là độ vọt
lố càng lớn: bất kỳ sai số âm nào được tích phân trong suốt đáp ứng quá độ
phải được triệt tiêu tích phân bằng sai số dương trước khi tiến tới trạng thái
ổn định.
Độ lợi vi phân,
giá trị càng lớn càng giảm độ vọt lố, nhưng lại làm chậm đáp ứng quá độ và
có thể dẫn đến mất ổn định do khuếch đại nhiễu tín hiệu trong phép vi phân
sai số.

9


CHƯƠNG 2


GIỚI THIỆU VỀ CÁC PHẦN TỬ TRONG ROBOT

2.1 Động cơ DC
DC động cơ là động cơ điện hoạt động với dòng một chiều. Động cơ DC sử
dụng rộng rãi trong các ứng dụng dân cư cũng như các ngành công nghiệp. Thông
thường động cơ DC chỉ chạy ở một tốc độ khi kết nối với nguồn điện, nhưng chúng
tôi vẫn có thể kiểm soát tốc độ và hướng của động cơ với sự hỗ trợ của các mạch
điện tử với phương pháp PWM.
Động cơ DC trong các hình thức của động cơ dân sự thường hoạt động với
điện áp thấp, được sử dụng với tải trọng nhỏ. Trong công nghiệp, động cơ DC được
sử dụng trong các lĩnh vực đòi hỏi phải có mô-men xoắn lớn hơn trên máy tính
hoặc yêu cầu thay đổi trong phạm vi tốc độ.

2.2 Mạch cầu H dùng IC L298N
Cầu H là một mạch điện tử cho phép điện áp được đặt lên tải theo 2 hướng ,
mạch này thường được sử dụng để thay đổi điện áp trung bình cấp cho động cơ nhờ
vào xung PWM, ngoài ra cầu H còn được dùng để đảo chiều quay động cơ.

10


- Động cơ quay theo chiều thuận.Ở phía A, transistor Q1 mở, Q3 đóng. Ở phía B,
transistor Q2 đóng, Q 4 mở. Dó đó, dòng điện trong mạch có thể chạy từ nguồn
12V đến Q1, qua động cơ đến Q4 để về GND.
- Động cơ quay theo chiều ngược: Ở phía A, transistor Q1 đóng, Q3 mở. Ở phía B,
transistor Q2 mở, Q 4 đóng. Dó đó, dòng điện trong mạch có thể chạy từ nguồn
12V đến Q2, qua động cơ đến Q3 để về GND.
11



2.3 Cảm biến hồng ngoại
Nguyên lý của cảm biến này như sau : mắt phát hồng ngoại sẽ phát ra sóng ánh
sáng có bước sóng hồng ngoại , ở mắt thu bình thường thì có nội trở rất lớn
(khoảng vài trăm kilo ôm ) , khi mắt thu bị tia hồng ngoại chiếu vào thì nội trở của
nó giảm xuống ( khoảng vài chục ôm). Lợi dụng nguyên lý này người ta chế tạo ra
các cảm biến IR. Hình sau biểu diễn nguyên lý hoạt động của cảm biến phát hiện

vật cản IR:
Sơ đồ mạch cảm biến chống nhiễu

12


Hình ảnh cảm biến sau khi hoàn thành:

2.4 Board mạch Arduino
UNO R3

Vi điều khiển

ATmega328 họ 8bit

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động

16 MHz


Dòng tiêu thụ

khoảng 30mA

Điện áp vào khuyên dùng

7-12V DC

Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O

14 (6 chân hardware PWM)

Số chân Analog

6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V)

500 mA

Dòng ra tối đa (3.3V)

50 mA
32 KB (ATmega328) với 0.5KB dùng bởi


Bộ nhớ flash

bootloader

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

13


Arduino Uno được xây dựng với phân nhân là vi điều khiển ATmega328P sử dụng
thạch anh có chu kì dao động là 16 MHz. Với vi điều khiển này, ta có tổng cộng 14
pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó có 6 pin PWM, được đánh dấu
~ trước mã số của pin). Song song đó, ta có thêm 6 pin nhận tín hiệu analog được
đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào
bình thường (như pin 0 - 13). Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối
trực tiếp với LED trạng thái trên board.
Trên board còn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ
cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay
thông qua ắc-quy nguồn.
Khi làm việc với Arduino board, một số thuật ngữ sau cần được lưu ý:


Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt

điện. Về vai trò, ta có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu
trên board. Chương trình được viết cho Arduino sẽ được lưu ở đây. Kích
thước của vùng nhớ này thông thường dựa vào vi điều khiển được sử dụng,
ví dụ như ATmega8 có 8KB flash memory. Loại bộ nhớ này có thể chịu
được khoảng 10,000 lần ghi / xoá.



RAM: tương tự như RAM của máy tính, sẽ bị mất dữ liệu khi ngắt điện
nhưng bù lại tốc độ đọc ghi xoá rất nhanh. Kích thước nhỏ hơn Flash
Memory nhiều lần.



EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì
ghi / xoá cao hơn - khoảng 100,000 lần và có kích thước rất nhỏ. Để đọc /
ghi dữ liệu ta có thể dùng thư viện EEPROM của Arduino.

14


15


2.4 Thiết Kế Robot
Phần này giới thiệu sơ lược về phần cứng của robot tìm đường.

Robot
tìm đường được thiết kế
như

hình gồm các
phần chính như
- Khung xe bằng

sau:
mica.

- Bánh xe đa hướng.
- Động cơ DC có hộp số dùng để truyền động cho 2 bánh xe.
- Hệ thống cảm biến được chọn sử dụng trong mô hình này là cảm biến hồng ngoại
vật cản.
- Nguồn pin 12 VDC, kèm theo mạch giảm áp.
- Bo mạch Arduino UNO.
- Module L298N.

16


CHƯƠNG 3

THUẬT TOÁN ĐIỀU KHIỂN

3.1 Điều chế độ rộng xung PWM
Điều khiển động cơ PWM phương pháp dựa trên nguyên tắc hoạt động cho động cơ
chạy bằng chuỗi xung nhanh chóng mở và đóng. Điện DC được chuyển đổi thành
tín hiệu sóng vuông (chỉ có hai cấp độ và khoảng 0 điện áp hoạt động volt). Tín
hiệu sóng vuông này cho động cơ.
Nếu tần số chuyển đổi là đủ lớn động cơ sẽ chạy ở tốc độ ổn định phụ thuộc vào
trục mô-men xoắn.
Với phương pháp PWM, điều chỉnh tốc độ động cơ thông qua điều chế độ rộng

xung, tức là thời gian "xung đầy đủ" ("on") của chuỗi xung vuông cho động cơ.
Điều chỉnh này sẽ ảnh hưởng đến công suất trung bình cho động cơ và do đó sẽ
thay đổi cần điều khiển tốc độ động cơ.

17


Code Thay đổi xung PWM để thay đổi tốc dộ động cơ:
-

Điều khiển 2 động cơ cùng một lúc:

1.

//Motor A

2.

int enA = 8;

3.

int in1 = 7;

4.

int in2 = 6;

5.
6.


//Motor B

7.

int in3 = 5;

8.

int in4 = 4;

9.

int enB = 3;

10.
11.

void setup()

12.

{

13.

pinMode(enA, OUTPUT);

14.


pinMode(in1, OUTPUT);

18


15.

pinMode(in2, OUTPUT);

16.

pinMode(enB,OUTPUT);

17.

pinMode(in3, OUTPUT);

18.

pinMode(in4, OUTPUT);

19.

}

20.
21.

void MotorRunning()


22.

{

23.

//Running motor A

24.

digitalWrite(in1, HIGH);

25.

digitalWrite(in2, LOW);

26.

analogWrite(enA, 200);

27.
28.

//Speed PWM: 0~255

29.

//Running motor B

30.


digitalWrite(in3, HIGH);

31.

digitalWrite(in4, LOW);
19


32.

analogWrite(enB, 200);

33.
34.

//Speed PWM: 0~255

35.

//Reverse 2s.

36.

delay(2000);

37.

digitalWrite(in1, LOW);


38.

digitalWrite(in2, HIGH);

39.

digitalWrite(in3, LOW);

40.

digitalWrite(in4, HIGH);

41.
42.

//STOP 2s.

43.

delay(2000);

44.

digitalWrite(in1, LOW);

45.

digitalWrite(in2, LOW);

46.


digitalWrite(in3, LOW);

47.

digitalWrite(in4, LOW);

48.

}
20


49.
50.

void loop()

51.

{

52.

MotorRunning();

53.

delay(1000);


54.

}

3.2 Giải thuật PID
3.2.1 Lưu

đồ giải thuật

3.2.2
Thuật

toán

bám tường trái
int

Lmax=250,Midwall=9,Lwall=15,basespeed;
21


int Lmin=5;
void straightL()// hàm bám tường trái
{
if(readirL{
basespeed=200;
kp=12.5;kd=30;
er=readirL-Lwall;
pd(er);

motorL(1,dutyL);
motorR(1,dutyR);
}
if((readirL>Lmin)&&(readirMid>Midwall))
{
basespeed=50;
motorL(1,basespeed);
motorR(2,basespeed);
}
}

3.2.3 Thuật toán bám tường phải
int Rmax=250,Midwall=9, Rwall=15 ,basespeed;
int Rmin=5;
22


void straightR()
{
if(readirR{
basespeed=200;
kp=12;kd=30;
er=readirR-Rwall;
pd(er);
motorL(1,dutyL);
motorR(1,dutyR);
}
if((readirR>Rmin)&&(readirMid>Midwall))
{

basespeed=50;
motorL(2,basespeed);
motorR(1,basespeed);
}
}

3.4 Ứng Dụng
Robot có thể giúp các công việc công việc như sơn dọc mép tường, di chuyển hàng
hóa …
KẾT LUẬN



Kết quả đạt được:
Phần cứng:
23


- Kết cấu chắc chắn, linh hoạt do có bánh đa hướng phía trước và phía sau,
chịu được va chạm.
- Động cơ mạnh, tốc độ tối đa khi cấp nguồn 12V. - Cảm biến hồng ngoại
chính xác cao.


Giải thuật:
- Đo được khoảng cách từ robot tới tường, từ đó xác định vị trí của Robot.
- Luật điều khiển đơn giản nhưng khá hiệu quả.




Hướng phát triển:
- Kết hợp công nghệ xử lí ảnh vẽ lại hình dạng đường đi của robot tự hành để
ứng dụng trong việc tìm đường đến các vị trí nguy hiểm trong thực tế.
- Tùy thuộc vào các ứng dụng và đường đi mà áp dụng các thuật toán khác
nhau để đem lại hiệu quả cao nhất.

24


TÀI LIỆU THAM KHẢO
[1]. />%C4%91%C6%B0%E1%BB%9Dng_%C4%91i_trong_m%C3%AA_cung.
[2]. />%E1%BB%83n_PID
[3]. />[4.]. />
25


×