Khối truyền thông RS232

Một phần của tài liệu Thiết kế phần cơ sở của robot tự hành (Trang 70)

Hình 6.4– Sơ đồ khối truyền thông RS232

Khối này có nhiệm vụ nhận tín hiệu điều khiển từ cổng RS232 của laptop truyền xuống cho PIC16F877A điều khiển hoạt động của robot.

6.5 Mch phn cng hoàn chnh:

Mạch được thiết kế bằng phần mềm Proteus 7 Professional. Sau khi thiết kế mạch in, ta hoàn thiện các mạch phần cứng như sau:

 Mạch điều khiển gồm khối nguồn, khối điều khiển trung tâm sử dụng PIC16F877A và khối truyền thông RS232.

Hình 6.5– Mạch điều khiển

Chương 6: Thiết kế mạch phần cứng

Hình 6.7– Mạch công suất

CHƯƠNG 7

Xây dng phn mềm điều khin 7.1 Sơ đồ tng quát ca robot:

7.2 Robot di động bám đối tượng:

Mục tiêu của luận văn là điều khiển robot bám theo một đối tượng sử dụng xử lý ảnh trong Matlab. Nó phải duy trì được khoảng cách nhất định giữa robot và đối tương, khi đối tượng di chuyển robot phải di chuyển theo dựa vào hình ảnh thu được từ

webcam để xác định đối tượng đi thẳng, đi lùi, rẽ trái, rẽ phải. Nghĩa là chúng ta phải

điều khiển cả tốc độ và hướng của robot tuy nhiên trong luận án này tôi chỉ điều khiển hướng, tốc độ của đối tượng có thể xem là không đổi. Để làm được việc này, chúng ta phải nhận dạng được đối tượng và xác định được hướng di chuyển của nó. Thứ hai phải xây dựng thuật toán bám đối tượng. Thứ ba là phải xây dựng được phần cứng để

kiểm định thuật toán

Có rất nhiều cách để dò tìm đối tượng ví dụ dựa trên hình dáng, âm thanh v..v. những thuật toán này thực sự rất phức tạp. Để giảm độ khó của thuật toán theo dõi chúng ta đặt phía sau đối tượng một vật có những thuộc tính về màu sắc đặc biệt ví dụ

màu đỏ, màu vàng, màu xanh v..v. Như vậy, lúc tiến hành theo dõi sẽ giảm được rất nhiều về việc xử lý nhiễu do nền và các đối tượng không mong muốn gây ra, giảm đáng kể sự nhầm lẫn đối tượng theo dõi. Chương trình xử lý ảnh để tiến hành theo dõi căn cứ

vào màu sắc đối tượng. Khoảng cách giữa robot và đối tượng chúng ta đặt là cốđịnh, Webcam Laptop Matlab xử lý ảnh Mạch điều khiển Frame RS232 PIC16F877A RS232 Mạch công suất L298N Động cơ DC

Chương 7: Xây dựng phần mềm điều khiển

dựa vào tâm của đối tượng tìm được chúng ta biết được vị trí của đối tượng tham chiếu trên mặt phẳng ảnh. Các thuộc tính nhận được sẽ truyền qua cổng giao tiếp RS232 xuống vi điều khiển PIC16F877A đểđiều khiển động cơ một chiều (DC) thông qua mạch cầu điều khiển động cơ L298N.

7.3 Xây dng phn mềm điều khin robot:

7.3.1 Nhn dng và tính toán vị trí, kích thước của đối tượng màu đỏ:

Áp dụng các hàm xử lý ảnh của Matlab để tìm đối tượng màu đỏ, sau đó tính toán toạ độ và kích thước của đối tượng trên mặt phẳng ảnh.

Dùng hàm Imread để đọc file ảnh và lưu lại dưới dạng ma trận trong Matlab. RGB=imread (‘redball.jpg’) ;

Hình 7.1 – Ảnh gốc cần xử lý

Ảnh gốc là một ảnh RGB. Ảnh này được biểu diễn bởi một ma trận ba chiều kích

