Hiện nay kĩ thuật robot đã và đang được ứng dụng rộng rãi ở nhiều nước nó đã đem lại hiệu quả to lớn trong sản xuất công nghiệp trong quốc phòng thám hiểm vũ trụ y tế xã hội Tuy nhiên việc ứng dụng robot vào trong sản xuất phục vụ đời sống ở Việt Nam vẫn chưa cao Cụ thể như trong môi trường công nghiệp ở nước ngoài AGV là một loại robot được sử dụng để chuyên chở tự động Hay là robot tự động phục trong nhà hàng quán cafe Với mong muốn tạo ra những robot có tính ứng dụng cao như vậy cho đời sống cũng như trong sản xuất công nghiệp nước ta nhóm chúng tôi đã quyết định chọn đề tài Thiết kế và chế tạo robot tự động điều hướng môi trường trong nhà làm đề tài tốt nghiệp
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO ROBOT TỰ ĐỘNG ĐIỀU HƯỚNG MÔI TRƯỜNG TRONG NHÀ Người hướng dẫn: Sinh viên thực hiện: Số thẻ sinh viên : Lớp: TS VÕ NHƯ THÀNH TRẦN LÊ THANH KHOA TRẦN QUỐC HỒNG 101140147 101140142 14CDT1 Đà Nẵng, 2019 TĨM TẮT ĐỒ ÁN TỐT NGHIỆP Tên đề tài: Thiết kế chế tạo robot tự động điều hướng môi trường nhà SV thực hiện: Trần Lê Thanh Khoa MSSV: 101140147 Lớp: 14CDT1 Trần Quốc Hoàng MSSV: 101140142 Lớp: 14CDT1 GV hướng dẫn: TS Võ Như Thành GV duyệt: TS Đặng Phước Vinh Nội dung làm bao gồm vấn đề sau: Nhu cầu thực tế đề tài: Hiện nay, kĩ thuật robot ứng dụng rộng rãi nhiều nước, đem lại hiệu to lớn sản xuất công nghiệp, quốc phòng, thám hiểm vũ trụ, y tế, xã hội Tuy nhiên, việc ứng dụng robot vào sản xuất, phục vụ đời sống Việt Nam chưa cao Cụ thể môi trường công nghiệp nước ngoài, AGV loại robot sử dụng để chuyên chở tự động Hay robot tự động phục nhà hàng, quán cafe Với mong muốn tạo robot có tính ứng dụng cao cho đời sống sản xuất công nghiệp nước ta, nhóm chúng tơi định chọn đề tài "Thiết kế chế tạo robot tự động điều hướng môi trường nhà" làm đề tài tốt nghiệp Phạm vi nghiên cứu đề tài tốt nghiệp: ✓ Nghiên cứu, thiết kế chế tạo robot tạo đồ 2D, 3D tự động điều hướng đồ ✓ Nghiên cứu ứng dụng ROS (robot operating system) để chế tao robot ✓ Nghiên cứu sử dụng cảm biến Kinect Nội dung đề tài thực hiện: ✓ Số trang thuyết minh: 81 trang ✓ Số vẽ: vẽ A0 ✓ Mơ hình: i Kết đạt được: • Phần lý thuyết ✓ Nghiên cứu, ứng dụng thành cơng ROS để chế tạo robot ✓ Robot có khả quét đồ tự điều hướng tốt ✓ Thiết kế robot phần mềm Solidwork vẽ vẽ Autocad ✓ Lý thuyết cảm biển Kinect, encoder, Arduino Mega ✓ Thiết kế mạch phần mền Altium • Phần tính tốn, thiết kế ✓ Thiết kế chế tạo phần khí ✓ Thiết kế chế tạo mạch điền khiển ✓ Đã chế tạo thành cơng mơ hình hoạt động tương đối ổn định ✓ Tính tốn thiết kế hệ thống cảm biến Đà Nẵng, ngày tháng năm 2018 Sinh viên thực Trần Lê Thanh Khoa ii Trần Quốc Hồng ĐẠI HỌC ĐÀ NẴNG CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TT Họ tên sinh viên Số thẻ SV Lớp Ngành Trần Lê Thanh Khoa 101140147 14CDT1 CƠ ĐIỆN TỬ Trần Quốc Hoàng 101140142 14CDT1 CƠ ĐIỆN TỬ Tên đề tài: Thiết kế chế tạo robot tự động điều hướng môi trường nhà Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: Tham khảo thực tế Nội dung phần thuyết minh tính tốn: a Phần chung: TT Họ tên sinh viên Nội dung Trần Lê Thanh Khoa - Tính tốn, thiết kế chế tạo kết cấu khí robot - Thiết kế hệ thống mạch điện điều khiển robot Trần Quốc Hoàng b Phần riêng TT Họ tên sinh viên Trần Lê Thanh Khoa Trần Quốc Hoàng Nội dung - Xây dựng lưu đồ thuật toán điều khiển robot - Lập trình chương trình xử lí -Tìm hiểu cấu động học robot Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): a Phần chung: TT Họ tên sinh viên Trần Lê Thanh Khoa Bản vẽ tổng thể robot Bản vẽ sơ đồ nguyên lý Trần Quốc Hoàng Nội dung iii A0 A0 b Phần riêng: TT Họ tên sinh viên Trần Lê Thanh Khoa Bản vẽ sơ đồ khối mạch điều khiển Bản vẽ lưu đồ thuật tốn A0 A0 Trần Quốc Hồng Bản vẽ sơ đồ động A0 Bản vẽ chi tiết A0 Nội dung Họ tên người hướng dẫn: T.S Võ Như Thành Ngày giao nhiệm vụ đồ án: 1/2/2018 Ngày hoàn thành đồ án: 1/6/2018 Đà Nẵng, ngày tháng năm 2018 Trưởng Bộ môn Kỹ thuật Cơ điện tử Người hướng dẫn iv LỜI NÓI ĐẦU Ngày với ảnh hưởng cách mạng cơng nghiệp 4.0, ngành Cơ khí nói chung ngành Cơ điện tử nói riêng ngành phát triển mạnh với nhiều thay đổi kỹ thuật công nghệ chất lượng Để đạt điều địi hỏi người cán kỹ thuật ngồi trình độ chun mơn cịn phải có tư sáng tạo, sâu nghiên cứu để tận dụng hết khả năng, nguồn lực Qua thời gian học khoa Cơ khí – Trường Đại học Bách khoa, tận tình hướng dẫn, giúp đỡ thầy, giáo nỗ lực thân, chúng em tích luỹ số kiến thức hành trang để trở thành kỹ sư tương lai Thước đo kiến thức đồ án tốt nghiệp Đó thực thách thức lớn sinh viên chúng em lần đầu tham gia, giải khối lượng công việc lớn Công việc thực đồ án tốt nghiệp gặp vất nhiều khó khăn, nhiều vấn đề nan giải Tuy nhiên giúp đỡ hướng dẫn tận tình thầy Võ Như Thành thầy giáo khác giúp chúng em hồn thành đồ án Nhưng với kiến thức hạn hẹp chưa có kinh nghiệm tính tốn, thi cơng thực tế nên khó tránh sai sót Chúng em kính mong tiếp tục bảo thầy, để em hồn thiện kiến thức Cuối cùng, em xin chân thành cảm ơn thầy, giáo khoa Cơ khí – Trường Đại học Bách khoa – Đại học Đà Nẵng, đặc biệt thầy Võ Như Thành bạn gia đình động viên giúp đỡ chúng em suốt trình thực đồ án Đà Nẵng, ngày tháng năm 2018 Sinh viên Trần Lê Thanh Khoa v Trần Quốc Hoàng CAM ĐOAN Kính gửi khoa Cơ khí - Trường đại học Bách khoa - Đại học Đà Nẵng Chúng em xin cam đoan đồ án tuân thủ tốt quy định liêm học thuật: • Khơng bịa đặt, đưa thơng tin sai lệch so với nguồn trích dẫn; • Khơng ngụy tạo số liệu q trình khảo sát, thí nghiệm, thực hành, thực tập hoạt động học thuật khác; • Khơng sử dụng hình thức gian dối việc trình bày, thể hoạt động học thuật kết từ trình học thuật mình; • Khơng đạo văn, sử dụng từ ngữ, cách diễn đạt người khác thể mình, trình bày, chép, dịch đoạn, nêu ý tưởng người khác mà khơng có trích dẫn • Không tự đạo văn, sử dụng lại thông tin nghiên cứu mà khơng có trích dẫn phân mảnh thông tin kết nghiên cứu để cơng bố nhiều ấn phẩm Sinh viên thực Trần Lê Thanh Khoa vi Trần Quốc Hoàng MỤC LỤC TÓM TẮT ĐỒ ÁN TỐT NGHIỆP .i LỜI NÓI ĐẦU v CAM ĐOAN vi DANH MỤC BẢNG BIỂU x DANH MỤC HÌNH VẼ xi LỜI MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Xu hướng phát triển robot đại 1.2 Những vấn đề robot di động 1.3 Mục tiêu đồ án phương pháp thực CHƯƠNG 2: HỆ ĐIỀU HÀNH ROBOT ROS 2.1 Giới thiệu hệ điều hành robot ROS 2.2 Tổng quan cách thức hoạt động ROS 2.3 Các khái niệm quan trọng ROS 2.3.1 Thuật ngữ ROS 2.3.2 Chủ đề 2.3.3 Dịch vụ 2.3.4 Truyền thông ROS 10 2.4 Công cụ trực quan 3D (RViz) 11 CHƯƠNG 3: TÍNH TỐN THIẾT KẾ PHẦN CƠ KHÍ 13 3.1 Cấu tạo robot 13 3.2 Phương án chọn cấu chuyển động robot [1] 14 3.2.1 Phương án 1: Robot chuyển động đa hướng loại bánh omni 14 3.2.2 Phương án 2: Robot chuyển động đa hướng loại bánh omni 15 3.2.3 Phương án 3: Robot loại bánh vi sai chuyển động độc lập 16 vii 3.3 Tính tốn chọn động [2] 16 CHƯƠNG 4: TÍNH TỐN, THIẾT KẾ MẠCH ĐIỆN ĐIỀU KHIỂN 19 4.1 Sơ đồ khối mạch điều khiển 19 4.2 Tìm hiểu cảm biến Kinect 19 4.2.1 Giới thiệu chung 19 4.2.2 Những thành phần Kinect 20 4.2.3 Tính tốn độ sâu 21 4.2.4 Một số đặc tính 25 4.3 Động giải thuật PID vị trí 26 4.3.1 Động Servo DC 26 4.3.2 Giải thuật PID vị trí [9] 31 4.4 Các linh kiện điện tử 32 4.4.1Mạch hạ áp LM2596 32 4.4.2 Arduino Motor Shield L293D 33 4.4.3 Arduino Mega 2560 34 CHƯƠNG 5: THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN 36 5.1 Nội dung chương trình điều khiển 36 5.1.1 Tổng quan toàn hệ thống 36 5.1.2 Hệ thống robot 37 5.2 Điều hướng 38 5.2.1 Điều hướng robot di động 38 5.2.2 Bản đồ 39 5.2.3 Vị trí robot 39 5.2.4 Cảm biến 40 5.2.5 Tính tốn đường dẫn lái xe 40 5.3 SLAM 40 5.3.1 Phần cứng cần thiết robot để SLAM 40 5.3.2 Di chuyển 40 5.3.3 Đo hình học 40 viii 5.3.4 Cảm biến đo khoảng cách 40 5.4 Giải thuật chương trình cho máy tính xử lý 41 KẾT LUẬN 43 TÀI LIỆU THAM KHẢO 44 PHỤ LỤC PHỤ LỤC 16 ix Thiết kế chế tạo robot tự động điều hướng môi trường nhà > • Move_base.launch SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 11 Thiết kế chế tạo robot tự động điều hướng môi trường nhà SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 12 Thiết kế chế tạo robot tự động điều hướng môi trường nhà • Navigation.launch • Model.urdf SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 13 Thiết kế chế tạo robot tự động điều hướng môi trường nhà SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 14 Thiết kế chế tạo robot tự động điều hướng môi trường nhà SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 15 Thiết kế chế tạo robot tự động điều hướng môi trường nhà PHỤ LỤC Code phần điều khiển #if (ARDUINO >= 100) #include #else #include #endif #include #include #include #include #include #include "robot_specs.h" #include #include //Motor Shield headers #include //#include //#include "utility/Adafruit_PWMServoDriver.h" #define encodPinA1 19 // encoder A pin #define encodPinB1 17 // encoder B pin #define encodPinA2 18 SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 16 Thiết kế chế tạo robot tự động điều hướng môi trường nhà #define encodPinB2 16 #define LOOPTIME #define SMOOTH 100 // PID loop time(ms) 10 #define sign(x) (x > 0) - (x < 0) // Create the motor shield object with the default I2C address //Adafruit_MotorShield AFMS = Adafruit_MotorShield(); //const int MPU_addr=0x68; // I2C address of the MPU-6050 //int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; // Select which 'port' M1, M2, M3 or M4 //Adafruit_DCMotor *motor1 = AFMS.getMotor(1); //Adafruit_DCMotor *motor2 = AFMS.getMotor(2); AF_DCMotor motor1(3); AF_DCMotor motor2(4); unsigned long lastMilli = 0; // loop timing unsigned long lastMilliPub = 0; double rpm_req1 = 0; double rpm_req2 = 0; double rpm_act1 = 0; double rpm_act2 = 0; double rpm_req1_smoothed = 0; double rpm_req2_smoothed = 0; int direction1 = FORWARD; int direction2 = FORWARD; SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 17 Thiết kế chế tạo robot tự động điều hướng môi trường nhà int prev_direction1 = RELEASE; int prev_direction2 = RELEASE; int PWM_val1 = 0; int PWM_val2 = 0; volatile long count1 = 0; // rev counter volatile long count2 = 0; long countAnt1 = 0; long countAnt2 = 0; float Kp = 0.5; float Kd = 0; float Ki = 0; ros::NodeHandle nh; void handle_cmd( const geometry_msgs::Twist& cmd_msg) { double x = cmd_msg.linear.x; double z = cmd_msg.angular.z; if (z == 0) { // go straight // convert m/s to rpm rpm_req1 = x*60/(pi*wheel_diameter); rpm_req2 = rpm_req1; } else if (x == 0) { // convert rad/s to rpm rpm_req2 = z*track_width*60/(wheel_diameter*pi*2); rpm_req1 = -rpm_req2; SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 18 Thiết kế chế tạo robot tự động điều hướng môi trường nhà } else { rpm_req1 = x*60/(pi*wheel_diameter)z*track_width*60/(wheel_diameter*pi*2); rpm_req2 = x*60/(pi*wheel_diameter)+z*track_width*60/(wheel_diameter*pi*2); } } ros::Subscriber sub("cmd_vel", handle_cmd); geometry_msgs::Vector3Stamped rpm_msg; ros::Publisher rpm_pub("rpm", &rpm_msg); //geometry_msgs ::Vector3 gyro_msg; //ros::Publisher gyro_pub("gyro", &gyro_msg); ros::Time current_time; ros::Time last_time; void setup() { // AFMS.begin(); // create with the default frequency 1.6KHz count1 = 0; count2 = 0; countAnt1 = 0; countAnt2 = 0; rpm_req1 = 0; rpm_req2 = 0; rpm_act1 = 0; rpm_act2 = 0; PWM_val1 = 0; PWM_val2 = 0; SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 19 Thiết kế chế tạo robot tự động điều hướng môi trường nhà nh.initNode(); nh.getHardware()->setBaud(57600); nh.subscribe(sub); nh.advertise(rpm_pub); //nh.advertise(gyro_pub); //mpu6050 // Wire.begin(); // Wire.beginTransmission(MPU_addr); // Wire.write(0x6B); // PWR_MGMT_1 register // Wire.write(0); // set to zero (wakes up the MPU-6050) // Wire.endTransmission(true); // pinMode(encodPinA1, INPUT); pinMode(encodPinB1, INPUT); digitalWrite(encodPinA1, HIGH); // turn on pullup resistor digitalWrite(encodPinB1, HIGH); attachInterrupt(4, encoder1, RISING); pinMode(encodPinA2, INPUT); pinMode(encodPinB2, INPUT); digitalWrite(encodPinA2, HIGH); // turn on pullup resistor digitalWrite(encodPinB2, HIGH); attachInterrupt(5, encoder2, RISING); /*motor1->setSpeed(0); motor2->setSpeed(0); motor1->run(FORWARD); motor1->run(RELEASE); SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 20 Thiết kế chế tạo robot tự động điều hướng môi trường nhà motor2->run(FORWARD); motor2->run(RELEASE);*/ motor1.setSpeed(0); motor2.setSpeed(0); motor1.run(FORWARD); motor1.run(RELEASE); motor2.run(FORWARD); motor2.run(RELEASE); } void loop() { nh.spinOnce(); unsigned long time = millis(); if(time-lastMilli>= LOOPTIME) { // enter tmed loop getMotorData(time-lastMilli); PWM_val1 = updatePid(1, PWM_val1, rpm_req1, rpm_act1); PWM_val2 = updatePid(2, PWM_val2, rpm_req2, rpm_act2); if(PWM_val1 > 0) direction1 = FORWARD; else if(PWM_val1 < 0) direction1 = BACKWARD; if (rpm_req1 == 0) direction1 = RELEASE; if(PWM_val2 > 0) direction2 = FORWARD; else if(PWM_val2 < 0) direction2 = BACKWARD; if (rpm_req2 == 0) direction2 = RELEASE; motor1.run(direction1); motor2.run(direction2); SVTH: Trần Lê Thanh Khoa Trần Quốc Hoàng GVHD: TS Võ Như Thành 21 Thiết kế chế tạo robot tự động điều hướng môi trường nhà motor1.setSpeed(abs(PWM_val1)); motor2.setSpeed(abs(PWM_val2)); publishRPM(time-lastMilli); lastMilli = time; } if(time-lastMilliPub >= LOOPTIME) { // publishRPM(time-lastMilliPub); lastMilliPub = time; } //Wire.beginTransmission(MPU_addr); // Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) // Wire.endTransmission(false); // Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers String AX = String(mpu6050.getAccX()); // GyX=Wire.read()