1. Trang chủ
  2. » Luận Văn - Báo Cáo

Điều khiển đồng bộ hệ thống robot thông minh vận chuyển hàng trong kho

118 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 118
Dung lượng 2,06 MB

Nội dung

Theo nhận định của bản thân tác giả, với sự phát triển không ngừng của công nghiệp hóa, hiện đại hóa thì ứng dụng robot vào việc vận chuyển hàng hóa trong kho là một lĩnh vực hay và cần được nghiên cứu chuyên sâu hơn nữa. Vì thời gian và khả năng có hạn nên luận văn không tránh khỏi thiếu sót và còn nhiều vấn đề cần hoàn thiện thêm. Kính mong quý Thầy Cô và các anh chị học viên cũng như quý bạn đọc thông cảm. Mong rằng với những ai yêu thích và quan tâm đến hướng nghiên cứu này có thể chia sẻ với tác giả để cùng nhau tiếp tục tìm hiểu, phát triển thêm nâng cao tính ứng dụng thực tế cho đề tài

BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM - oOo BÙI QUANG VƯƠNG ĐIỀU KHIỂN ĐỒNG BỘ HỆ THỐNG ROBOT THÔNG MINH VẬN CHUYỂN HÀNG TRONG KHO LUẬN VĂN THẠC SĨ KỸ THUẬT TP HCM 10 - 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM - oOo BÙI QUANG VƯƠNG ĐIỀU KHIỂN ĐỒNG BỘ HỆ THỐNG ROBOT THÔNG MINH VẬN CHUYỂN HÀNG TRONG KHO CHUYÊN NGÀNH: TỰ ĐỘNG HÓA MÃ SỐ: 605260 LUẬN VĂN THẠC SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: TS ĐẶNG XUÂN KIÊN TP HCM 10 - 2016 i LỜI CẢM ƠN Tôi xin chân thành cảm ơn quý thầy cô giảng viên Trường Đại học Giao thơng Vận tải thành phố Hồ Chí Minh giúp trang bị kiến thức, tạo môi trường thuận lợi suốt trình học tập thực luận văn Với lịng kính trọng biết ơn, xin gửi cảm ơn sâu sắc tới Tiến sĩ Đặng Xuân Kiên khuyến khích, hướng dẫn, giúp đỡ tận tình cho tơi suốt thời gian nghiên cứu Đề tài Tôi xin gửi lời tri ân sâu sắc đến gia đình người bạn, đồng nghiệp phòng Đào tạo, Viện Đào tạo Sau Đại học động viên, hỗ trợ trình học tập, làm việc hồn thành luận văn Theo nhận định thân tác giả, với phát triển khơng ngừng cơng nghiệp hóa, đại hóa ứng dụng robot vào việc vận chuyển hàng hóa kho lĩnh vực hay cần nghiên cứu chuyên sâu Vì thời gian khả có hạn nên luận văn khơng tránh khỏi thiếu sót cịn nhiều vấn đề cần hồn thiện thêm Kính mong q Thầy Cơ anh chị học viên quý bạn đọc thông cảm Mong với yêu thích quan tâm đến hướng nghiên cứu chia sẻ với tác giả để tiếp tục tìm hiểu, phát triển thêm nâng cao tính ứng dụng thực tế cho đề tài Tác giả xin chân thành cảm ơn! ii LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu tơi Các số liệu, kết luận văn thực chưa cơng bố cơng trình nghiên cứu khác Thành phố Hồ Chí Minh, ngày 22 tháng 10 năm 2016 Tác giả, Bùi Quang Vương iii MỤC LỤC LỜI CẢM ƠN i LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC BẢNG v DANH MỤC HÌNH vi CHƯƠNG I: TỔNG QUAN ĐỀ TÀI NGHIÊN CỨU .1 1.1 Đặt vấn đề 1.2 Các cơng trình nghiên cứu liên quan 1.2.1 Robot Kiva công ty Amazon 1.2.2 Robot (LGV) kho hàng nhà máy Vinamilk Việt Nam 1.3 Những báo tài liệu liên quan tới đề tài 1.3.1 Những nghiên cứu nước 1.3.2 Những nghiên cứu nước 1.4 Mục tiêu đề tài 1.5 Phạm vi nghiên cứu đề tài 1.6 Bố cục luận văn CHƯƠNG II : CƠ SỞ LÝ THUYẾT ĐIỀU KHIỂN LIÊN QUAN 2.1 Phương pháp điều khiển PID 2.1.1 Giới thiệu điều khiển PID 2.1.2 Rời rạc hóa điều khiển PID 10 2.2 Bài tốn tìm đường ngắn 11 2.2.1 Các khái niệm đồ thị 12 2.2.2 Đường ngắn xuất phát từ đỉnh 13 2.2.3 Đường đồ thị khơng có chu trình 13 2.2.4 Thuật toán Floyd-Warshall 15 2.2.5 Thuật toán Dijkstra 16 CHƯƠNG III: MƠ HÌNH HĨA ĐIỀU KHIỂN ĐỒNG BỘ HỆ THỐNG ROBOT THÔNG MINH .20 3.1 Mơ hình hóa điều khiển PID 20 iv 3.1.1 vạch 3.1.2 Thiết kế điều khiển PID điều khiển robot di chuyển theo 20 Điều chỉnh tham số điều khiển PID 21 3.2 Mơ hình hóa thuật tốn điều khiển robot 28 3.2.1 Mô hình hóa thuật tốn Dijkstra 28 3.2.2 Chương trình trung tâm điều khiển robot 31 CHƯƠNG IV: ĐÁP ỨNG MƠ HÌNH THỰC ĐIỀU KHIỂN ĐỒNG BỘ HỆ THỐNG ROBOT THÔNG MINH .52 4.1 Sơ đồ khối mơ hình khí cần thi cơng 52 4.2 Tổng quan thiết bị phần cứng 53 4.2.1 Motor điều khiển 53 4.2.2 Vi điều khiển 54 4.2.3 Các loại cảm biến 55 4.2.4 Nguồn cấp điều khiển 56 4.2.5 Sơ đồ đường vạch kho 57 4.3 Mơ hình thực tế sau thiết kế thành công 58 4.4 Nhận xét 60 CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 61 5.1 Kết luận 61 5.2 Hướng phát triển đề tài 61 TÀI LIỆU THAM KHẢO 62 PHỤ LỤC 63 v DANH MỤC BẢNG Bảng 2-1: Kết tính tốn thu chạy thơ 19 Bảng 3-1: Lựa chọn phương pháp điều chỉnh 22 Bảng 3-2: Tác động việc tăng thông số độc lập 23 Bảng 3-3: Phương pháp Ziegler–Nichols 23 Bảng 3-4: Tính tốn thơng số điều khiển 25 Bảng 3-5: Thông số điều khiển theo thực nghiệm 27 Bảng 4-1: Thông số kỹ thuật vi điều khiển 54 Bảng 4-2: Thông số kỹ thuật cảm biến SRF05 56 vi DANH MỤC HÌNH Hình 1.1 Robot Kiva kho hàng công ty Amazon .2 Hình 1.2 Robot (LGV) công ty sữa Vinamilk Việt Nam Hình 2.1 Sơ đồ hệ thống điều khiển dùng PID Hình 2.2 Đồ thị PV theo thời gian, ba giá trị Kp (Ki Kd số) .7 Hình 2.3 Đồ thị PV theo thời gian, ứng với giá trị Ki (Kp, Kd khơng đổi) .8 Hình 2.4 Đồ thị PV theo thời gian, với giá trị Kd (Kp, Ki khơng đổi) .9 Hình 2.5 Đồ thị sau chạy thô 19 Hình 3.1 Sơ đồ cấu trúc điều khiển 20 Hình 3.2 Sơ đồ cấu trúc điều khiển robot 21 Hình 3.3 Xác định tham số cho mơ hình xấp xỉ bậc có trễ 24 Hình 3.4 Mơ hình điều khiển với Kgh 27 Hình 3.5 Quỹ đạo robot trước sau hiệu chỉnh tham số điều khiển 27 Hình 3.6 Lưu đồ chương trình PID 28 Hình 3.7 Lưu đồ thuật toán Dijkstra 29 Hình 3.8 Kho hàng cơng ty Vinasai Bình Dương 31 Hình 3.9 Sơ đồ vạch đường Robot kho 32 Hình 3.10 Hiển thị kết đường tối ưu từ trạm tới trạm .51 Hình 3.11 Hiển thị kết đường ngắn từ trạm tới trạm 51 Hình 4.1 Sơ đồ khối hệ thống 52 Hình 4.2 Sơ đồ khối robot .52 Hình 4.3 Sơ đồ hệ thống điều khiển 53 Hình 4.4 Động điều khiển 53 Hình 4.5 Vi điều khiển 54 Hình 4.6 Cảm biến dò đường vạch .55 Hình 4.7 Cảm biến siêu âm SRF05 .55 Hình 4.8: Pin nguồn 56 Hình 4.9: Mạch ổn áp nguồn LM2596S 56 Hình 4.10 Sơ đồ đường vạch kho hàng 57 vii Hình 4.11 Mặt robot thực tế 58 Hình 4.12 Mặt Robot thực tế 58 Hình 4.13 Bộ điều khiển trung tâm 59 Hình 4.14 Robot sơ đồ kho .59 1 CHƯƠNG I: TỔNG QUAN ĐỀ TÀI NGHIÊN CỨU 1.1 Đặt vấn đề Hiện công nghiệp từ bước đại hóa, lượng sản phẩm sản xuất nhiều, nên kho hàng gia tăng ngày có diện tích lớn dần Hàng xuất nhập liên tục, việc sử dụng xe nâng băng chuyền để vận chuyển dần không đáp ứng nhu cầu thực tế Địi hỏi tất cơng đoạn dây chuyền sản xuất phải tối ưu hóa đến mức cao Để tăng suất lao động cần nghiên cứu chế tạo robot thay người số công việc sản xuất Sử dụng Robot vận chuyển hàng hóa kho hàng cách tốt để đảm bảo hàng hóa vận chuyển thơng suốt, nhanh chóng, đảm bảo an tồn giảm thiểu tối đa cảm tính chủ quan, robot làm việc 24/24 tối ưu thời gian vận chuyển Robot gom hàng từ tất vị trí lập trình sẵn, bao qt tồn nhà xưởng, điều cơng nhân khó đảm nhiệm diện tích nhà xưởng rộng Robot vận chuyển khối lượng hàng hóa lớn hơn, cơng nhân cuối cơng đoạn cần nhấn nút điều khiển việc lại hoàn toàn tự động Sử dụng robot vận chuyển hàng giúp dễ dàng giám sát, quản lý, nâng cao suất công việc, giảm thiểu số lượng nhân cơng làm việc nặng nhọc, đưa lại lợi ích kinh tế cao cho doanh nghiệp Vì vậy, để đáp ứng nhu cầu mang tính thực tiễn cao nên chọn đề tài “Điều khiển đồng hệ thống robot thông minh vận chuyển hàng kho” 1.2 Các cơng trình nghiên cứu liên quan 1.2.1 Robot Kiva công ty Amazon Hiện Robot Kiva thiết lập để hoạt động 10 cụm kho hàng Amazon tiểu bang California, Texas, New Jersey, Washington Florida, điều cho phép họ cung cấp hàng triệu mặt hàng ngày cho khách hàng Để hình dung, cần biết riêng Amazon nhận lượng đơn đặt hàng lên đến 36,8 triệu đơn vị toàn cầu Tính trung bình giây Amazon phải giao nhận 426 sản phẩm lúc Bởi việc áp dụng Robot số khâu giao nhận hàng giúp Amazon tăng hiệu suất công việc lên đáng kể 95 ,{0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,}//10 ,{0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,}//11 ,{0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,}//12 ,{0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,}//13 ,{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,}//14 ,{0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,}//15 ,{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,}//16 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,}//17 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,}//18 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,}//19 ,{0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,}//20 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,}//21 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,}//22 ,{0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,}//23 ,{0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,}//24 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,}//25 ,{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,}//26 ,{0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,}//27 }; int Len[28]; int S[28]; int P[28]; int a = 6; int b = 1; int sum = 200; int j; int i; int D = 0; int k; 96 int h,n; int bienx,bieny; int cogoc = 0; int biengoc = 0; int tongdiem = 0; int sodiemkq = 0; int solanqueo[30]; int kq = 99; int kqvt[100]; int bando[7][7] = {{99,99,0,99,1,99}, {99,8,9,10,11,99}, {7,12,13,14,15,2}, {99,16,17,18,19,99}, {6,20,21,22,23,3}, {99,24,25,26,27,99}, {99,5,99,99,4,99}}; int huong ; int chieu ; // 1= i ++, = i , = j++, = j-int goc = 0; int x,xs,y,ys; int diem[100] ;//{6,20,21,17,13,9,0} ; int en = 0; int kqvt[100]; void timvitri (int P); void timhuong (void); void dieuhuong (void); void timsogoc (void); void chieuhuongbatdau (void); void chuongtrinhchay (void); 97 /* * User Function */ //********************************************************** // The System Variables //*********************************************************** // Main Function //*********************************************************** void timsogoc (void){ for (k = tongdiem;k >= ;k ){ } } void dieuhuong(void){ switch (huong) { case 1: if (chieu == 1) { break; } if (chieu == 3) { solanqueo[h] ++; huong = 3; cogoc = 1; break; } if (chieu == 4) { solanqueo[h] ++; huong = 4; cogoc = 1; break; 98 } case 2: if (chieu == 2) { break; } if (chieu == 3) { solanqueo[h] ++; huong = 4; cogoc = 1; break; } if (chieu == 4) { solanqueo[h] ++; huong = 4; cogoc = 1; break; } case 3: if (chieu == 3) { break; } if (chieu == 1) { solanqueo[h] ++; huong = 1; cogoc = 1; break; } if (chieu == 2) { solanqueo[h] ++; 99 huong = 2; cogoc = 1; break; } case 4: if (chieu == 4) { break; } if (chieu == 1) { solanqueo[h] ++; huong = 1; cogoc = 1; break; } if (chieu == 2) { solanqueo[h] ++; huong = 2; cogoc = 1; break; } } } void timhuong (void){ timvitri(diem[n]); x = bienx ; y = bieny ; timvitri(diem[n-1]); xs = bienx ; ys = bieny ; 100 if (xs - x == 0){ if (ys-y == -1) { chieu = 4; } if(ys - y == 1){ chieu = 3; }}else{ if(xs-x == 1){ chieu = 1; } if (xs-x == -1){ chieu = 2; } } } void timvitri (int P){ for(i = 6;i>=0;i ){ for(j = 0;j= ;en ) { kqvt[en] = diem[en]; } 102 } tongdiem = 0; } UARTprintf( "Length of %d to %d is %d\n", a ,b , Len[b]); UARTprintf("\n so lan queo = %d \n ",kq ); UARTprintf("nhung diem can di " ); for(en = sodiemkq; en >= ;en ) { UARTprintf(" - %d - ",kqvt[en] ); } UARTprintf("\n " ); } //****************************************************************** // The Interrupt Vector //***************************************************************** // Vector Timer void Timer0IntHandler(void) { ROM_TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); } // Vector Timer void Timer1IntHandler(void) { ROM_TimerIntClear(TIMER1_BASE, TIMER_TIMA_TIMEOUT); //while (UARTBusy(UART1_BASE)); } // Vector Timer void Timer2IntHandler(void) { ROM_TimerIntClear(TIMER2_BASE, TIMER_TIMA_TIMEOUT); } 103 void Timer3IntHandler(void) { ROM_TimerIntClear(TIMER3_BASE, TIMER_TIMA_TIMEOUT); } void Timer4IntHandler(void) { ROM_TimerIntClear(TIMER4_BASE, TIMER_TIMA_TIMEOUT); } void Timer5IntHandler(void) { ROM_TimerIntClear(TIMER5_BASE, TIMER_TIMA_TIMEOUT); } void SysTickIntHandler(void) { GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, ~GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_2)); } // Vector UART1 void UART1IntHandler(void) { UARTprintf(" %c\n", UARTCharGet(UART1_BASE)); if (UARTCharGet(UART1_BASE) == 117) { } SysCtlDelay(SysCtlClockGet() / 100); UARTIntClear(UART1_BASE, UART_INT_RX); } // Vector PORT F void PortFIntHandler(void) { uint32_t PortFmask = GPIOIntStatus(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_4); SysCtlDelay(SysCtlClockGet() / 1000); if (PortFmask & GPIO_PIN_0) { ////////////////////////////////////////////////////////////////// SysCtlDelay(SysCtlClockGet() / 1000); 104 if (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_0) == 0) { } ////////////////////////////////////////////////////////////// SysCtlDelay(SysCtlClockGet() / 1000); GPIOIntClear(GPIO_PORTF_BASE, GPIO_PIN_0); } if (PortFmask & GPIO_PIN_4) { //////////////////////////////////////////////////////////////////// SysCtlDelay(SysCtlClockGet() / 1000); if (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0) { for (k = 0;k thoat if (i >= 28) { SysCtlDelay(SysCtlClockGet() / 100000); UARTprintf("\n Ko co duong di!"); // printf("done dijkstra\n"); 106 break; } for (j = 0; j < 28; j++) { // tim diem co vi tri ma dai la if (!S[j] && Len[i] > Len[j]) { i = j; } } S[i] = 1; // cho i vao danh sach xet roi // S1[i] = 1; for ( j = 0; j < 28; j++) { // tinh lai dai cua cac diem chua xet if (!S[j] && Len[i] + matrit[i][j] < Len[j]) { Len[j] = Len[i] + matrit[i][j]; P[j] = i; // thay doi len // danh dau diem truoc no matrit[i][j] = 2; } } } if (Len[b] > && Len[b] < sum) { int j = 0; diem[j] = b; j ++; while (i!= a) { i = P[i]; diem[j] = i; SysCtlDelay(SysCtlClockGet() / 100000); j ++; tongdiem ++; } } 107 } void SendATCommand(char *cmd) { while (UARTBusy(UART1_BASE)); while (*cmd != '\0') { UARTCharPut(UART1_BASE, *cmd++); } UARTCharPut(UART1_BASE, '\r'); //CR UARTCharPut(UART1_BASE, '\n'); //LF } void chonhuon1(void) { // chuong trinh tim duong di if (dau[0] < cuoi[0]) { if (mang[dau[0] + 1][dau[1]] == 1) { buoc = buoc + 1; nho[0] = dau[0] + 1; nho[1] = dau[1]; UARTprintf(" thang %d ", mang[nho[0]][nho[1]]); } else { if (mang[dau[0]][dau[1] + 1] == 1) { buoc = buoc + 1; nho[0] = dau[0]; nho[1] = dau[1] + 1; UARTprintf(" phai %d ", mang[nho[0]][nho[1]]); } } } } void chonduongdi(void) { if (nho[0] < cuoi[0]) { 108 a = 1; } else { a = -1; } if (nho[1] < cuoi[1]) { b = 1; } else { b = -1; } if (nho[0] != cuoi[0]) { if (mang[nho[0] + 1*a][nho[1]] == 1) { buoc = buoc + 1; nho[0] = nho[0] + * a; nho[1] = nho[1]; UARTprintf(" thang %d \n ", mang[nho[0]][nho[1]]); } else { if (mang[nho[0]][nho[1] + 1*b] == 1) { buoc = buoc + 1; nho[0] = nho[0]; nho[1] = nho[1] + * b; UARTprintf(" phai %d \n", b); } } } else { if (nho[1] != cuoi[1]) { if (mang[nho[0]][nho[1] + 1*b] == 1) { buoc = buoc + 1; nho[0] = nho[0]; 109 nho[1] = nho[1] + * b; UARTprintf(" phai %d ",b); } } } mang[nho[0]][nho[1]] = 2; } * System Function Details void chieuhuongbatdau (void){ if(a == || a == 1) { chieu = 1; huong = ; } if(a == || a ==3) { chieu = 1; huong = ; } if(a == || a == 5) { chieu = 1; huong = ; } if(a == || a ==7) { chieu = 1; huong = ; } }

Ngày đăng: 22/12/2023, 00:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w