thước m x n x 3, với m x n là kích thước ảnh theo pixels. Ma trận này định nghĩa các

thành phần màu red, green, blue cho mỗi điểm ảnh. Các mặt phẳng màu riêng rẽ của ảnh gốc:

 R = RGB ( ; ; 1 )

 G = RGB ( ; ; 2 )

 B = RGB ( ; ; 3 )

Vì đối tượng ta quan tâm có màu sắc là đỏ nên ta lấy ra mặt phẳng ảnh màu đỏ từ ảnh gốc.

Hình 7.2– Ảnh của ma trận đỏ

Tạo một ảnh grayscale từảnh gốc dùng hàm rgb2gray.

Chương 7: Xây dựng phần mềm điều khiển

Dùng hàm imsubtract để trừảnh grayscale từảnh của ma trận màu đỏ để lọc lấy màu đỏ.

Hình 7.4 – Ảnh thu được khi lấy màu đỏ

Dùng hàm medfilt2 để giảm nhiễu cho ảnh

Chuyển sang ảnh nhị phân dùng hàm im2bw

Hình 7.6 – Ảnh nhị phân

Dùng hàm bwareaopen để loại bỏ những đối tượng nhỏ

Chương 7: Xây dựng phần mềm điều khiển

Cuối cùng dùng các thuộc tính Centroid, Boundingbox, Area của hàm regionprops để xác

định tâm và vẽ hình chữ nhật xung quanh đối tượng màu đỏ.

Hình 7.8 – Xác định tâm và vẽ hình chữ nhật xung quanh

7.3.2 Các bước thu thp nh bng webcam

Bước 1: Gắn thiết bị thu hình vào máy tính và cài đặt driver điều khiển + Gắn thiết bị thu hình vào máy tính.

+ Cài đặt driver (trình điều khiển) cho thiết bị (được cho bởi nhà sản xuất).

+ Xem thử hình ảnh video hiện trên máy tính thông qua phần mềm của nhà sản xuất. + Khởi động Matlab.

Bước 2: Chỉ định thông tin phần cứng:

Cần chỉ định cho Matlab biết phần cứng nào dùng để lấy dữ liệu (vì có thể có nhiều camera kết nối tới PC)

Gõ lệnh imaqhwinfo để biết tên các loại thiết bị có thể dùng.

>> imaqhwinfo

ans =

InstalledAdaptors: {'coreco' 'winvideo'} MATLABVersion: '7.5 (R2007b)'

ToolboxVersion: '3.0 (R2007b)'

Tên Loại thiết bị

'coreco' Thiết bị của công ty coreco

‘DCAM’ Các thiết bị dùng chuẩn IEEE 1394

‘dt’ Các thiết bị của Data Translation

‘Matrox’ Các thiết bị của hãng Matrox

‘winvideo’ Các thiết bị dùng chuẩn Windows Driver Model (WDM) hoặc Video for indows (VFW). Bao gồm các loại USB WEBCAM và camera IEEE 1394

Bảng 7.1 – Các loại thiết bị Webcam

Chỉ định thiết bị: Tùy vào loại thiết bị (adaptor name), mỗi thiết bị cùng loại gắn vào PC được đánh số ID, thiết bị thứ nhất có deviceID=1, thiết bị thứ 2 có deviceID=2,…

Để liệt kê xem loại winvideo có bao nhiêu thiết bị gắn vào máy, ta cũng dùng lệnh imaqhwinfo với đối số là winvideo. >> imaqhwinfo('winvideo') ans = AdaptorDllName: [1x81 char] AdaptorDllVersion: '3.0 (R2007b)' AdaptorName: 'winvideo' DeviceIDs: {[1]} DeviceInfo: [1x1 struct]

=> Có một thiết bị với DeviceID là 1. Ta có thể tìm hiểu thêm thông tin về thiết bị này:

>> imaqhwinfo('winvideo',1)

ans =

DefaultFormat: 'YUY2_160x120' DeviceFileSupported: 0

DeviceName: 'USB Video Device' DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)' SupportedFormats: {1x5 cell}

