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

giải thuật tìm đường đi ngắn nhất ứng dụng gps trong giao thông

78 476 1

Đ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 78
Dung lượng 4,88 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ HOÀNG HẢI SƠN GIẢI THUẬT TÌM ĐƯỜNG ĐI NGẮN NHẤT ỨNG DỤNG GPS TRONG GIAO THÔNG NGÀNH: KỸ THUẬT ĐIỆN TỬ - 605270 S KC 0 Tp Hồ Chí Minh, tháng 10 năm 2013 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ HOÀNG HẢI SƠN GIẢI THUẬT TÌM ĐƯỜNG ĐI NGẮN NHẤT ỨNG DỤNG GPS TRONG GIAO THÔNG NGÀNH: KỸ THUẬT ĐIỆN TỬ MÃ NGÀNH: 605270 Tp Hồ Chí Minh, tháng 10/2013 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ HOÀNG HẢI SƠN GIẢI THUẬT TÌM ĐƯỜNG ĐI NGẮN NHẤT ỨNG DỤNG GPS TRONG GIAO THÔNG NGÀNH: KỸ THUẬT ĐIỆN TỬ MÃ NGÀNH: 605270 Hướng dẫn khoa học: TS VÕ TƯỜNG QUÂN Tp Hồ Chí Minh, tháng 10/2013 LÝ LỊCH KHOA HỌC I LÝ LỊCH SƠ LƢỢC Họ & tên: Hoàng Hải Sơn Giới tính: Nam Ngày, tháng, năm sinh: 05/05/1985 Nơi sinh: Hà Nội Quê quán: Hà Tây Dân tộc: Kinh Chức vụ, đơn vị công tác trước học tập, nghiên cứu: Giảng viên, Trường Đại Học Nguyễn Tất Thành Chỗ riêng địa liên lạc: 44/14, Đ HT45, P.Hiệp Thành, Q.12, TPHCM Điện thoại quan: 0836022532 Điện thoại nhà riêng: 0906387475 Fax: E-mail: hson012003@yahoo.com II QUÁ TRÌNH ĐÀO TẠO Cao đẳng: Đại học: Hệ đào tạo: Chính quy; Thời gian đào tạo từ 08/2003 đến 05/2008 Nơi học (trường, thành phố): Đại Học Sư Phạm Kỹ Thuật TP.HCM Ngành học: Kỹ thuật điện - điện tử Tên đồ án, luận án môn thi tốt nghiệp: Sổ tay điện tử Ngày & nơi bảo vệ đồ án, luận án thi tốt nghiệp: 03/2008 trường ĐH Sư Phạm Kỹ Thuật TP.HCM Người hướng dẫn: ThS Nguyễn Việt Hùng Thạc sĩ: Hệ đào tạo: Chính quy; Thời gian đào tạo từ 03/2010 đến 10/2013 Nơi học (trường, thành phố): Đại học Sư phạm Kỹ thuật Tp.HCM Ngành học: Kỹ thuật điện tử Tên luận văn: Giải Thuật tìm đường ngắn ngất ứng dụng GPS giao thông i Ngày & nơi bảo vệ luận văn: Tháng 10 năm 2013 Đại học Sư phạm Kỹ thuật Tp.HCM Người hướng dẫn: TS Võ Tường Quân Trình độ ngoại ngữ : Tiếng Anh-mức độ: B1 Học vị, học hàm, chức vụ kỹ thuật đƣợc thức cấp; số bằng, ngày & nơi cấp: Bằng Kỹ sư Điện - Điện tử, Trường Đại Học Sư Phạm Kỹ Thuật TPHCM III QUÁ TRÌNH CÔNG TÁC CHUYÊN MÔN KỂ TỪ KHI TỐT NGHIỆP ĐẠI HỌC Thời gian 05/2008 – Nơi công tác Công việc đảm nhiệm Trường Đại học Nguyễn Tất Giảng viên, Khoa Điện-Điện tử Thành ii CHÂN THÀNH CẢM TẠ Tác giả xin gửi lời tri ân chân thành đến: - Ban Giám Hiệu, Khoa Điện – Điện tử, Phòng ban liên quan thuộc Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh tạo điều kiện học tập nghiên cứu tốt cho toàn thể Học viên - Toàn thể Cán giảng dạy truyền đạt kiến thức trang bị cho Học viên nhiều kỹ làm việc quý giá - Ban Giám Hiệu, Khoa Điện-Điện tử Trường Đại Học Nguyễn Tất Thành tạo điều kiện tốt giúp thân hoàn thành khóa học - Tiến sĩ Võ Tường Quân – Giảng viên Khoa Cơ khí trường Đại Học Bách Khoa Thành phố Hồ Chí Minh tận tâm trình truyền đạt hướng dẫn sâu rộng nhiệt tình, đầy trách nhiệm suốt thời gian thực thi Luận văn tốt nghiệp - Tất người thân yêu Gia đình, thân hữu gần xa động viên tinh thần, giúp đỡ mặt suốt hai năm học tập nghiên cứu - Tất bạn Học viên khóa có nhiều ý kiến đóng góp lúc, kịp thời giúp Luận văn hoàn thành Trân trọng Thành phố Hồ Chí Minh, tháng 10/2013 Học viên thực Hoàng Hải Sơn iii LỜI CAM ĐOAN Tôi xin cam đoan công trình nghiên cứu Các số liệu, kết nêu luận văn trung thực chưa công bố công trình khác Tp Hồ Chí Minh, ngày …tháng … năm 2013 ( Ký tên ghi rõ họ tên ) Hoàng Hải Sơn iv TÓM TẮT LUẬN VĂN  Luận văn nghiên cứu GPS điều khiển Robot chạy theo đường cho trước thông qua đồ Google Map (Earth) Tín hiệu GPS từ vệ tinh Modun GPS thu nhận đưa vào máy tính xử lí Phần mềm viết lấy kinh độ vĩ độ trí ta đứng Tín hiệu đưa lên đồ Google để xác định vị trí đồ Thông qua đồ Google Map (Earth) ta tìm vẽ đường ngắn từ vị trí ta đứng tới vị trí ta muốn di chuyển tới Đường băm nhỏ thành tọa độ đưa Vi điều khiển PIC điều khiển Robot chạy theo lộ trình (Kết hợp với cảm biến la bàn CMPS 03) Trong qua trình di chuyển Robot, chạy tới điểm Vi điều khiển so sánh tọa độ (lấy từ GPS) với tọa độ mong muốn (lấy từ đồ Google) Nếu trùng di chuyển tới điểm tiếp theo, không trùng Robot tự chạy dò trùng tọa độ mong muốn Robot chạy qua điểm cuối tới điểm đích theo yêu cầu đưa Robot ứng dụng việc di chuyển tự động tương lai sau Tác giả Hoàng Hải Sơn v ABSTRACT  The thesis research on GPS and controllers for robot path before running through the map Google Map (Earth) GPS signals from the GPS satellite receiver module to receive and put into the computer processor Software was written to get the longitude and latitude in the position we are standing This signal will be taken to Google maps to locate on the map Through the map Google Map (Earth) and we find the shortest path is drawn from one position to the standing position we want to move to This path will be shredded into the given coordinates and PIC microcontroller and robot control run according to schedule (Combined with compass sensor CMPS 03) In the process of moving the robot, while running to the next point, the microcontroller will compare current coordinates (from GPS) to the desired coordinates (taken from Google maps) If the insect is moving to the next point, if not identical, the robot will automatically run duplicate detection until the desired coordinates Robot on the run over the final point and destination to satisfy the requirements given Robot applications in the automatic transfer of the latter in the future Author Hoang Hai Son vi DANH SÁCH CÁC HÌNH VẼ HÌNH TRANG Hình 1.1 Chùm vệ tinh GPS Hình 1.2 Các thành phần GPS Hình 1.3 Sơ đồ hoạt động hệ thống GPS Tracking 13 Hình 1.41 Sơ đồ khối luận văn 15 Hình 2.1 Sơ đồ chân Vi điều khiển 16F887 18 Hình 2.2 Các thành phần hệ thống GPS 19 Hình 2.3 Chòm vệ tinh GPS 20 Hình Sơ đồ vi ̣trí các tra ̣m điề u khiể n 21 Hình 2.5 Tổ ng quan bô ̣ phâ ̣n điề u khiể n 22 Hình 2.6 Bộ phận sử dụng 24 Hình 2.7 Nguyên tắc định vị từ vệ tinh 25 Hình 2.8 Nguyên tắc định vị từ vệ tinh 25 Hình 3.1 Sơ đồ chân cảm biến la bàn 26 Hình 3.2 Modun GPS EM - 410 32 Hình 3.3 Sơ đồ chân Module GPS 33 Hình 3.4 Sơ đồ nguyên lí mạch công suất dùng L298 35 Hình 3.5 Khối điều khiển trung tâm dùng PIC 16F887 36 Hình 3.6 Sơ đồ nguyên lí hình mạch FT RS232 37 Hình 3.7 Màn hình LCD 16x2 37 Hình 3.8 Mô hình tổng quát hệ thống 40 Hình 3.9 Lưu đồ hệ thống 41 Hình 3.10 Giao diện phần mềm nhận tín hiệu từ GPS 42 Hình 3.11 Thuật toán Dijkstra……………………………………………….44 xii Giải thuật tìm đường ngắn GPS ứng dụng giao thông 4.2.2 Cập nhật hiển thị tọa độ GPS Nhận liệu từ GPS Module Check Load liệu N Y Up file tọa độ Chờ 1s Hình 4.4: Lưu đồ cập nhật hiển thị GPS  Cứ sau thời gian 1s tọa độ điểm cập nhật hiển thị lên đồ  Nếu tín hiệu GPS bị tức thời phần mềm hiển thị tọa độ điểm cũ trước 4.2.3 Nội dung gói tin gửi nhận (Protocol) Magic Word byte Len byte Command Data LRC byte Max = 20 byte Hình 4.5: Nội dung gói tin byte  Magic word: Nhận dạng gói tin giao tiếp (Chọn 0xFFAA)  Len: Độ dài Byte cần lấy Độ dài độ dài toàn gói gửi (nhận)  Command: Lệnh truyền hay nhận  Data: Dữ liệu 16 Byte bao gồm điểm tọa độ Byte đầu tiên: Tọa độ điểm đầu (4 Byte kinh độ Byte vĩ độ) byte thứ 2: Tọa độ điểm (4 Byte kinh độ Byte vĩ độ)  LRC: Check liệu 4.3 LẬP TRÌNH ĐIỀU KHIỂN ROBOT GVHD: TS Võ Tƣờng Quân Trang 53 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông Các bước xử lí tín hiệu từ Laptop (PC) gửi xuống PIC điều khiển Robot Laptop UART PIC E(xe,ye) End Y Y D(xd,yd) Y α2 C(xc,yc) α β B(xb,yb) O β A(xa,ya) O Robot Start α γ X O α1 Y X X α1 = β - α α = γ – α2 X Hình 4.6: Lưu đồ điều khiển Robot  Bước 1: Máy tính xử lí tọa độ thành nhiều điểm chuyển thành file txt Dữ liệu dạng float (Do tín hiệu tọa độ ta lấy 10 số lẻ) Kinh độ vĩ độ lưu trữ truyền xuống tín hiệu tốn Byte Do tọa độ điểm ta truyền xuống A(xA,yA) tốn dung lượng Byte  Bước 2: Một lần máy tính truyền xuống điểm PIC lưu trữ vào đệm 16 Byte Robot kết hợp với la bàn định hướng để chạy từ A tới B  Bước 3: Khi tới B trùng với tọa độ GPS đưa Robot ngừng lại máy tính lại gửi tiếp điểm C Robot tương tự lại chạy từ B tới C Cứ Robot chạy tới điểm cuối theo yêu cầu GVHD: TS Võ Tƣờng Quân Trang 54 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông CHƢƠNG 5: KẾT LUẬN 5.1 Kết đạt đƣợc 5.1.1 Tìm đƣờng ngắn truyền tín hiệu xuống Robot Hình 5.1: Giao diện tìm đường ngắn phân thành nhiều điểm Hình 5.2: Giao diện truyền liệu xuống vi điều khiển GVHD: TS Võ Tƣờng Quân Trang 55 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông 5.1.2 Thử nghiệm Robot đƣờng thực tế Hình 5.3: Hình ảnh Robot di chuyển bám theo tọa độ Hình 5.4: Đường Robot GVHD: TS Võ Tƣờng Quân Trang 56 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông 5.2 Các vấn đề tồn  Sai số Module GPS thời tiết không tốt lớn (Có thể lên tới 10m) gây khó khăn việc Robot di chuyển  Phụ thuộc vào đồ Google map nên phải dùng Online, mạng Internet không dùng  Cần phải có máy tính xử lí tín hiệu truyền cho Vi điều khiển  Hệ thống khí thiết kế chưa tốt nên Robot hoạt động chưa hoàn toàn theo ý muốn (khi di chuyển robot không thẳng mà dao động quanh vị trí mong muốn) 5.3 Hƣớng phát triển đề tài  Điều khiển Robot từ xa dùng module RF  Dùng Module Sim (GPRS) để lấy tín hiệu Internet giúp cho phần cứng gọn nhẹ  Lưu lại lộ trình đường giám sát cho thiết bị  Chế tạo phương tiện giao thông tự động tương lai gần GVHD: TS Võ Tƣờng Quân Trang 57 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông PHỤ LỤC Code điều khiển động #include #include float kp, ki, kd, a0, a1, a2; signed int16 encoder0=0, encoder1=0, encoder2=0; int16 a4speed_PID=0, v_real=0, v_set=50; int16 speed=0, encoder=0, count=0; void init_systems(void) { // SEGMENT LCD lcd_init(); // PWM setup_timer_2(T2_DIV_BY_1,100,4); // f=5kHz; mode=4; period=100 setup_ccp1(CCP_PWM); set_pwm1_duty(0); // TIMER0 setup_timer_0 (RTCC_EXT_L_TO_H); // dem xung canh len tai chan RA4 set_timer0(0); // TIMER1 setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 );// t=100ms set_timer1(40535); // INTERRRUPTS enable_interrupts(INT_TIMER0); enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); } void PID_velocity (unsigned int16 set_velocity) { encoder0=set_velocity-v_real;//45 speed_PID= speed_PID+ a0*encoder0 + a1*encoder1 + a2*encoder2;//45.5 encoder2 = encoder1;//0 encoder1 = encoder0;//0 speed = speed_PID/50+15;//50 GVHD: TS Võ Tƣờng Quân Trang 58 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông if(speed80) speed=80; } #INT_RTCC void interrupts_T0(void) { count++ } #INT_TIMER1 void interrupts_T1(void) { v_real=0; encoder=0; encoder=get_timer0()+count*255; set_timer0(0); v_real=encoder; PID_velocity(v_set); } void run_motor(int8 value_PWM) { // 0-100 = -100% output_high(pin_d7); set_pwm1_duty(value_PWM); } void display_encoder(int16 n) { int8 a=0, b=0, c=0, d=0; if(n>=2000) display_NegNegNeg(); else { a=n/1000; b=(n%1000)/100; c=((n%1000)%100)/10; d=((n%1000)%100)%10; if(a==1) display_digit4(); display_digit3(b); display_digit2(c); display_digit1(d); } } void init_PID (void) { #define T0 0.1 GVHD: TS Võ Tƣờng Quân Trang 59 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông kp=40; kd=0.1; ki=0.1; a0 = kp + ki*T0/2.0 + kd/T0;//1 a1 = -kp + ki*T0/2.0 - 2*kd/T0;//-1 a2 = kd/T0;//0 } void main() { init_systems(); init_PID(); while(true) { display_encoder(speed); run_motor(speed); delay_ms(100); } } Code la bàn hiển thị LCD #include #include #define CMP_ADDR_LOW #define CMP_ADDR_HI 0xC0 // Factory supplied default address 0xC1 #define PC_TX PIN_D2 #define CLK PIN_C3 #define DATA PIN_C4 #define REG #define LCD_POWER PIN_D7 #define MOTOR1 PIN_B0 #define MOTOR2 PIN_B1 #define MOTOR1_PWM PIN_C1 #define MOTOR2_PWM PIN_C2 long bearing; #BYTE high_byte = bearing GVHD: TS Võ Tƣờng Quân Trang 60 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông #BYTE low_byte = bearing + #fuses HS,NOWDT,NOPROTECT,NOLVP #use Delay(Clock=20000000) #use rs232(baud=9600, xmit=PC_TX,stream=PC) //TX line to level converter and PC #use i2c(master, SCL=CLK, SDA=DATA) #include "flex_lcd.c" void get_cmps03(void); void BCD3(unsigned short z) { unsigned char tram, chuc, dvi; tram=z/100; chuc=(z%100)/10; dvi=(z%100)%10; tram=tram + 0x30; chuc=chuc + 0x30; dvi=dvi + 0x30; lcd_gotoxy(1,2); lcd_putc(tram); lcd_gotoxy(4,2); lcd_putc(chuc); lcd_gotoxy(8,2); lcd_putc(dvi); } void main(void) { output_high(LCD_POWER); // Turn on power to LCD output_low(LCD_RW); lcd_init(); // Set R/W pin on LCD to a low level // Initialize the LCD //setup_ccp1 (CCP_PWM); //setup_ccp2 (CCP_PWM); //setup_timer_2 (T2_DIV_BY_16,127,1); lcd_gotoxy(1,1); lcd_putc("DH SPKT D-DT"); lcd_gotoxy(1,2); GVHD: TS Võ Tƣờng Quân Trang 61 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông while(1) { get_cmps03(); // fprintf(PC,"Bearing: %Lu \n\r",bearing); delay_ms(500); } } void get_cmps03() { unsigned char high_byte,low_byte; unsigned short u16_value; #if i2c_start(); i2c_write( 0xC0); // The address of the compass (READ LOW) i2c_write( 0x00); // Command (read 360 degrees) i2c_start(); // Restart to change data dir i2c_write( 0xC1 ); // The address of the compass (READ HIGH) high_byte=I2C_READ(); low_byte=I2C_READ(); u16_value = ((unsigned short)(high_byte)) 2) && (u08_rcv_len >= gst_rcv_buff[u08_buff_rcv_id].u08_len)) { /* Kiem tra LRC */ u08_lrc = 0; for (i = 0; i < u08_rcv_len; i++) { u08_lrc += pu08_data[i]; } u08_lrc = ~u08_lrc + 1; if (u08_lrc == 0) { u16_count ++; if(u16_count >= 0xFFFE) u16_count = 0; gu08_flag = 1; /* Dua frame nhan duoc chinh thuc vao buffer */ // gst_rcv_buff[u08_buff_rcv_id].u08_len = u08_rcv_len; // printf("\n\r Data dung "); } else{; // putc(0xCC); GVHD: TS Võ Tƣờng Quân Trang 64 HVTH: Hoàng Hải Sơn Giải thuật tìm đường ngắn GPS ứng dụng giao thông // printf("\n\r sai LRC %d",u08_lrc); } /* Ket thuc nhan frame */ u08_buff_rcv_id = 0xFF; u08_rcv_len = 0; u08_rcv_status = 0; } } #endif /** convert byte array (of size 4) to float * @param test * @return */ float byteArrayToFloat(byte test[]) { int bits = 0; int i = 0; unsigned char shifter ; unsigned char MASK = 0xff; for (shifter = 3; shifter >= 0; shifter ) { bits |= ((int) test[i] & MASK)

Ngày đăng: 10/10/2016, 02:12

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w