Thiết kế phần cơ sở của robot tự hành
ðẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ðẠI HỌC BÁCH KHOA KHOA ðIỆN – ðIỆN TỬ BỘ MÔN THIẾT BỊ ðIỆN ----------------------oOo--------------------- LUẬN VĂN TỐT NGHIỆP ðẠI HỌC THIẾT KẾ PHẦN CƠ SỞ CỦA ROBOT TỰ HÀNH GVHD : TS. TRỊNH HOÀNG HƠN SVTH : ðẶNG QUANG VINH MSSV : 40702964 TP. HỒ CHÍ MINH, THÁNG 01/2012 BỘ GIÁO DỤC VÀ ðÀO TẠO TRƯỜNG ðH BÁCH KHOA KHOA ðIỆN - ðIỆN TỬ BỘ MÔN THIẾT BỊ ðIỆN CỘNG HÒA Xà HỘI CHỦ NGHĨA VIỆT NAM ðộc lập – Tự – Hạnh phúc ================================== NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP HỌ VÀ TÊN: ðẶNG QUANG VINH NGÀNH: Kỹ thuật ñiện MSSV: 40702964 LỚP: DD07KTD6 1. Tên ñề tài: THIẾT KẾ PHẦN CƠ SỞ CỦA ROBOT TỰ HÀNH 2. Nhiệm vụ: (yêu cầu nội dung số liệu ban ñầu) a. Thiết kế phần cho robot (10%) b. ðiều khiển robot tay sử dụng remote (10%) c. Tìm hiểu xử lý ảnh Matlab, lập trình cho robot bám ñối tượng (35%) d. Thiết kế mạch phần cứng lập trình PIC16F877A ñiều khiển robot (35%) e. Tìm hiểu lập trình truyền thông nối tiếp RS232 (10%) 3. Ngày giao nhiệm vụ luận án: _________________________________________ 4. Ngày hoàn thành nhiệm vụ luận án: ____________________________________ 5. Họ tên người hướng dẫn: Phần hướng dẫn: 1) _______________________________ _________________________ 2) _______________________________ _________________________ 3) _______________________________ _________________________ Nội dung yêu cầu luận án tốt nghiệp ñã ñược thông qua môn Ngày ____ tháng ____ năm ______ CHỦ NHIỆM BỘ MÔN NGƯỜI HƯỚNG DẪN CHÍNH (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) PHẦN DÀNH CHO KHOA BỘ MÔN Người duyệt (chấm sơ bộ): ___________________________ ðơn vị: __________________________________________ Ngày bảo vệ: ______________________________________ ðiểm tổng kết: ____________________________________ Nơi lưu trữ luận án: ________________________________ LỜI CẢM ƠN Khi bắt ñầu nhận luận văn tốt nghiệp em ñã lo lắng xử lý ảnh lĩnh vực mẻ Việt Nam thân lần ñầu tiên tiếp xúc với lĩnh vực này. Em vui cuối ñã hoàn thành tốt nhiệm vụ ñược giao. Trước hết em xin gửi lời cảm ơn sâu sắc ñến thầy Trịnh Hoàng Hơn. Tuy ñiều kiện trực tiếp ñược làm việc thầy nhiều, qua lần tiếp xúc ñó thầy ñã cho em lời ñộng viên, lời khuyên quý báu, em học ñược thầy nhiều. Em xin cảm ơn tất quý thầy cô trường ðại học Bách Khoa TP.HCM nói chung, quý thầy cô khoa ðiện-ðiện tử, ngành Kỹ thuật ñiện môn Thiết bị ñiện nói riêng ñã tận tình giảng dạy, trang bị cho em kiến thức bổ ích khoảng thời gian học ñại học. Xin cảm ơn gia ñình tất bạn bè ñã nguồn ñộng viên, góp ý, giúp ñỡ nhiều trình học tập thực luận văn. Một lần nữa, xin cám ơn tất người. Cầu chúc cho tất người mạnh khoẻ, vui vẻ, hạnh phúc thành công! TP. Hồ Chí Minh, tháng 01/2012 ðặng Quang Vinh TÓM TẮT LUẬN VĂN Mục tiêu luận văn ñiều khiển robot bám theo ñối tượng sử dụng xử lý ảnh Matlab. Nó phải trì ñược khoảng cách ñịnh robot ñối tương, ñố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, rẽ phải, rẽ trái, ñi lùi. Nghĩa phải ñiều khiển tốc ñộ hướng robot nhiên luận án ñiều khiển hướng, tốc ñộ xem không ñổi. ðể làm ñược việc này, phải nhận dạng ñược ñối tượng xác ñịnh ñược hướng di chuyển nó. Thứ hai phải xây dựng chương trình xử lý ảnh bám ñối tượng. Thứ ba phải xây dựng ñược phần cứng ñể kiểm ñịnh kết quả. Có nhiều cách ñể dò tìm ñối tượng ví dụ dựa hình dáng, âm thanh, . thuật toán thực phức tạp. ðể giảm ñộ khó ñặt phía sau ñối tượng vật có thuộc tính màu sắc ñặc biệt ví dụ màu ñỏ, màu vàng, màu xanh, . Như vậy, lúc tiến hành theo dõi giảm ñược nhiều việc xử lý nhiễu ñối tượng không mong muốn gây ra, giảm ñáng kể nhầm lẫn ñối tượng theo dõi. Chương trình xử lý ảnh sử dụng Matlab theo dõi ñối tượng vào màu sắc nó. Khoảng cách robot ñối tượng ñặt cố ñịnh, dựa vào tâm ñối tượng tìm ñược biết ñược vị trí ñối tượng tham chiếu mặt phẳng ảnh. Các thuộc tính nhận ñược truyền qua cổng giao tiếp RS232 xuống vi ñiều khiển PIC16F877A ñể ñiều khiển ñộng chiều (DC) thông qua mạch cầu ñiều khiển ñộng L298N. MỤC LỤC ðề mục Trang bìa Nhiệm vụ luận văn Lời cảm ơn Tóm tắt luận văn Mục lục Danh sách hình vẽ Danh sách bảng Trang i ii iii iv v vi CHƯƠNG 1: Tổng quan ñề tài ……………………………………………… 1.1 ðặt vấn ñề ………………………………………………………………… 1.2 Giới thiệu chung …………………………………… …………….……. 1.2.1 Robot tự hành …………………………………… ………………… 1.2.2 Robot bám ñối tượng ……….……………………………………… 1.3 Sơ ñồ khối robot tự hành…………… . .…………………………… 1.3.1 Phân tích sơ ñồ khối robot tự hành ……… .…………………… 1.3.2 Thiết kế mô hình robot tự hành ……………… .………………… 1.4 Nhiệm vụ cụ thể giới hạn luận văn…………… . .……………… 1.4.1 Nhiệm vụ cụ thể luận văn……… . ……… .……………………7 1.4.2 Giới hạn luận văn …………………… .………………… . CHƯƠNG 2: Thiết kế phần khí cho robot …… …………………………… 2.1. Sơ lược phương pháp di chuyển robot tự hành ……………… 2.1.1 Robot dùng bánh xe ………………………………………….……… 2.1.2 Robot dùng chân ……………………………………………….……. 10 2.2. Mô hình kết cấu robot ………………………………………………… 10 2.3. Thực mô hình khí robot …………………… .…………………… 11 CHƯƠNG 3: ðiều khiển robot từ xa ………………………….………………… 15 3.1 Lý thuyết ñiều khiển từ xa …………………………………………………. 15 3.1.1 Giới thiệu …………………………………………………….……… 15 3.1.2 ðiều khiển từ xa dùng tia hồng ngoại ………………………….……. 15 3.1.3 ðiều khiển từ xa dùng sóng vô tuyến ………………….…….……… 15 3.1.4 Ưu khuyết ñiểm ñiều khiển từ xa dùng tia hồng ngoại………. 16 3.1.5 Ưu khuyết ñiểm ñiều khiển từ xa dùng sóng vô tuyến…….…. 16 3.2 Tổng quát ………………………………………………………… ………. 17 3.3 Phần cứng bên phát tín hiệu ………………………… …………………….18 3.3.1 Sơ lược IC mã hoá PT2262 ……………………………….……… 18 3.3.2 Quy tắc mã hoá với IC PT2262 …………………….………….……. 19 3.3.3 Cách thức mã hoá liệu PT2262 …………… ….…….……… 21 3.3.4 Remote nút tích hợp IC PT2262………………………… .………. 21 3.4 Phần cứng bên thu tín hiệu ………………………………………………… 22 3.4.1 Sơ lược IC giải mã PT2272 …………………… .……….……… 22 3.4.2 Cách thức giải mã liệu PT2272 …………….………….……. 24 3.4.3 Mạch thu sóng tích hợp IC PT2272 …………… ….……… ……… 24 CHƯƠNG 4: Giới thiệu Matlab xử lý ảnh…………………… .………… 25 4.1 Giới thiệu chung phần mềm Matlab ………………………….………… 25 4.1.1 Khái niệm Matlab …………………………… …………………. 25 4.1.2 Cấu trúc liệu Matlab ứng dụng……………………… 25 4.1.3 Hệ thống Matlab …………………… ……………………………… 26 4.2 Giới thiệu khái quát ảnh số…………………… ……………………… 27 4.2.1 Các khái niệm ảnh …………………… …………………. 27 4.2.2 Các kiểu ảnh Matlab……………………… ………………… 28 4.3 Xử lý ảnh với Matlab ……………………… .……………………………. 32 4.3.1 Xử lý ảnh ………………… .……………………………………… 32 4.3.2 Các giai ñoạn xử lý ảnh……………………………………… .……. 32 4.4 Các hàm xử lý ảnh Matlab………………… .………………. 34 4.4.1 ðọc ghi liệu ảnh…………………………….………….……… 34 4.4.2 Chuyển ñổi kiểu liệu, kiểu ảnh…………………….……. 34 4.4.3 Các phép toán số học ñối với liệu ảnh….……… ……… 35 4.4.4 Các hàm hiển thị ảnh Matlab……………………………… ….35 4.4.5 Các phép biến ñổi hình học……………………………………….…. 35 CHƯƠNG 5: Các linh kiện sử dụng khối phần cứng…………………… 39 5.1 Cơ PIC16F877A ………………………….……………………… . 39 5.1.1 PIC gì?………………………….………………………….……… 39 5.1.2 ðặc ñiểm bật PIC16F877A ………………… .……….……. 39 5.1.3 Các cổng vào ……………………………………… …….……… 40 5.1.4 Các khối Timer………………………………………………………. 43 5.1.5 Các khối PWM………………………………………………………. 46 5.1.6 Khối ADC……………………………………………………………. 47 5.1.7 Khối truyền thông nối tiếp UART………………………… …….…. 49 5.2 Giao tiếp RS232 …………………………………………………………… 49 5.2.1 ðặt vấn ñề ……………….……………………….………………… 49 5.2.2 Ưu ñiểm giao tiếp RS232.……………………………………… 49 5.2.3 Các mức ñiện áp ñường truyền…………………………………… 50 5.2.4 Cổng RS232…….……………… ……………….………………… 50 5.2.5 Quá trình truyền liệu………………………… ………………… 51 5.2.6 Truyền thông cổng nối tiếp Matlab…… .…………………… 52 5.3 Giới thiệu chip mạch cầu L298N ………………….…………………… 54 5.3.1 Phương pháp ñiều chế ñộ rộng xung PWM………………………… 54 5.3.2 Mạch cầu H ……………………………………………………… … 55 5.3.3 IC công suất L298N ……………………………………………….… 55 CHƯƠNG 6: Thiết kế mạch phần cứng …………………………………… .…. 58 6.1 Khối nguồn …………… ………………………… ……………………… 58 6.2 Khối ñiều khiển trung tâm …………………………………… .………… 58 6.3 Khối ñiều khiển ñộng ………………………….……………………… 59 6.4 Khối truyền thông RS232…………………………….………………….…. 60 6.5 Mạch phần cứng hoàn chỉnh……………………………………………… 60 CHƯƠNG 7: Xây dựng phần mềm ñiều khiển………………………………… 63 7.1 Sơ ñồ tổng quát robot ……………………………………… …………63 7.2 Robot di ñộng bám ñối tượng………………………… .……… …………63 7.3 Xây dựng phần mềm ñiều khiển robot…………………… .……………… 64 7.3.1 Nhận dạng tính toán vị trí, kích thước ñối tượng màu ñỏ……. 64 7.3.2 Các bước thu thập ảnh webcam……………… ………………. 68 7.3.3 Mặt phẳng ảnh……………………………………………………… 71 7.3.4 Tập lệnh ñiều khiển robot………………….………………………… 72 7.4 Giao diện ñiều khiển sử dụng GUI Matlab………… ………………… 73 CHƯƠNG 8: Kết ñạt ñược………………………………………… .……… 74 8.1 Các kết ñạt ñược ………………………………………………… .… 77 8.2 Hạn chế …………………………………………………………………… 77 8.3 Hướng khắc phục hạn chế phát triển ñề tài…………………………. 78 Tài liệu tham khảo ………………… .……………………… ………………… 79 PHỤ LỤC A: Chương trình ñiều khiển robot………………………….……… 80 PHỤ LỤC B: Chương trình giao diện GUI Matlab……………… …… 84 DANH SÁCH HÌNH VẼ Hình Trang Hình 1.1 : Một số hình ảnh robot tự hành …………………………… .…… Hình 1.2 : Robot Pops (nguồn: slashgear.com)…………………… .…… Hình 1.3 : Robot MIDbo (nguồn: telepresenceoptions.com)………… .…… . Hình 1.4 : PANrobot (nguồn: mobilerobot.org)…………………… .…… . Hình 1.5 : Laptop robot (nguồn: mobilerobot.org)………………… .…… Hình 1.6 : Sơ ñồ khối robot tự hành………………………………………… …… .5 Hình 2.1 : Robot di chuyển chân …………………………………… . …… .8 Hình 2.2 : Robot di chuyển bánh ………………………………… . …… .8 Hình 2.3 : Các dạng robot dùng bánh xe …………………………………… …… .9 Hình 2.4 : Robot dùng bánh xích dùng chân …………………… .……… 10 Hình 2.5 : Mô hình kết cấu robot ………………………………………. …… .10 Hình 2.6 : ðộng …………………………………………………………. …… .11 Hình 2.7 : Bánh xe chủ ñộng ……………………………………… …… .11 Hình 2.8 : Bánh xe tự lượn …………………………………………………. …… .11 Hình 2.9 : Acquy …………………………………………………………….…… .12 Hình 2.10 : Khung sườn ………………………………………………………… .12 Hình 2.11 : Mô hình khí……………………………… ……………….…… 13 Hình 2.12 : Mô hình khí …………………………………………….….…… 13 Hình 2.13 : Mô hình khí ………………………………………………….…… .14 Hình 2.14 : Mô hình khí ………………………………… .…………… 14 Hình 3.1 : Sơ ñồ khối ñiều khiển từ xa …………………………………… . …… .17 Hình 3.2 : IC PT2262…………………………………………………… …… .18 Hình 3.3 : Biểu diễn Bit code mã hoá ………………………………………. …… .19 Hình 3.4 : Biểu diễn Bit ñồng …………………………………………… …… .20 Hình 3.5 : Biễu diễn từ mã ……………………………………………… …… .20 Hình 3.6 : Biễu diễn khung truyền ……………………………………… …… .21 Hình 3.7 : Remote nút tích hợp IC PT2262…………………………… …… .21 Hình 3.8 : IC PT2272…………………………………………………… …… .22 Hình 3.9 : Mạch thu sóng tích hợp IC PT2272…………………………………… . 24 Hình 4.1 : Ma trận liệu ma trận ñồ màu …………………………. …… .28 Hình 4.2 : Ảnh Index ……………………………………………………… …… .29 Hình 4.3 : Ảnh Grayscale ………………………………………………… . …… .29 Hình 4.4 : Ảnh nhị phân ……………………………………………………. …… .30 Hình 4.5 : Các mặt phẳng màu …………………………………………… . …… .30 Hình 4.6 : Ảnh RGB ……………………………………………………… . …… .31 Hình 4.7 : Các bước xử lý ảnh …………………………… . …… .32 Hình 4.8 : Tăng kích thước ảnh ………………………………………… …… .36 Hình 4.9 : Quay ảnh ………………………………………………………… …… .37 Hình 4.10 : Xén ảnh ………………………………………………………… …… .38 Hình 5.1 : Sơ ñồ chân PIC16F877A …………………………………… …… .39 Hình 5.2 : Sơ ñồ khối PIC16F877A ……………………………………. …… .40 Hình 5.3 : Sơ ñồ khối Timer0………………………………………… …… .44 Hình 5.4 : Sơ ñồ khối Timer1…………………………………………… …… .44 Hình 5.5 : Sơ ñồ khối Timer2…………………………………………… …… .45 Hình 5.6 : Sơ ñồ khối PWM ……………………………………………… . …… .46 Hình 5.7 : Xung từ PWM ……………………………………………… . …… .47 Hình 5.8 : Sơ ñồ khối ADC ………………………………………………… …… .48 Hình 5.9 : Cổng giao tiếp RS232……………………………………………. …… .50 Hình 5.10 : Mạch ñơn giản ………………………………… . …………… . 54 Hình 5.11 : Xung PWM ……………………………………………… …… .54 Hình 5.12 : Mạch cầu H …………………………………………………… …… .55 Hình 5.13 : IC L298N ………………………………………………………. …… .55 Hình 5.14 : Sơ ñồ chân L298N …………………………………………… . …… .56 Hình 5.15 : Sơ ñồ nguyên lý L298N …………………………………… …… .57 Hình 6.1 : Sơ ñồ khối nguồn ……………………………………………… . …… .58 Hình 6.2 : Sơ ñồ khối ñiều khiển trung tâm ……………………………………… .58 Hình 6.3 : Sơ ñồ khối ñiều khiển ñộng ……………………………… …… .59 Hình 6.4 : Sơ ñồ khối truyền thông RS232……………………………… …… .60 Hình 6.5 : Mạch ñiều khiển ………………………………………………… …… .61 Hình 6.6 : Mạch ñiều khiển ………………………………………………… …… .61 Hình 6.7 : Mạch công suất ………………………………………………… …… .62 Hình 6.8 : Mạch công suất …………………………………………… …… .62 Hình 7.1 : Ảnh gốc cần xử lý …………………………………………… …… .64 Hình 7.2 : Ảnh ma trận ñỏ ……………………………………………… …… .65 Hình 7.3 : Ảnh grayscale từ ảnh gốc …………………………………… …… .65 Hình 7.4 : Ảnh thu ñược lấy màu ñỏ …………………………………… …… .66 Hình 7.5 : Giảm nhiễu ……………………………………………………… …… .66 Hình 7.6 : Ảnh nhị phân ……………………………………………… .…… 67 Hình 7.7 : Loại bỏ ñối tượng nhỏ …………………………………… …… .…… . 67 Hình 7.8 : Xác ñịnh tâm vẽ hình chữ nhật xung quanh …………………. …… .68 Hình 7.9 : Mặt phẳng ảnh ………………………………………………… . …… .71 Hình 7.10 : Biểu diễn ñối tượng di chuyển mặt phẳng ảnh…………… …… .72 Hình 7.11 : Giao diện ñiều khiển viết Matlab ………………………… …… .73 Hình 8.1 : Hình ảnh thực tế ………………………………………………….…… .74 Hình 8.2 : Hình ảnh thực tế ………………………………………………….…… .75 Hình 8.3 : Hình ảnh thực tế ………………………………………………….…… .75 Hình 8.4 : Hình ảnh thực tế ………………………………………………….…… .76 Hình 8.5 : Hình ảnh thực tế ………………………………………………….…… .76 DANH SÁCH BẢNG Bảng Trang Bảng 3.1 : Chức chân IC PT2262………………………… .… .…… 19 Bảng 3.2 : Mức logic chân liệu ……………………… .… .…… . 22 Bảng 3.3 : Chức chân IC PT2272……………………… .… .…… 23 Bảng 5.1 : Cấu hình cổng A ……………………… .… .…… . 41 Bảng 5.2 : Cấu hình cổng B ……………………… .… .…… . 41 Bảng 5.3 : Cấu hình cổng C ……………………… .… .…… . 42 Bảng 5.4 : Cấu hình cổng D ……………………… .… .…… . 42 Bảng 5.5 : Cấu hình cổng E ……………………… .… .…… . 43 Bảng 5.6 : Cấu hình Prescale Timer0……………………… .… .…… . 44 Bảng 5.7 : Cấu hình khối CCP ……………………… .… .…… …………… 47 Bảng 5.8 : Cấu hình xung nhịp cho ADC …………………… .… .…… 48 Bảng 5.9 : Chức chân L298N …………… .… .…… . 56 Bảng 7.1 : Các loại thiết bị Webcam ……………… .… .…… . 69 Bảng 7.2 : Tập lệnh ñiều khiển robot ……………………… .… .…… .72 Chương 8: Kết đạt CHƯƠNG Kết đạt Đề tài đánh dấu hoàn thành việc thiết kế thành công robot tự hành bám đối tượng. Robot điều khiển từ xa remote bám theo đối tượng màu đỏ nằm phần mặt phẳng ảnh mà ta chọn. Hình ảnh thực tế: Hình 8.1 – Hình ảnh thực tế SV: ĐẶNG QUANG VINH 74 Chương 8: Kết đạt Hình 8.2 – Hình ảnh thực tế Hình 8.3 – Hình ảnh thực tế SV: ĐẶNG QUANG VINH 75 Chương 8: Kết đạt Hình 8.4 – Hình ảnh thực tế Hình 8.5 – Hình ảnh thực tế SV: ĐẶNG QUANG VINH 76 Chương 8: Kết đạt 8.1 Các kết đạt được: Đề tài hoàn thành với kết đạt so với yêu cầu nhiệm vụ đặt ra: Đã phân tích tìm hiểu, lựa chọn thi công mô hình robot tự hành với bánh xe: bánh xe chủ động bánh tự lượn. Mô hình gọn nhẹ di chuyển linh hoạt. Điều khiển tay sử dụng thu phát sóng vô tuyến hoạt động ổn định, điều khiển khoảng cách xa. Thiết kế robot hoạt động tốt đáp ứng yêu cầu robot: tiến, lùi, rẽ phải, rẽ trái. Thi công mạch điều khiển động bao gồm khối nguồn, vi điều khiển PIC16F877A khối giao tiếp RS232. Mạch nhỏ gọn đơn giản. Thi công mạch công suất động cơ, mạch công suất động điều khiển tốc độ (dùng PWM) chiều quay cho động công suất nhỏ độc lập. Mạch nhỏ gọn đơn giản, thay đổi vận tốc robot remote. Báo cáo mô tả hệ thống robot di động bám đối tượng sử dụng công cụ xử lý ảnh 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 Matlab. Thiết kế mạch điều khiển động sử dụng PIC16F877A. Trong điều kiện ánh sáng bình thường phông không phức tạp, hệ thống phát đối tượng điều khiển robot bám theo. Giao diện điều khiển rõ ràng, truyền thông thiết bị ổn định. 8.2 Hạn chế: Còn hạn chế thiết kế phần cứng (khung xe), phần yếu nên gây khó khăn việc di chuyển động robot di chuyển tốc độ chậm không đáp ứng tốc độ webcam robot. Mạch công suất chưa cách ly với khối điều khiển, chưa có bảo vệ tải. Giải thuật điều khiển động vòng hở. Hệ thống làm việc tốt điều kiện ánh sáng vừa phải, môi trường có độ sáng cao ánh sáng mặt trời hệ làm việc màu độ sáng đối tượng thay đổi đối tượng thay đổi hướng. Tốc độ robot cố định 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 đối tượng theo dõi. Chương trình điều khiển thử nghiệm số môi trường định kết đạt tương đối tốt. Tuy nhiên xử lý ảnh vấn đề nhiễu môi trường quan trọng cần có thêm nhiều thử nghiệm đánh giá độ tin cậy kết đạt được. SV: ĐẶNG QUANG VINH 77 Chương 8: Kết đạt 8.3 Hướng khắc phục hạn chế phát triển đề tài: Khắc phục nhược điểm cụ thể mô hình đề tài: Mô hình khí cải tiến chắn hơn, với động công suất lớn để mang tải nặng. Mạch công suất động cần thêm phần lấy giá trị dòng điện hồi tiếp để bảo vệ tải. Đồng thời thêm encoder để hồi tiếp tốc độ động mạch điều khiển. Phần mềm điều khiển điều khiển vòng hở vận tốc độ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 dùng giải thuật điều khiển vòng kín tốc độ động (như giải thuật PID). Từ kiến thức thu trình thực đề tài, mô hình robot tự hành phát triển: Cải tiến kết cấu khí để mang tải thực động tác cho ứng dụng cụ thể. Thêm cảm biến khác để robot hoạt động xác hơn. Robot thử nghiệm hệ thống có tốc độ thay đổi chậm, cần phải thử nghiệm với hệ thống có tốc độ nhanh hơn. Thay dò tìm vùng đặc biệt đối tượng màu đỏ, màu xanh v v. Hệ thống cần cải thiện để dò tìm đối tượng dựa vào đặc tính khác đối tượng. Không màu sắc đối tượng sử dụng mà cần quan tâm đến đặc điểm cạnh, góc, tăng độ tin cậy cho việc dò tìm 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 thay đổi tốc độ đối tượng. Robot ứng dụng vào số công việc cụ thể: robot tự động hút bụi nhà, robot lau kính tòa nhà cao tầng, hay robot vận chuyển nhà máy… SV: ĐẶNG QUANG VINH 78 Tài liệu tham khảo Tài liệu tham khảo [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-forbeginers [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 SV: ðẶNG QUANG VINH 79 Phụ lục PHỤ LỤC A Chương trình ñiều khiển robot //---------------------------------------------------------------------------------------------------// Khối ñiều khiển Robot sử dụng PIC16F877A L298N // Ngôn ngữ: PIC C Compiler //----------------------------------------------------------------------------------------------------#include #device *=16 #device adc=8 #FUSES NOWDT #FUSES HS #FUSES NOPUT #FUSES NOPROTECT #FUSES NODEBUG #FUSES NOBROWNOUT #FUSES NOLVP #FUSES NOCPD #FUSES NOWRT #use delay(clock=20000000) #use rs232(baud=19200,xmit=PIN_C6,rcv=PIN_C7) #use fast_io(b) #use fast_io(d) #byte portb=0x06 #byte portd=0x08 #bit RB4=portb.4 #bit RB5=portb.5 #bit RB6=portb.6 #bit RB7=portb.7 #bit RD0=portd.0 #bit RD1=portd.1 #bit RD2=portd.2 SV: ðẶNG QUANG VINH 80 Phụ lục #bit RD3=portd.3 char value; void forward() { RB4=1; RB5=0; RB6=0; RB7=1; } void backward() { RB4=0; RB5=1; RB6=1; RB7=0; } void right() { RB4=1; RB5=0; RB6=1; RB7=0; } void left() { RB4=0; RB5=1; RB6=0; RB7=1; } void stop() { RB4=0; SV: ðẶNG QUANG VINH 81 Phụ lục RB5=0; RB6=0; RB7=0; } #int_RDA void RDA_isr(void) { value=getc(); delay_ms(10); putc(value); switch(value) { case 'f':forward();break; case 'b':backward();break; case 'r':right();break; case 'l':left();break; case 's':stop();break; } } int duty=0; int p; void main() { set_tris_b(0x00); RB4=0; RB5=0; RB6=0; RB7=0; enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); setup_timer_2(T2_DIV_BY_4,82,1); setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); set_pwm1_duty(duty); set_pwm2_duty(duty); while(1) SV: ðẶNG QUANG VINH 82 Phụ lục { if((RD0==0)&&(RD1==0)&&(RD2==1)&&(RD3==1))p=1; else if((RD0==0)&&(RD1==1)&&(RD2==0)&&(RD3==0))p=2; else if((RD0==0)&&(RD1==1)&&(RD2==0)&&(RD3==1))p=3; else if((RD0==0)&&(RD1==1)&&(RD2==1)&&(RD3==0))p=4; else if((RD0==0)&&(RD1==1)&&(RD2==1)&&(RD3==1))p=5; else if((RD0==0)&&(RD1==0)&&(RD2==0)&&(RD3==1)) {duty=78; set_pwm1_duty(duty); set_pwm2_duty(duty); while((RD0==0)&&(RD1==0)&&(RD2==0)&&(RD3==1)); } else if((RD0==0)&&(RD1==0)&&(RD2==1)&&(RD3==0)) {duty=53; set_pwm1_duty(duty); set_pwm2_duty(duty); while((RD0==0)&&(RD1==0)&&(RD2==1)&&(RD3==0)); } else if((RD0==1)&&(RD1==0)&&(RD2==0)&&(RD3==0)) {duty=65; set_pwm1_duty(duty); set_pwm2_duty(duty); while((RD0==1)&&(RD1==0)&&(RD2==0)&&(RD3==0)); } switch(p) { case 1:forward();break; case 2:backward();break; case 3:right();break; case 4:left();break; case 5:stop();break; } } } SV: ðẶNG QUANG VINH 83 Phụ lục PHỤ LỤC B Chương trình giao diện GUI Matlab gồm chương trình xử lý ảnh giao tiếp RS232 function varargout = test3(varargin) % TEST3 M-file for test3.fig % TEST3, by itself, creates a new TEST3 or raises the existing % singleton*. % % H = TEST3 returns the handle to a new TEST3 or the handle to % the existing singleton*. % % TEST3('CALLBACK',hObject,eventData,handles, .) calls the local % function named CALLBACK in TEST3.M with the given input arguments. % % TEST3('Property','Value', .) creates a new TEST3 or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before test3_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to test3_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help test3 % Last Modified by GUIDE v2.5 07-Dec-2011 15:26:01 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', @test3_OpeningFcn, . 'gui_OutputFcn', @test3_OutputFcn, . 'gui_LayoutFcn', [] , . 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before test3 is made visible. function test3_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure SV: ðẶNG QUANG VINH 84 Phụ lục % eventdata % handles % varargin reserved - to be defined in a future version of MATLAB structure with handles and user data (see GUIDATA) command line arguments to test3 (see VARARGIN) % Choose default command line output for test3 handles.output = hObject; % Update handles structure guidata(hObject, handles); IsConnect = 0; % = Connect,0 = Disconnect %Declare global variable global hand; hand = handles; % Save data. handles.status_com = IsConnect; guidata(hObject,handles); % UIWAIT makes test3 wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = test3_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in connect_button. function connect_button_Callback(hObject, eventdata, handles) % hObject handle to connect_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; if (IsConnect == 0), IsConnect = 1; s = serial('com1','baudrate',19200); s.BytesAvailableFcn = @BytesAvailable_Callback; fopen(s); temp = s.status; if(temp == 'open'), set(handles.status_static,'String','Connected'); else set(handles.status_static,'String','A Problem occur'); end; end; handles.com = s; handles.status_com = IsConnect; guidata(hObject,handles); SV: ðẶNG QUANG VINH 85 Phụ lục %% ---------------------- Serial_Callback function BytesAvailable_Callback(obj,event) global hand; ind = fscanf(obj); set(hand.edit_RX,'String',ind); % --- Executes on button press in disconnect_button. function disconnect_button_Callback(hObject, eventdata, handles) % hObject handle to disconnect_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1), IsConnect = 0; fclose(s); delete(s); clear s; set(handles.status_static,'String','Disconnected'); end; handles.status_com = IsConnect; guidata(hObject,handles); % --- Executes on button press in backward_button. function backward_button_Callback(hObject, eventdata, handles) % hObject handle to backward_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1), fprintf(s,'b'); end; handles.com = s; guidata(hObject,handles); % --- Executes on button press in stop_button. function stop_button_Callback(hObject, eventdata, handles) % hObject handle to stop_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1), fprintf(s,'s'); SV: ðẶNG QUANG VINH 86 Phụ lục end; handles.com = s; guidata(hObject,handles); % --- Executes on button press in right_button. function right_button_Callback(hObject, eventdata, handles) % hObject handle to right_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1), fprintf(s,'r'); end; handles.com = s; guidata(hObject,handles); % --- Executes on button press in forward_button. function forward_button_Callback(hObject, eventdata, handles) % hObject handle to forward_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1), fprintf(s,'f'); end; handles.com = s; guidata(hObject,handles); % --- Executes on button press in left_button. function left_button_Callback(hObject, eventdata, handles) % hObject handle to left_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) IsConnect = handles.status_com; s = handles.com; if (IsConnect == 1), fprintf(s,'l'); end; handles.com = s; guidata(hObject,handles); % --- Executes on button press in auto_button. function auto_button_Callback(hObject, eventdata, handles) % hObject handle to auto_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) s = handles.com; vid = videoinput('winvideo',1); SV: ðẶNG QUANG VINH 87 Phụ lục set(vid, 'FramesPerTrigger', Inf); set(vid, 'ReturnedColorspace', 'rgb') vid.FrameGrabInterval = 3; start(vid) figure(); while(vid.FramesAcquired0 bb = stats(j).BoundingBox; bc = stats(j).Centroid; ss = stats(j).Area; rectangle('Position',bb,'EdgeColor','g','LineWidth',2) plot(bc(1),bc(2),'-bo','markerfacecolor','b','markersize',4) a=text(bc(1)+10,bc(2), strcat('X: ', num2str(round(bc(1))), ' Y: ', num2str(round(bc(2))))); set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'yellow'); if bc(1)120 fprintf(s,'r'); elseif 50[...]... hành như m t ph n cơ s bao g m c v m ch ñi n ph n c ng và ph n m m ñi u khi n robot t hành M c dù ho t ñ ng c a các robot th c t bao g m r t nhi u thao tác, ñ tài này ch gi i h n ho t ñ ng di chuy n c a robot t hành, và ph n m m ng d ng t p trung vào hi n th c gi i pháp ñi u khi n d n ñư ng cho robot 1.2 Gi i thi u chung: 1.2.1 Robot t hành: Robot t hành hay robot di ñ ng (Mobile Robot, thư ng g i... Hình 1.2: Robot Pops (ngu n: slashgear.com) SV: ð NG QUANG VINH 3 Chương 1: T ng quan v ñ tài Hình 1.3: Robot MIDbo (ngu n: telepresenceoptions.com) Hình 1.4: PANrobot (ngu n: mobilerobot.org) Hình 1.5: Laptop robot (ngu n: mobilerobot.org) SV: ð NG QUANG VINH 4 Chương 1: T ng quan v ñ tài 1.3 Sơ ñ kh i c a robot t hành: 1.3.1 Phân tích sơ ñ kh i c a robot t hành: M t robot t hành có các kh i cơ b n sau:... QUANG VINH 10 Chương 2: Thi t k ph n cơ khí cho robot 2.3 Th c hi n mô hình cơ khí robot: K t c u cơ khí c a mô hình robot ñư c thi t k và thi công d a trên ư c tính sơ b ñ ch u ñư c tr ng lư ng c a robot và laptop Không ñi sâu vào tính toán chi ti t v cơ khí 2 ñ ng cơ s d ng là ñ ng cơ DC 12V, công su t 10W Có b gi m t c Hình 2.6 – ð ng cơ 2 bánh xe làm bánh ch ñ ng cho robot, ñư ng kính ngoài 100mm, b... 7 Chương 2: Thi t k ph n cơ khí cho robot CHƯƠNG 2 Thi t k ph n cơ khí cho robot 2.1 Sơ lư c v các phương pháp di chuy n c a robot t hành: Theo phương pháp chuy n ñ ng trên m t ñ t, ta chia robot t hành thành 2 l p: chuy n ñ ng b ng chân (legged) và b ng bánh (wheeled) Trong l p ñ u tiên, chuy n ñ ng có ñư c nh các chân cơ khí b t chư c chuy n ñ ng c a con ngư i và ñ ng v t Robot lo i này có th di chuy... cho robot Các tín hi u ñi u khi n t CPU thư ng không ñ công su t ñ ñi u khi n tr c ti p các cơ c u ch p hành, vì v y c n có kh i công su t làm nhi m v nh n tín hi u ñi u khi n t CPU và cung c p ñ công su t ñ ñi u khi n cơ c u ch p hành ho t ñ ng theo ñúng tín hi u ñi u khi n ñó Cơ c u ch p hành thư ng là các ñ ng cơ, các van khí nén hay th y l c,… s truy n ñ ng cho các k t c u cơ khí v n ñ ng robot Robot... giúp robot cân b ng và ñ d b hư ng Hình 2.8 – Bánh xe t lư n SV: ð NG QUANG VINH 11 Chương 2: Thi t k ph n cơ khí cho robot Ngu n cung c p cho robot là acquy 12V – 1.2Ah Hình 2.9 – Acquy Khung sư n robot hình h p ch nh t, làm b ng nhôm và mica Hình 2.10 – Khung sư n SV: ð NG QUANG VINH 12 Chương 2: Thi t k ph n cơ khí cho robot Ta ñư c mô hình cơ khí hoàn ch nh c a robot t hành: Hình 2.11 – Mô hình cơ. .. hình robot t hành: Trong ñ tài này, ta xây d ng m t mô hình robot t hành nh , v i công vi c chính t p trung vào vi c tìm hi u và th c hi n m ch, chương trình ñi u khi n cho robot s d ng x lý nh b ng Matlab Vì v y, thi t k mô hình robot t hành v i sơ ñ kh i như sau: Laptop Matlab x lý nh Webcam M ch ñi u khi n PIC16F877A Frame RS232 RS232 M ch công su t ð ng cơ DC L298N Hình 1.7 – Mô hình robot t hành. .. khi n d n ñư ng cho robot t hành cũng không ph i là bài toán ñơn gi n Trong lu n văn t t nghi p này, gi i pháp ñi u khi n d n ñư ng cho robot t hành s ñư c gi i quy t m c ñ không quá ph c t p SV: ð NG QUANG VINH 1 Chương 1: T ng quan v ñ tài a) b) c) d) e) f) Hình 1.1 – M t s hình nh v robot t hành a) Robot Spirit c a NASA thám hi m sao H a – b) Robot AQUA ho t ñ ng dư i nư c c) Robot SRR và FIDO c... n h p bánh xe và xích (ít g p) a) b) Hình 2.2 – Robot di chuy n b ng bánh a) di chuy n b ng bánh xe - b) di chuy n b ng bánh xích SV: ð NG QUANG VINH 8 Chương 2: Thi t k ph n cơ khí cho robot 2.1.1 Robot dùng bánh xe: D ng ñơn gi n nh t c a robot t hành là dùng bánh xe, ñư c mô t b ng các sơ ñ hình dư i : Hình 2.3 – Các d ng robot dùng bánh xe Robot t hành d ng này bao g m m t hay nhi u bánh xe ñư c... robot có kh năng t di chuy n, t v n ñ ng (có th l p trình ñư c) dư i s ñi u khi n t ñ ng ñ th c hi n công vi c ñư c giao Ti m năng ng d ng c a robot t hành h t s c r ng l n Có th k ñ n robot v n chuy n v t li u, hàng hóa trong các tòa nhà, nhà máy, c a hàng, sân bay và thư vi n; robot ph c v quét d n ñư ng ph , khoang chân không; robot ki m tra trong môi trư ng nguy hi m; robot canh gác, do thám; robot . DD07KTD6 1. Tên ñề tài: THIẾT KẾ PHẦN CƠ SỞ CỦA ROBOT TỰ HÀNH 2. Nhiệm vụ: (yêu cầu về nội dung và số liệu ban ñầu) a. Thiết kế phần cơ cho robot (10%) b. ðiều khiển robot bằng tay sử dụng. hở. Chương 2: Thiết kế phần cơ khí cho robot SV: ðẶNG QUANG VINH 8 CHƯƠNG 2 Thiết kế phần cơ khí cho robot 2.1 Sơ lược về các phương pháp di chuyển của robot tự hành: Theo phương. di chuyển của robot tự hành, và phần mềm ứng dụng tập trung vào hiện thực giải pháp ñiều khiển dẫn ñường cho robot. 1.2 Giới thiệu chung: 1.2.1 Robot tự hành: Robot tự hành hay robot di