Chương 7: Xây dựng phần mềm điều khiển

Bước 3: Tạo đối tượng đại diện cho luồng dữ liệu video

Để tạo luồng dữ liệu video,dùng lệnh videoinput. Ví dụ

>> vid=videoinput(‘winvideo’,1)

Bước 4: Hiển thị luồng video trên màn hình để xem thử

Sau khi tạo biến tham chiếu luồng video (Matlab gọi là tạo đối tượng video ngõ vào), Ta có thể dùng Matlab để lấy dữ liệu từ thiết bị thu hình (thuật ngữ là “thu thập dữ liệu”). Tuy nhiên, trước khi làm việc này, bạn có thể xem trước luồng video để

chắc rằng thiết bị hoạt động tốt.

Để xem trước luồng dữ liệu video, dùng lệnh preview. Ví dụ: preview(vid)

Để kết thúc xem, dùng lệnh stoppreview. Hoặc để đóng cửa sổ preview, dùng lệnh closepreview(vid)

Bước 5: Cấu hình cho hoạt động trích hình ảnh

Một số thông số hoạt động của biến video mà t a c ó thể thay đổi như

FramesPerTrigger, ReturnedColorspace, FrameGrabInterval, FramesAcquired,…

Bước 6: Lấy dữ liệu hình ảnh

Ta tiến hành theo các bước sau để lấy dữ liệu:

+ Gọi hàm start để bắt đầu. (ví dụ : Start(vid)) . Một số thông số của biến video sẽ bị

khóa thành dạng chỉ đọc.

+ Lấy dữ liệu (hay còn gọi là thu thập dữ liệu): Tùy vào thông số TriggerType, ta có nhiều cách lấy dữ liệu.

+ Trích một ảnh từ luồng video thông qua lệnh getsnapshot.

Bước 7: Xử lý frame ảnh vừa thu được

Ta thực hiện các hàm xử lý ảnh ở trên để nhận dạng và tính toán vị trí cũng như kích thước của đối tượng màu đỏ.

Bước 8: Làm sạch bộ nhớ

Sau khi lấy dữ liệu video, ta có thể giải phóng bớt bộ nhớ bằng các lệnh sau: stop(vid)

flushdata(vid) clear vid

7.3.3 Mt phng nh:

Cấu trúc của hệ bám mục tiêu di động gồm hai phần chính. Phần thứ nhất là phần xử

lý ảnh dựa vào chuỗi hình ảnh thu được từ webcam để nhận dạng và tính toán vị trí của

đối tượng quan tâm.

Phần thứ hai là phần điều khiển, dựa vào thông tin vị trí đối tượng nhận được trong mặt phẳng ảnh, tính toán tín hiệu điều khiển robot sao cho đối tượng di chuyển

được duy trì ở một vị trí nhất định trên mặt phẳng ảnh và ở một khoảng cách nhất

định.

Mặt phẳng ảnh là mặt phẳng có gốc nằm phía trên bên trái, trục x là trục nằm ngang, trục y là trục thẳng đứng như hình vẽ.

Hình 7.9 – Mặt phẳng ảnh

Căn cứ vào vị trí dịch chuyển của đối tượng trên mặt phẳng ảnh so với gốc toạđộ

mà ta tính toán các khả năng di chuyển của robot sao cho đối tượng nằm ở một vị trí bất kỳ trên mặt phẳng ảnh.

Chương 7: Xây dựng phần mềm điều khiển

Dựa vào toạ độ x, y của tâm đối tượng nằm trên mặt phẳng ảnh, ta sẽ biết đối

tượng đang ở bên trái hay bên phải của robot, từ đó điều khiển robot quay về phía đối

tượng.

Dựa vào số lượng pixel hay kích thước của đối tượng, ta ước chừng được khoảng cách giữa robot và đối tượng, từ đó điều khiển robot di chuyển tới hay lùi.

Hình vẽ sau mô tả các vị trí tương ứng của đối tượng trên mặt phẳng ảnh tương ứng với điều kiện di chuyển:

