Tổng quan về robot và robot tự hành, các mô hình điều khiển robot, mạch điều khiển động cơ bằng cầu H và cảm biến phục vụ cho đề tài, thiết kế cơ khí và thiết kế mạch điện tử cho robot, chương trình phần mềm điều khiển tránh vật cản và tránh độ cao.
ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG - - BÁO CÁO PROJECT Đề tài : Thiết kế Robot tự hành Giảng viên HD: Tiến Sĩ Nguyễn Thái Hà Bộ môn Công Nghệ Điện Tử & Kỹ Thuật Điện Tử Y Sinh Nhóm sinh viên thực hiện: Đỗ Trung Thanh 20112269 Vũ Ngọc Thành 20112019 Nguyễn Công Thành 20112182 Hà Nội, 12/2015 Mục lục CHƢƠNG I : TỔNG QUAN 1.1.Đặt vấn đề 1.2 Robot tự hành 1.2.1 Yêu cầu chức 1.2.2 Yêu cầu phi chức CHƢƠNG II: CƠ SỞ LÝ THUYẾT 2.1 Khái niệm Robot 2.2 Phân loại Robot .8 2.3 Các phận Robot 2.4 Các mô hình điều khiển robot 10 2.4.1 Mô hình kiểu phản xạ 10 2.4.2 Mô hình “sens-plan-act” 10 2.4.3 Mô hình kiểu lai .10 2.5 Một số cảm biến dùng thiết kế Robot 11 2.5.1 Cảm biến siêu âm SRF05 11 2.5.2 Cảm biến hồng ngoại / phản xạ TCRT5000… ……………………………………………….11 2.5.3 Các linh kiện khác 12 2.6 Mạch điều khiển động 13 2.6.1 Giới thiệu mạch cầu H 13 2.6.2 Điều khiển motor với IC L298 15 _Toc4375563732.7 Arduino 17 2.7.1 Năng lượng .19 2.7.2.Các chân lượng 19 2.7.3.Bộ nhớ 20 2.7.4 Các cổng vào/ra 21 2.7.5 Lập trình cho Arduino 22 CHƢƠNG III: THIẾT KẾ CƠ KHÍ 24 3.1 Khung robot 24 3.2 Bánh xe 25 CHƢƠNG IV: THIẾT KẾ MẠCH ĐIỆN TỬ 26 4.1 Sơ đồ khối hệ thống 26 4.2 Phân tích khối 26 4.2.1 Khối nguồn 26 4.2.2 Khối cảm biến 30 4.2.3 Khối điều khiển 35 CHƢƠNG V: PHẦN MỀM ĐIỀU KHIỂN ROBOT 38 5.1 Bài toán di chuyển robot 38 5.2 Tránh vật cản độ cao 39 5.3 Chƣơng trình điều khiển robot 39 CHƢƠNG VI : KẾT QUẢ THỰC NGHIỆM VÀ HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 41 6.1 Kết thực nghiệm 41 6.1.1 Ưu điểm 42 6.1.2.Nhược điểm 43 6.2 Các hƣớng phát triển đề tài 43 6.2.1 Dò đường sử dụng la bàn số HMC5883L 43 6.2.2 Sử dụng kĩ thuật định vị robot Dead-reckoning 43 6.2.3 Điều chỉnh tương quan tốc độ động để tăng độ xác 44 6.2.4.Lập trình thời gian hoạt động .44 6.2.5 Điều khiển robot Bluetooth .44 6.2.6 Thiết kế cánh tay robot .44 PHỤ LỤC 46 Hàm xác định khoảng cách từ cảm biến siêu âm đến vật cản 46 Hàm trạng thái dịch chuyển Robot 47 Hàm gán tín hiệu điều khiển động 50 Hàm điều khiển 51 Danh mục hình ảnh – bảng biểu…………………………………………………………………… …55 Tài liệu tham khảo…………………………………………………………………………… ……….57 CHƢƠNG I : TỔNG QUAN 1.1.Đặt vấn đề Ý tƣởng việc chế tạo cỗ máy làm việc tự động có từ thời cổ đại, nhƣng nghiên cứu chức khả ứng dụng bƣớc tiến đáng kể kỷ 20 Xuyên suốt lịch sử, thiết kế chế tạo Robot thƣờng đƣợc nhìn nhận để bắt chƣớc hành vi ngƣời, thƣờng quản lý nhiệm vụ theo cách thức tƣơng tự Ngày nay, robot lĩnh vực phát triển nhanh chóng, nhờ công nghệ phát triển liên tục, robot đƣợc chế tạo để phục vụ cho nhiều mục đích khác nhau, Robot dƣới nƣớc, Robot công nghiệp hay Robot quân Nhiều robot thay ngƣời làm công việc mạo hiểm, độc hại nhƣ tháo ngòi nổ bom, mìn , thám hiểm… Thực nghiên cứu , thiết kế sản xuất robot trở thành lĩnh vực mang tính thời đại, đƣợc quan tâm đầu tƣ mạnh mẽ toàn giới Nói tốc độ phát triển công nghệ, thấy giới ngày có nhiều cải tiến, nâng cấp lĩnh vực vi xử lý Các vi điều khiển, vi xử lý xuất thị trƣờng đa dạng, tốc độ xử lý ngày cao, tính hỗ trợ ngày mạnh mẽ Có thể đƣa tên tiêu biểu nhƣ vi điều khiển họ AVR Atmel, vi điều khiển họ PIC Microchip, Psoc Cypress, ARM, loại FPGA… Đó điều khiện thuận lợi để phát triển hệ thống nhúng đa dạng hơn, thông minh Trong xu cạnh tranh, hãng phát triển vi mạch cố gắng tăng mật độ tích hợp vi mạch ngày cao, hạ giá thành đến mức thấp Ngƣời sử dụng dễ dàng sở hữu vi xử lý tốc độ cao giá rẻ, công cụ phát triển, tài liệu liên quan dễ dàng tìm đƣợc Vì giá thành cho sản phẩm cuối đƣợc giảm Ở Việt Nam việc đƣa robot vào hoạt động sản xuất công nghiệp trở nên phổ biến Tuy nhiên robot phục vụ gia đình, robot giải trí – gọi chung robot dịch vụ lĩnh vực mẻ Thị trƣờng robot Việt Nam đà phát triển, cần đƣợc quan tâm, việc nghiên cứu , thiết kế ,mô robot trƣờng đại học, viện nghiên cứu… để từ ứng dụng vào sản xuất công nghiệp hƣớng đắn, sáng suốt cần đƣợc khuyến khích phát triển Hình 1.1 Một số loại robot tự hành phổ biến Việt Nam 1.2 Robot tự hành Một vấn đề then chốt, tối quan trọng cho việc vận hành robot toán di chuyển ( cách thức di chuyển, cách thức xử lý nhận tác động từ môi trƣờng ) Ở đề tài này, nhƣ tên gọi, robot chúng em thiết kế thực di chuyển cách hoàn toàn tự động, với tính bật : tự tránh vật cản , cảm nhận độ cao để không bị rơi hoạt động bậc thang, gắn thêm khối chuyên biệt để thực chức ( nhƣ hút bụi , lau nhà, quét nhà …) Thiết kế nhỏ gọn, dễ sử dụng , dễ di chuyển, tiêu tốn lƣợng chi phí thiết kế thấp ƣu điểm đáng kể Robot 1.2.1 Yêu cầu chức Robot hoạt động tự động sau bấm nút Robot tự động tránh vật cản Robot lùi lại đến gần bậc thang, ban công… chuyển hƣớng di chuyển 1.2.2 Yêu cầu phi chức Có module cảm nhận vật cản ( sử dụng cảm biến siêu âm ) Có module cảm biến gầm cảm nhận độ cao ( dùng cảm biến hồng ngoại) Code C Dễ dàng điều khiển Mạch nhỏ gọn, xếp linh kiện hợp lý Tích hợp thêm đƣợc chức thực tế ( hút bụi, lau nhà, dò đƣờng…) CHƢƠNG II: CƠ SỞ LÝ THUYẾT 2.1 Khái niệm Robot Nguyên gốc từ La Tinh robota có nghĩa ngƣời tạp dịch Nhƣ mục đích đời robot thay ngƣời làm số công việc Robot hay ngƣời máy loại máy thực công việc cách tự động điều khiển máy tính Robot tác nhân khí, nhân tạo, ảo, thƣờng hệ thống khí-điện tử Với xuất chuyển động mình, robot gây cho ngƣời ta cảm giác giác quan giống nhƣ ngƣời Từ "robot" (ngƣời máy) thƣờng đƣợc hiểu với hai nghĩa: robot khí phần mềm tự hoạt động Ngày nay, ngƣời ta tranh cãi vấn đề: “Một loại máy nhƣ đủ tiêu chuẩn để đƣợc gọi robot?” Một cách gần xác, robot phải có vài (không thiết phải đầy đủ) đặc điểm sau đây: Không phải tự nhiên, tức ngƣời sáng tạo Có khả nhận biết môi trƣờng xung quanh Có thể tƣơng tác với vật thể môi trƣờng Có thông minh, có khả đƣa lựa chọn dựa môi trƣờng đƣợc điều khiển cách tự động theo trình tự đƣợc lập trình trƣớc Có khả điều khiển đuợc lệnh để thay đổi tùy theo yêu cầu ngƣời sử dụng Có thể di chuyển quay tịnh tiến theo hay nhiều chiều Có khéo léo vận động Sau số định nghĩa robot : Tiêu chuẩn quốc tế ISO 8373 định nghĩa robot nhƣ sau: “Đó loại máy móc đƣợc điều khiển tự động, đƣợc lập trình sẵn, sử dụng vào nhiều mục đích khác nhau, có khả vận động theo nhiều trục, cố định di động tùy theo ứng dụng công nghiệp tự động.” Joseph Engelberger, ngƣời tiên phong lĩnh vực robot công nghiệp nhận xét rằng: “Tôi định nghĩa robot, nhƣng biết loại máy móc robot nhìn thấy nó!!” Từ điển Cambridge trực tuyến định nghĩa robot rằng: “Đó loại máy thực công việc cách tự động điều khiển máy tính” Ngƣời máy hay Robot công cụ điện tử, thủy lực, nhân tạo, ảo, thay ngƣời công nghiệp hay môi trƣờng nguy hiểm Robot công cụ để giúp ngƣời giải trí, tìm hiểu khoa học Ta thấy định nghĩa robot định nghĩa “mở”, nghành công nghiệp robot ngày phát triển, ngƣời đƣợc chứng kiến nhiều loại robot 2.2 Phân loại Robot Có nhiều định nghĩa nhƣ cách phận loại robot Sau số cách phân loại robot Theo Viện Robotics Hoa Kỳ(Robotics Institute of America - RIA) có loại robot nhƣ sau: Robot vân hành với điều khiển ngƣời Tự vận hành với chu trình đƣợc định trƣớc Robot khả trình, điều khiển đƣợc với quỹ đạo liên tục Robot có khả tự thu nhận thông tin từ môi trƣờng để đƣa chuyển động thông minh Theo Hiệp Hội Robot Nhật Bản : Robot vận hành với điều khiển ngƣời Robot vận hành với trình tự cố định Robot vận hành với trình tự đƣợc điều khiển đơn giản Playback Robot, Robot đƣợc lập trình sẵn nhiều cách chuyển động Robot điều khiển số với tác vụ đƣợc lập sẵn Robot thông minh : tự hiểu đƣợc môi trƣờng để hành động hoàn thành tác vụ Ngoài cách phân loại robot theo hình dáng chức robot ví dụ nhƣ: robot công nghiệp, tay máy, robot giống ngƣời, robot mo động vật … 2.3 Các phận Robot Một robot thƣờng bao gồm phận: phận cảm nhận, phận điều khiển phận chấp hành Bộ phận cảm nhận : thu nhận thông tin từ môi trƣờng Bao gồm sensor nội sensor ngoại Bộ phận điều khiển : nhận thông tin từ phận cảm nhận từ đƣa tín hiệu điều khiển phận chấp hành Bao gồm xử lý nhớ Bộ phận chấp hành : thực hành động robot Nhận thông tin điều khiển từ phận điều khiển Trong nhiều trƣờng hợp phận chấp hành nhận thông tin thẳng từ phận cảm nhận Môi Trường Cảm nhận Robot Chấp Điều hành khiển (gồm PC vi xử lý nhớ) Hình 2.1 Các phận robot 2.4 Các mô hình điều khiển robot 2.4.1 Mô hình kiểu phản xạ Cảm Nhận Chấp Hành Hình 2.2 Mô hình kiểu phản xạ Mô hình khối điều khiển Thông tin từ khối cảm nhận đƣợc đƣa thẳng tới khối chấp hành, từ cấu chấp hành hoạt động Mô hình có ƣu điểm tốc độ đáp ứng nhanh 2.4.2 Mô hình “sens-plan-act” Cảm nhận Lên kế hoạch Chấp hành Hình 2.3 Mô hình Ở mô hình này, thông tin môi trƣờng đƣợc cảm nhận Thông tin đƣợc truyền tới phận điều khiển, phận điều khiển phân tích từ đƣa thông tin điều khiển tới phận chấp hành Mô hình có tốc độ đáp ứng chậm 2.4.3 Mô hình kiểu lai Lập kế hoạch Cảm Nhận Chấp hành Hình 2.4 Mô hình lai 10 6.1.2.Nhược điểm + Do phần khí chƣa tốt nên ảnh hƣởng đến việc di chuyển robot chƣa tốt + Cảm biến siêu âm bị hạn chế ( không nhận đƣợc tín hiệu phản xạ ) phía trƣớc vật cản mềm nhƣ bông, đệm, chăn… + Hệ thống cảm biến gầm phát độ cao đƣợc làm chƣa tốt, nên đặt mặt thảm dầy, robot thƣờng không nhận mặt sàn báo lỗi Phƣơng hƣớng khắc phục nâng công suất phát led phát + Nguồn cấp chƣa đủ dung lƣợng để robot hoạt động thời gian dài 6.2 Các hƣớng phát triển đề tài 6.2.1 Dò đường sử dụng la bàn số HMC5883L Cảm biến la bàn số HMC5883L đƣợc dùng để đo từ trƣờng trái đất nhằm xác định phƣơng hƣớng vị trí với độ xác lên đến độ Nó cung cấp cách đo riêng biệt cho trục kết hợp lại để tính toán 3D Có thể dùng để đo từ trƣờng thô nguồn từ trƣờng mạnh gần Mạch cảm nhận đƣợc nguồn từ trƣờng xung quanh nhƣ nam châm điện trƣờng Khi phát đƣợc từ trƣờng từ bên ngoài, xác định đƣợc khoảng cách tƣơng đối chiều đến vật phát từ trƣờng 6.2.2 Sử dụng kĩ thuật định vị robot Dead-reckoning Định vị robot giúp robot di chuyển đƣợc toàn phần diện tích mặt sàn mà ngƣời điều khiển muốn qua, hay với xác định đƣợc tọa độ ổ sạc điện cho robot, giúp cho robot tự động di chuyển phía ổ sạc gần hết lƣợng Dead-reckoning phƣơng pháp dẫn đƣờng đƣợc sử dụng rộng rãi rô bốt di động Phƣơng pháp dead-reakoning dựa phƣơng trình đơn giản thực đƣợc cách dễ dàng, sử dụng liệu từ mã hoá số vòng quay bánh xe Deadreckoning dựa nguyên tắc chuyển đổi số vòng quay bánh xe thành độ dịch tuyến tính tƣơng ứng rô bốt Nguyên tắc với giá trị giới hạn Có vài lý 43 dẫn đến không xác việc chuyển từ số gia vòng quay bánh xe sang chuyển động tuyến tính Tất nguồn sai số đƣợc chia thành nhóm: sai số hệ thống sai số không hệ thống Để giảm sai số dead-reckoning cần phải tăng độ xác động học nhƣ kích thƣớc tới hạn 6.2.3 Điều chỉnh tương quan tốc độ động để tăng độ xác Trong toán di chuyển robot trình bày phần 5.1 ( chƣơng 5) , để điều khiển robot theo quỹ đạo đó, ví dụ nhƣ di chuyển theo đƣờng cong thực chất ta thay đổi tỉ lệ tốc độ bánh xe robot Nhƣ vậy, sử dụng băm xung (PWM) arduino để điều chỉnh tốc độ động cơ, từ xác định xác đƣợc góc quay , quỹ đạo di chuyển robot nhờ đƣợc kiểm soát tốt 6.2.4.Lập trình thời gian hoạt động Robot đƣợc hẹn để hoạt động Đây toán thực tế số mẫu robot hút bụi giới tích hợp chức Ngƣời sử dụng hẹn cho robot, sau khỏi nhà, đặt sẵn thời gian biểu hoạt động hàng ngày, hàng tuần để robot tự hoạt động Để thực chức này, sử dụng đồng hồ thời gian thực RTC DS1302 6.2.5 Điều khiển robot Bluetooth Sử dụng module thu phát Bluetooth HC05 để điều khiển robot thông qua phím điều khiển ( đƣợc viết app Android sử dụng tay cầm điều khiển từ xa thu phát hồng ngoại ) Việc điều khiển nút bấm giúp cho robot thực đƣợc chuẩn xác hành động theo mệnh lệnh ngƣời, nhiên tính tự động , bị phụ thuộc 6.2.6 Thiết kế cánh tay robot Đây hƣớng phát triển hay, quan trọng có tính ứng dụng thực tế cao Một robot di chuyển thông thƣờng đƣợc gắn thêm công cụ/ phƣơng tiện thay chức ngƣời nhƣ “ cánh tay” thay ngƣời để thực công việc nguy hiểm có tính độc hại cao Ví dụ : robot xử lý rác thải y tế, có 44 cánh tay thu gom rác thải đƣợc điều khiển ngƣời Các cấu thƣờng dùng để thiết kế cánh tay robot dùng động xoay( động bƣớc ) khí nén ( để kẹp vật ) 45 PHỤ LỤC CODE Hàm xác định khoảng cách từ cảm biến siêu âm đến vật cản int objectDistance_cm (byte angle) { srf05.write(angle); delay(500); unsigned long duration;//biến đo thời gian int distance;//biến lƣu khoảng cách /* phát xung từ chân trig */ digitalWrite(trig,0);//tắt chân trig delayMicroseconds(2); digitalWrite(trig,1);// phát xung từ chân trig delayMicroseconds(5);// xung có độ dài microSeconds digitalWrite(trig,0);//tắt chân trig /*tính toán thời gian*/ 46 duration = pulseIn(echo,HIGH);//đo độ rộng xung HIGH chân echo ( http://arduino.vn/reference/pulsein ) distance = int(duration/2/29.412);//tính khoảng cách đến vật //delay(200); return distance; } Hàm trạng thái dịch chuyển Robot void robotMover (byte inR1, byte inR2, byte inL1, byte inL2, byte action) { /* inR1 inR2 chân tín hiệu động bên phải inL1 inL2 chân tín hiệu động bên trái action= đứng yên action =1 thẳng action =2 lùi lại action =3 quay trái action =4 quay phải action =5 rẽ trái 47 action =6 rẽ phải action =7 rẽ lùi trái action =8 rẽ lùi phải */ switch (action) { case 0:// không di chuyển motorControlNoSpeed(inR1, inR2, 0); motorControlNoSpeed(inL1, inL2, 0); break; case 1://đi thẳng motorControlNoSpeed(inR1, inR2, 1); motorControlNoSpeed(inL1, inL2, 1); break; case 2:// lùi lại motorControlNoSpeed(inR1, inR2, 2); motorControlNoSpeed(inL1, inL2, 2); break; case 3:// quay trái 48 motorControlNoSpeed(inR1, inR2, 1); motorControlNoSpeed(inL1, inL2, 2); break; case 4:// quay phải motorControlNoSpeed(inR1, inR2, 2); motorControlNoSpeed(inL1, inL2, 1); break; case 5:// rẽ trái motorControlNoSpeed(inR1, inR2, 1); motorControlNoSpeed(inL1, inL2, 0); break; case 6:// rẽ phải motorControlNoSpeed(inR1, inR2, 0); motorControlNoSpeed(inL1, inL2, 1); break; case 7:// rẽ lùi trái motorControlNoSpeed(inR1, inR2, 2); motorControlNoSpeed(inL1, inL2, 0); break; case 8:// rẽ lùi phải 49 motorControlNoSpeed(inR1, inR2, 0); motorControlNoSpeed(inL1, inL2, 2); break; default: action = 0; } } Hàm gán tín hiệu điều khiển động void motorControlNoSpeed (byte in1,byte in2, byte direct) { // in1 and in2 chân tín hiệu để điều khiển motor // tốc độ mặc định lớn // direct includes: // 0:Dừng // 1:đi theo hƣớng thứ // 2:đi theo hƣớng lại switch (direct) { 50 case 0:// Dừng không quay digitalWrite(in1,LOW); digitalWrite(in2,LOW); break; case 1:// Quay chiều thứ digitalWrite(in1,HIGH); digitalWrite(in2,LOW); break; case 2:// Quay chiều thứ digitalWrite(in1,LOW); digitalWrite(in2,HIGH); break; //default: } } Hàm điều khiển void objectAvoider (byte inR1, byte inR2, byte inL1, byte inL2, byte allow_distance, int turn_back_time) { 51 robotMover(inR1,inR2,inL1,inL2,1); Serial.println("Tiến"); //delay(10); int front_distance=objectDistance_cm (90); int left_distance; int right_distance; int max_distance; int sensorValue = digitalRead(10); delay(10); if ((front_distance > allow_distance)&&(sensorValue==0)) { robotMover(inR1,inR2,inL1,inL2,1); Serial.println("Tiến"); delay(10); } if ((front_distance