Trong quá trình phát triển nhanh chóng và toàn diện của khoa học và công nghệ, máy móc càng ngày càng trở nên thông minh hơn và được sử dụng nhiều hơn để phục vụ cho con người về nhiều mặt, quân sự cũng như dân sự. Những hệ thống cơ giới được sử dụng hiện nay được tự động hóa không ngừng để tạo nên sự thuận tiện cho con người cũng như cải tiến khả năng hoạt động của hệ thống. Ví dụ như xe hơi được lập trình để chạy tự động theo bản đồ, máy bay quân sự không người lái, robot tự hành hoạt động trong những môi trường độc hại, các tàu lặn tự hành dùng để khảo sát địa hình ứng dụng trong ngành dầu lửa…và rất nhiều những ứng dụng cơ giới khác có thể hoạt động ở chế độ tự động. Và nền tảng cho những ứng dụng cơ giới tự động đó chính là khả năng tự định vị. Ngày xưa, khi con người muốn đi qua một khu vực nào đó mới như là rừng hay là sa mạc họ phải để lại dấu vết như là đánh dấu lên đường, bẻ một cành cây để xác định vị trí của mình đã đi qua. Tuy nhiên, sau này khi đi biển thì để xác định vị trí của mình họ không thể dựa vào các vật được đánh dấu, họ dựa vào thiên văn các vì sao trên trời, sử dụng la bàn để xác định phương hướng và các độ lệch của các vì sao như thế họ sẽ định vị được vị trí của họ trên biển. Tuy nhiên, những phương pháp này có độ chính xác không cao và phụ thuộc rất nhiều vào thời tiết Ngoài ra trên Google map những địa hình khá hiểm trở mà con người chưa tạo nên được lộ trình đường đi cụ thể hay một bản đồ chi tiết như sa mạc, không gian trên biển…để dễ dàng di chuyển theo lộ trình trên Google map. Khi một động cơ di chuyển trên lộ trình đường đi có sẵn trên Google map, cơ cấu nhiều lựa chọn của đường đi khiến chúng ta không thể nhận thấy được con đường ngắn nhất mà chúng ta đang đi.
1 MỤC LỤC MỤC LỤC C N MỞ ẦU TÍNH CẤP THIẾT CỦA Ể TÀI MỤC TIÊU KHOA HỌC NỘI DUNG CÔNG VIỆC THỰC HIỆN C N 1: C SỞ LÝ THUYẾT XÂY DỰNG THUẬT TOÁN ỜNG DẪN ỊN TR ỚC 1.1 LÝ THUYẾT 1.1.1 Tìm đường ngắn đồ 1.1.2 L t uy t t u t to n ti u i u v đ n đường ngắn n ất ỨN DỤN DỰN T UẬT ỜN ỊN TR ỚC DỰA TRÊN DIJKSTRA 10 1.2.1 T u t đ n đường ngắn n ất 10 1.2.2 Hướng dẫn sử dụng: 12 1.2.3 Các hàm p ần m m mô 23 C N : C SỞ XÂY DỰN MÔ ÌN Ố T ỢNG THỰC NGHIỆM KIỂM TRA ỜNG DẪN TỐ U 24 2.1 TỔNG QUAN VỀ V ỀU KHIỂN PIC 24 2.1.1 Ngôn ngữ l p trình mạch nạp cho PIC 24 2.1.2 Sơ đồ chân vi u n 26 2.2 TỔNG QUAN VỀ GPS 26 2.2.1 Các thành phần hệ thống 27 2.2.2 Nguyên tắ đ nh v 33 2.3 CÁC THÀNH PHẦN CHÍNH CỦA ỘN C 35 2.3.1 Sơ đồ tổng qu t u n hệ thống 35 2.3.2 Cảm bi n la bàn CMPS-03 36 2.3.3 Module GPS EM - 410 43 2.3.4 Mạch công suất dùng L298 46 2.3.5 Sơ đồ khối xử lý trung tâm 47 2.3.6 Mạch chuy n đổi USB – COM 48 2.3.7 Mạch hi n th dùng LCD 16x2 48 C N 3: ỨNG DỤNG VÀ MÔ PHỎNG THUẬT TOÁN ỜNG DẪN NGẮN NHẤT TRÊN BẢN Ồ GOOGLE 51 3.1 GIỚI THIỆU PHẦN MỀM 51 3.2 QUÁ TRÌNH THIẾT KẾ PHẦN MỀM 55 3.2.1 Tạo il lưu toạ độ 55 3.2.2 Q trìn đ il txt 56 3.2.3 Gửi ữ liệu o MCU ủ động 57 3.2.4 C p n t GPS tr n Googl m p 58 C C N 4: ỨNG DỤN ỀU KHIỂN MÔ HÌNH THỰC NGHIỆM TRÊN SỞ THUẬT TOÁN ỊN TR ỚC TỐ U 60 4.1 GIỚI THIỆU QUÁ TRÌNH TRUYỀN DỮ LIỆU 60 S Ồ THỰC HIỆN 62 ẾT LUẬN 64 TÀI LIỆU THAM KHẢO 67 C TÍN CẤP T NG MỞ ẦU ẾT CỦA Ể TÀ Trong trình phát tri n nhanh chóng toàn diện khoa h c công nghệ, máy móc ngày trở nên t ông đ phục vụ ơn sử dụng nhi u ơn o on người v nhi u mặt, quân ũng n ân Những hệ thống giới sử dụng n y tự động hóa không ngừng đ tạo nên thu n tiện x o on người ũng n cải ti n khả oạt động hệ thống Ví dụ n l p trìn đ chạy tự động theo đồ, máy bay quân k ông người lái, robot tự hành hoạt động môi trường độc hại, tàu lặn tự hành ùng đ khảo s t đ a hình ứng dụng ngành dầu lử …và nhi u ứng dụng giới khác có th hoạt động ch độ tự động Và n n tảng cho ứng dụng giới tự động khả tự đ nh v Ngày xư , k i on người muốn qu khu vự n rừng sa mạc h phải đ lại dấu v t n đánh dấu l n đường, bẻ àn x đ nh v trí củ mìn qu Tuy n i n, s u k i i n t ì đ x trí h không th dựa vào v t đượ đ n trời, sử dụng l s on ưt àn đ x ây đ đ nh v ấu, h dự vào t i n văn đ n p ương ướng độ lệch h đ nh v v trí h bi n Tuy nhiên, p ương p p ó độ xác không cao phụ thuộc nhi u vào thời ti t Ngoài Google map đ a hình hi m trở mà on người tạo n n lộ trìn đường ụ th hay đồ chi ti t n s mạc, không gian bi n…đ dễ dàng di chuy n theo lộ trình Google map Khi động i uy n lộ trìn đường ó sẵn Google map, ấu nhi u lựa ch n củ đường k i n không th nh n thấy đường ngắn mà ng t đ ng Dựa vào vào n ưng ti u í tr n, đ tài mở giải pháp: Xây dựng thu t to n đường dẫn đ n trướ o p ương tiện giao thông ứng dụng GPS MỤC T ÊU OA ỌC Xây dựng thu t to n đường dẫn đ n trướ o p ương tiện giao thông Đường dẫn ngắn Đảm ảo gó ẻl i ủ đường ẫn n toàn o p ương tiện gi o thông Ứng dụng GPS u kiện mô ìn p ương tiện giao thông Đảm bảo u kiện p ương tiện giao thông bám theo quĩ đạo đường dẫn đ n trước NỘ DUN CÔN V ỆC T ỰC ỆN Tìm hi u thu t to n đường đường dẫn đ n trước ngắn Thi t k ứng dựng thu t to n đường dẫn đ nh trước ngắn T i t k ứng ụng p ần m m n đường đ n trướ ngắn n ất từ Goodgle map Đảm ảo góc bẻ l i n toàn o động Xây dựng ứng dụng phần m m truy n liệu từ Google map xuống cho động Thực nghiệm mô hình thực t C N 1: C SỞ LÝ T U ẾT DỰN DẪN ỊN T UẬT TOÁN ỜN TR ỚC 1 LÝ T U ẾT 1.1.1 Tìm đường ngắn đồ Có nhi u thu t to n tìm đường ngắn đồ n ư: Dijkstra, Bellman – Ford, Heuristic, Giải thu t A* n ưng t n thu t to n ijkstr o: Đó thu t to n tìm lời giải xác tốn chi phí Ý tưởng thu t toán Dijkstra sử dụng phép duyệt lan truy n, bắt đầu duyệt từ đỉnh xuất phát, đỉnh tính khoảng cách từ đỉnh xuất p t đ n đỉnh k củ đỉnh đ ng xét, sau n đỉnh ti p theo cho khoảng cách từ đỉn đ n đỉn (so với n đầu nhỏ đỉnh k khác), duyệt đ n gặp đượ đỉnh cuối dừng lại k ông òn đỉnh k dừng lại 1.1 L thu t c c thuật to n tiêu bi u v đ nh đường ngắn 1.1 Tìm đường ngắn giải thuật Dijkstra Thu t toán Dijkstra, mang tên nhà khoa h m y tín người Hà Lan Edsger Dijkstra, thu t toán giải quy t ài to n đường ngắn nguồn đơn đồ th cạnh mang tr ng số âm Có n i u giải t u t đượ p t tri n đ giải ài to n tìm đường ngắn n ất giữ ặp đỉn Giải t u t Dijkstr giải t u t đ giải ài to n đường ngắn n ất nguồn đơn tr n đồ t k ông âm Nó x ó tr ng số ạn mà tất ả đ n đường ngắn n ất giữ i đỉn tr ng số đ u o trướ , từ đỉn a đ n đỉn b Ở đỉn v, giải t u t Dijkstr x kv: mang giá tr ool n x B n đầu ta khởi tạo tất đ n t ông tin: kv, dv pv đ nh trạng t i ch n củ đỉnh v đỉnh v ch n, ng ĩ là: kv = false, v V dv: chi u ài đường mà t tìm t o đ n thời m đ ng xét từ a đ n v Khởi tạo, dv = , v V \{a}, da = pv: đỉn trước củ đỉnh v tr n đường ngắn từ a đ n b Đường ngắn từ a đ n b có dạng {a, ,pv,v, ,b} Khởi tạo, pv = null, v V S u ướ ủ giải t u t Dijkstr : B1 K ởi tạo: Đặt kv:= false v V; dv:= ,v V \ {a}, da:=0 B2 Ch n v V cho kv = false dv = {dt / t V, kt = false} N u dv = kết thúc, không tồn đường từ a đ n b B3 Đ n ấu đỉnh v, kv:= true B4 N u v = b kết thúc db độ ài đường ngắn từ a đ n b Ngược lại n u v b sang B5 B5 Với đỉnh v k với u mà kv = false, ki m tra N u dv > du+ w(u,v) dv:= du + w(u,v) Ghi nhớ đỉnh v: pu:= v.Quay lại B2 Begin n, C = (cij), a, b d(a) = d(v) = v a K(i) = False i n S v K Đ Ch n v K s o o [v] đạt K = K \ {v} S V K&k v Đ d(u) = min(d(u), d(v) + w(v,u)) d(b) End Hình 1.1: Thu t toán Dijkstra 1.1.2.2 Thuật toán Bellman – Ford Thu t toán BELLMAN-FORD có giá tr tr ng lượng o đồ th chu trình, có Nguy n l t u t to n: Gán giá tr n đầu Ch n đỉnh s1 làm gốc M rk = [1,0…0] ; [1] = ; Pr[1] = Ở ước lặp : Ch n đỉn k đ n ấu cho tất đỉn trước củ k đ n - ng ĩ : M rk[k] = j ấu , (k) : Mark[j]= C p nh t Mark : Mark[k] =1 ; - Tính d[k] = { d[i] + a[i, k]: i ĐỘ PHỨC TẠP: O(nm) O(n3) C o (k)}, Pr[k] số đạt đồ th dầy, i.e., đồ th mà m ≈ n² 1.1.2.3 Thuật giải Heuristic T u t giải H uristi k ông p ải t u t to n, k ông đảm ảo đượ ti u í ủ t u t to n tín đ ng, y u ầu đối t u t giải H uristi tìm r lời giản gần đ ng ó t ấp n n đượ Trong t ự t ó n i u ài to n n u sử ụng t u t to n t ì tốn n i u t ời gi n, độ p ứ tạp ủ qu lớn, k i n u sử ụng t u t giải H uristi t ì đ ng n n ủ t ông tin ó í , p ải i t T u t to n: Ki m tr tất ả Haminton Với đồ t t uộ vào tìm đượ đ p n gần giải iệu quả, y u ầu t u t giả H uristi p ải on người Nói tóm lại m ng tín n n t o n!, ót óng iệu ơn Đ đư r i t t n ụng ng t v n ụng tri t ứ kin ng iệm on người trường ợp, tín tr ng số tất ả u trìn n đỉn Độ p ứ tạp n!, v y số p ép to n tăng ỉ ần đồ t l n ỡ 1000 số p ép tín l n ỡ k*1000! (k p ụ ài đặt t u t to n ng t ) T u t giải H uristi : n u t sử ụng ng iệm ủ , sử ụng kin on người, k i tr n n ững đoạn đường ngắn t ì ó ngắn, từ đỉn t k ông qu y l i k n đ n k ti p s o o ạn nối ó gi tr n ỏ n ất đỉn tới, n v y t ó đượ u trìn n ỏ, n ưng ắ n ỏ n ất T u t giải ó t n N r st N ig t u t giải u trìn ỉ n2, ng ĩ với ngàn đỉn ors Độ p ứ tạp ủ ng t ỉ ần làm k oảng vài triệu p ép to n xong Tuy v y, t u đượ on người ơn, ng t ỉ sử ụng kin ng iệm on người n n k t tốt lắm, n u ng t sử ụng n i u ki n t ứ m ng tín ng t t u đượ k t tốt ơn 1.1.2.4 Giải thuật A* A* (A sao) thu t to n tìm đường ngắn đồ th Thu t toán tìm đường từ nút khởi đầu tới nút đí o trước (hoặc tới nút thỏa mãn u kiện đí ) T u t toán sử dụng đ n gi kin ng iệm đ x p loại n t t o ướ lượng v n đường tốt qu n t T u t toán duyệt nút theo thứ tự củ đ n gi uristi Do đó, thu t toán A* ví dụ tìm ki m theo lựa ch n tốt (best-first search) Đ i t n ững n đường ó k ả ẫn tới đí , A* sử ụng đ n gi kin ng iệm v k oảng từ m ất kỳ trường ợp tìm đường đi, đ n gi ó t đ n gi xấp xỉ t ường ùng Đi m k đ n k oảng o k oảng k oảng đường im y - ủ đường gi o t ông iệt ủ A* tìm ki m t o lự qu Đi u làm o trướ tới đí Trong n tốt n ất òn tín o A* "đầy đủ" "tối ưu", ng ĩ là, A* luôn tìm t đường ngắn n ất n u tồn đường n t A* k ông đảm ảo ạy n n môi trường ạng m ung, ơn t u t to n tìm ki m đơn giản ơn Trong uy n ất đ đ n đí ót trướ t p ải 10 v p í x đí uối ùng qu y lại Trong trường ợp đó, việ t t o t ứ tự "gần đí 1.2 ỨN DỤN ơn t ì đượ t trướ " ó t DỰN T UẬT n t gây tốn t ời gi n ỜN ỊN TR ỚC DỰA TRÊN DIJKSTRA 1 Thuật đ nh đường ngắn Mô thu t to n tìm đường ằng Dijkstra Goodgle map Trong đ tài, sử dụng đồ google map làm n n tảng Vì v y, ưu m mà google map mang lại (Tính xác đồ, khoảng cách, cự ly, t độ v t l …), ng t phải chấp nh n hạn ch mà google map ràng buộc n ư: - Không th can thiệp vào thu t to n tìm đường google map - Việc ch n m A đ n m B google map thu t toán tìm đường ngắn nhất, mà thu t to n tìm đường có th tối ưu n ất Việc xét tính tối ưu google map vấn đ cần xem xét Tuy nhiên, phạm vi vi t có th đ c p đ n vài đặ m mà googl t ường xét tới: Đường lớn, đường nhỏ, đường cao tố ,… Đường chi u, đường chi u,… Đường t ông t o ng, đường t ường kẹt xe (dựa vào tỉ lệ rating người ùng, …),… N u muốn tái lại việc tìm ki m đường google map, việ phải làm mô hình hóa đồ thực t Vì v y, có th xây dựng ương trình mô hình hóa khu vực đồ nhỏ (vì n u mô hình hóa toàn đồ không khả thi, liệu lớn,…), áp dụng thu t to n tìm đường ngắn dựa vào Dijstra 53 P ần gửi ữ liệu o CPU Hình 3.3: Giao diện gửi liệu Đ n đường đi, t ô động n m đầu m uối t ì đường tối ưu xuất iện Hình 3.4: Cách ch n đường 54 P ần gửi ữ liệu o p ép ng t lấy il txt s u lo l n ương trìn p ần m m Sau ta khởi động phần m m yêu cầu ta ch n cổng COM: cổng cho Module nh n tín hiệu từ GPS cổng cho việc truy n liệu (UART) từ máy tính xuống vi u n Tín hiệu GPS xử lí hi n th v trí củ m lên đồ google map 55 3.2 QUÁ TRÌN T ẾT Ế P ẦN MỀM Tạo file lưu toạ độ Lưu đồ Hình 3.5: Lưu đồ tạo il lưu t độ 56 Hàm lưu đường tr n Googl m p vào il txt Các yêu cầu thi t lập - Trên google map phải đ nh sẳn đường Đường đượ x đ nh đoạn thẳng màu đỏ nối ti p n u hi n th google.com - X đ n đ a muốn lưu il tr n m y tín Yêu cầu đạt - Xuất file txt nơi vừa ch n lưu il - File có cấu trúc : o Dòng đầu ti n lưu t độ vùng nhìn (lat, long, width, height, zoom) o Các dòng ti p theo t độ robot cần qu (lat, long) o Cự ly giữ m không 10m Q a trình đ c file txt Lưu đồ Hình 3.6: Lưu đồ đ c file txt 57 T i t l p đượ àm đ c file txt gửi tới MCU củ động – hi n th Google map Các yêu cầu thi t lập - Fil txt t o đ ng ấu trúc sau : o Dòng đầu ti n lưu t độ vùng nhìn (lat, long, width, height, zoom) o Các dòng ti p theo t độ động cần qu (l t, long) o Cự ly giữ m không 10m - độ (buffer, datagridview, listbox) Vùng hi n th t Yêu cầu đạt - Dữ liệu tồn bufer gửi cho MCU - Dữ liệu hi n th t - Dữ liệu t ô đ tạo gói tin gửi 3 độ động qu l n gi o iện datagridview o MCU hi n th listbox ửi liệu cho MCU động Lưu đồ Hình 3.7: Lưu đồ gửi liệu cho MCU 58 T i t l p àm gửi liệu từ máy tình tới MCU thông qua cổng COM Các yêu cầu thi t lập - Cổng COM giao ti p - Dữ liệu tồn rong buffer gửi cho MCU Yêu cầu đạt - Gói tin gửi cho MCU thành công Cập nhật PS oogle map Lưu đồ Hình 3.8: Lưu đồ c p nh t GPS google map 59 T i t l p àm update t độ củ động thông qua GPS Các yêu cầu thi t lập - Cổng COM giao ti p (tố độ baute rate: 4800) - Module GPS Yêu cầu đạt - N u động di chuy n, t tương ứng độ robot tr n googl m p ũng p ải t y đổi 60 C C 4.1 N 4: ỨN DỤN ỀU SỞ T UẬT TOÁN ỊN Ớ T C ỂN MÔ TR ỚC TỐ ỆU QUÁ TRÌN ÌN T ỰC N ỆM TRÊN U TRU ỀN DỮ L ỆU ước xử lí tín hiệu từ Laptop (PC) gửi xuống PIC u n động 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.1: Lưu đồ u n động Bước 1: Máy tính xử lí t độ thành nhi u m chuy n thành file txt Dữ liệu dạng float (Do tín hiệu t độ ta lấy 10 số lẻ) Kin độ vĩ độ đượ lưu trữ truy n xuống tín hiệu tốn Byt Do t m ta truy n xuống A(xA,yA) tốn ung lượng Byte độ 61 Bước 2: Một lần máy tính truy n xuống m đượ PIC lưu trữ vào đệm 16 Byte Động k t hợp với la bàn đ n ướng đ chạy từ A tới B Trong qu trìn ạy động i uy n t o đ n ướng gó ủ l n với đường đ n trướ Bước 3: Khi tới B trùng với t độ GPS đư v Động ngừng lại máy tính lại gửi ti p m C động tương tự lại chạy từ B tới C Cứ v y động chạy tới m cuối theo yêu cầu Đ tín to n góc b lái củ động k i n n liệu truy n tải từ phần m m, Khi nh n tính hiệu từ phần m m t ì p ương trìn đường thẳng qua t ương trìn vi t độ m, với p ường trìn đường thẳng y=ax + b Trong ệ số gó t tín góc cần di chuy n củ động Tgα = -b/a từ mìn tín đượ gó α K i với k t hợp củ l gó α đượ x nđn ướng u n động đ n , động đượ u bẻ l i động đ ng với gó x ăm t àn n i u n i u đoạn trướ k i gửi xuống ăm t àn n ỏ ơn 10m m t o đồng thời đ nh Quảng đượ từ A đ n B tr n googl m p đượ x đượ mt o đin trướ đượ o ệ t ống Mỗi đoạn 62 S Ồ T ỰC ỆN Lấy toạ độ Goodgle Map Vi t p ương trìn đường thẳng qu m Tính hệ số gó α Đi u n động t o đường dẫn đ nh trước với hệ số gó α No α >αlaban Yes No Đi u n động rẽ tr i m t o gó α α αl n, t ì u k i n động rẽ tr i - N u α < αl n t ì u động rẽ p ải - N u α = αl n t ì động ti p tụ ạy m t o gó đường t ẳng m t o đường t ẳng m t o đường t ẳng đ n 64 ẾT LUẬN t đạt Ứng ụng t u t to n Dijkstr tìm đường ngắn n ất Đã ứng ụng đượ t u t to n Dijkstr vào ương trìn đ tìm đượ đường ngắn n ất Hình 5.1: Giao diện tìm đường ngắt dùng Dijkstra Thi t k thành công phần m m lấy liệu t độ tối ưu n ất google map Tìm đường ngắn n ất từ Goo gl m p truy n đượ ữ liệu xuống động 65 Hình 5.2: Giao diện liệu từ Google map Hình 5.3: Giao diện gửi ữ liệu o động T ng iệm động tr n đường t ự t Hình 5.4: Mô p ỏng động 66 C c vấn đ tồn Sai số Module GPS thời ti t không tốt lớn gây k ó k ăn việc Robot di chuy n Phụ thuộc vào đồ Google map nên phải dùng Online Cần phải có máy tính xử lí tín hiệu truy n Hệ thống k í t i t k o Vi u n tốt nên Robot hoạt động đ ng oàn toàn theo ý muốn ướng ph t tri n đ tài Đi u n Robot từ xa dùng module RF Dùng Mo ul 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ìn đường gi m s t Ch tạo ot i tb p ương tiện giao thông tự động tương l i gần 67 TÀ L ỆU T AM ẢO Ti ng Việt Nguyễn Th P ương Hà (2012) Lý thuyết điều khiển đại NXB Đại h c Quốc gia TP.HCM Trần Công Ngh (2009) Tự động hóa tính toán thiết kế tàu Đại h c giao thông v n tải thành phố Hồ Chí Minh Thông tin vệ tinh Phạm Minh Việt, NXB khoa h c kỹ thu t Ti ng Anh Qaiser Iftikhar (2009) VB.NET/C# and JavaScript Communication The Code Project J.M.J Journée (1970) A Simple Method for Determining the Manoeuvring Indices K and T from Zigzag trial Data Delft University of Technology Thor I.Fossen (2011) Guidance and Control of Vehicles Department of Engineering Cybernetics - Norwegian University of Science and Technology (NTNU), Lecture Notes Global Positioning System Theory and practice Hofmann-Wellenhof, B.Lichtenegger, H.; Collins, J National Marine Electronics Association The NMEA 0183 Protocol NMEA0183 protocol