Hình 7.10 – Biểu diễn đối tượng di chuyển trên mặt phẳng ảnh

7.3.4 Tp lệnh điều khin robot:

Dựa vào các kết quả nhận được, ta sẽ gửi tín hiệu điều khiển qua cổng kết nối RS232 để điều khiển robot di động bám đối tượng.

Lệnh Động cơ 1 Động cơ 2 Robot

f Tiến Tiến Đi thẳng

b Lùi Lùi Đi lùi

s Dừng Dừng Dừng lại r Tiến Lùi Rẽ phải l Lùi Tiến Rẽ trái

7.4 Giao diện điều khin s dng GUI ca Matlab:

Chương trình được thiết kế bằng giao diện GUI thuộc phần mềm Matlab R2007b.

Hình 7.11 – Giao diện điều khiển viết bằng Matlab

Chú thích:

 Connect: Mở cổng COM, kết nối vi điều khiển với Laptop qua RS232

 Disconnect: Ngắt kết nối

 Manual: Chế độ điều khiển bằng tay, kiểm tra hoạt động của robot

 Automatic: Bấm RUN để mở webcam, robot nhận dạng và bám theo mục tiêu màu

đỏ

Chương 8: Kết quả đạt được

CHƯƠNG 8

Kết quả đạt được

Đề tài được đánh dấu hoàn thành bằng việc thiết kế thành công robot tự hành bám

đối tượng. Robot có thể điều khiển từ xa bằng remote và có thể bám theo đối tượng màu

đỏ nằm ở trên một phần của mặt phẳng ảnh mà ta chọn.

Hình ảnh thực tế:

Hình 8.2 – Hình ảnh thực tế

Chương 8: Kết quả đạt được

Hình 8.4 – Hình ảnh thực tế

8.1 Các kết quả đạt được:

Đề tài hoàn thành với những kết quả đạt được so với yêu cầu nhiệm vụ đặt ra:

 Đã phân tích tìm hiểu, lựa chọn và thi công mô hình robot tự hành với 4 bánh xe: 2 bánh xe chủ động và 2 bánh tự lượn. Mô hình gọn nhẹ và di chuyển linh hoạt.

 Điều khiển bằng tay sử dụng thu phát sóng vô tuyến hoạt động ổn định, có thể điều khiển ở một khoảng cách xa.

 Thiết kế robot hoạt động tốt đã đáp ứng được các yêu cầu cơ bản nhất của

robot: đi tiến, đi lùi, rẽ phải, rẽ trái.

 Thi công mạch điều khiển động cơ bao gồm khối nguồn, vi điều khiển PIC16F877A và khối giao tiếp RS232. Mạch nhỏ gọn và đơn giản.

 Thi công mạch công suất động cơ, mạch công suất động cơ điều khiển tốc độ

(dùng PWM) và chiều quay cho 2 động cơ công suất nhỏ độc lập. Mạch nhỏ

gọn và đơn giản, có thể thay đổi vận tốc của robot bằng remote.

 Báo cáo này mô tả hệ thống robot di động bám đối tượng sử dụng công cụ xử

lý ảnh của Matlab. Robot nhận hình ảnh từ webcam tiến hành tính toán tọa

độ tâm, kích cỡ, thiết kế khối giao tiếp RS232 sử dụng GUI của Matlab. Thiết kế mạch điều khiển động cơ sử dụng PIC16F877A. Trong điều kiện ánh sáng bình thường và phông nền không quá phức tạp, hệ thống có thể phát hiện đối

tượng và điều khiển robot bám theo.

 Giao diện điều khiển rõ ràng, truyền thông giữa các thiết bị ổn định.

8.2 Hn chế:

 Còn hạn chế trong thiết kế phần cứng (khung xe), phần này còn yếu nên gây khó khăn trong việc di chuyển và động cơ của robot di chuyển tốc độ

chậm do đó không đáp ứng được tốc độ của webcam của robot.

 Mạch công suất chưa được cách ly với khối điều khiển, chưa có bảo vệ quá tải.

 Giải thuật điều khiển động cơ là vòng hở.

 Hệ thống làm việc tốt dưới điều kiện ánh sáng vừa phải, nếu môi trường có

độ sáng quá cao như ánh sáng mặt trời thì hệ làm việc rất kém do màu và độ

sáng của đối tượng luôn thay đổi khi đối tượng thay đổi hướng.

 Tốc độ của robot là cốđịnh do chưa xây dựng thuật toán điều khiển tốc độ

robot phù hợp tốc độ dịch chuyển của đối tượng đang theo dõi.

 Chương trình điều khiển mới được thử nghiệm trên một số môi trường nhất

định kết quả đạt được là tương đối tốt. Tuy nhiên trong xử lý ảnh vấn đề

nhiễu trong môi trường rất quan trọng do đó cần có thêm nhiều thử nghiệm nữa mới có thể đánh giá được độ tin cậy của kết quả đạt được.

Chương 8: Kết quả đạt được

8.3 Hướng khc phc các hn chế và phát triển đề tài:

Khắc phục các nhược điểm cụ thể của mô hình trong đề tài:

 Mô hình cơ khí có thể cải tiến chắc chắn hơn, với động cơ công suất lớn hơn để

mang tải nặng.

 Mạch công suất động cơ cần thêm phần lấy giá trị dòng điện hồi tiếp để bảo vệ

quá tải. Đồng thời thêm encoder để hồi tiếp tốc độ động cơ về mạch điều khiển.

 Phần mềm điều khiển chỉ điều khiển vòng hở vận tốc động cơ bằng điều rộng

xung PWM nên cho đáp ứng vận tốc chưa tốt. Cần nhận tín hiệu hồi tiếp từ

encoder và dùng giải thuật điều khiển vòng kín tốc độ động cơ (như giải thuật PID).

Từ những kiến thức đã thu được trong quá trình thực hiện đề tài, mô hình robot tự hành có thể được phát triển:

 Cải tiến kết cấu cơ khí để mang tải hoặc thực hiện các động tác cho ứng dụng cụ thể.

 Thêm các cảm biến khác để robot hoạt động chính xác hơn.

 Robot chỉ được thử nghiệm trên hệ thống có tốc độ thay đổi chậm, cần phải được thử nghiệm với hệ thống có tốc độ nhanh hơn.

 Thay vì dò tìm một vùng đặc biệt trên đối tượng như màu đỏ, màu xanh v..v. Hệ thống cần được cải thiện để dò tìm đối tượng dựa vào các đặc tính kh á c trên đối tượng. Không chỉ màu sắc của đối tượng được sử dụng mà cần quan tâm đến các đặc điểm của cạnh, góc, như vậy sẽ tăng được độ tin cậy cho việc dò tìm và theo dõi đối tượng.

 Phần cứng cần bổ sung thêm thuật toán tăng, giảm tốc độ theo sự thay đổi tốc

độ của đối tượng.

 Robot sẽ được ứng dụng vào một số công việc cụ thể: robot tự động hút bụi trong nhà, robot lau kính trên các tòa nhà cao tầng, hay robot vận chuyển trong nhà máy…

Tài liu tham kho

[1] Alasdair McAndrew. An introduction to Digital Image Processing with Matlab. [2] Associate Professor Joel M. Esposito. Matlab serial communication tutorial.

http://www.usna.edu/Users/weapsys/esposito/ [3] Microchip, Datasheet PIC 16F87XA.

[4] Datasheet L298N.

[5] Quan Quach. Matlab GUI tutorial for beginners.

http://blinkdagger.com/matlab/matlab-gui-graphical-user-interface-tutorial-for- beginers [6] http://www.payitforward.edu.vn/wordpress/tutorials [7] http://www.pyroelectro.com/tutorials [8] http://www.wikipedia.com [9] http://www.picvietnam.com [10] http://www.dientuvietnam.net

Phụ lục

PHỤ LỤC A

Chương trình ñiu khin robot

//---

Một phần của tài liệu Thiết kế phần cơ sở của robot tự hành (Trang 70)