Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
7,75 MB
File đính kèm
code.rar
(2 MB)
Nội dung
MỤC LỤC Bìa trong……………………… ………………………………………… i TÀI LIỆU THAM KHẢO…………………………………………… ….….xii PHU LỤC …………………………… ……………………………… …xviii LIỆT KÊ HÌNH VẼ LIỆT KÊ BẢNG TÓM TẮT Đề tài nghiên cứu phát triển hệ thống robot thông minh ứng dụng vận chuyển hàng hóa kho bãi, sử dụng giải thuật tối ưu hóa cải tiến dựa tảng trí thơng minh nhân tạo: • Hệ thống điều khiển quản lý cách tự động hồn tồn, bán tự động (có tham gia người) • Thiết kế thuật tốn tối ưu tìm đường ngắn cho robot • Thiết kế module cảm biến giúp xe định vị đường đi, vật cản nhận định xác xe kết nối • Thiết kế driver điều khiển động kết hợp với PID điều khiển cách xác vị trí, tốc độ CHƯƠNG TỔNG QUAN Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Ngày với phát triển khoa học công nghệ, robot ngày ứng dụng nhiều sống người Robot dần thay người làm việc từ đơn giản đến phức tạp, đòi hỏi xác cao Từ việc nhà đơn giản, đến ngành công nghiệp nặng, hay đến hàng không vũ trụ, robot trở thành công cụ đắc lực thiếu giúp người nâng cao suất lao động Sự cần thiết tính ứng dụng chúng thúc đẩy người nghiên cứu, phát triển mạnh mẽ lĩnh vực Nhân loại tiếp cận “Cách mạng công nghệ 4.0” với đột phá trí thơng minh nhân tạo (AI – Artificial intelligence) thiết bị điện tử thông minh (Smart equipment), tiền đề cho nghiên cứu, phát triển ứng dụng Robot Hiện Robot di động áp dụng nhiều vào sinh hoạt hàng ngày, mục đích kinh tế hay khám phá thiên nhiên người Trong đời sống, robot di động sử dụng rộng rãi phổ biến, ví dụ như: robot giúp việc nhà, robot phục vụ, robot bán hàng, robot tìm cứu hộ… Đối với kinh tế hay ngành công nghiệp, robot di động mang lại sức lao động đáng kể, đảm nhiệm công việc nặng, xác, ổn định Từ việc áp dụng robot di động mang lại tiềm kinh tế không nhỏ Ngoài ra, người sử dụng cách phổ biến robot di động việc khám phá thiên nhiên Ví dụ như: sử dụng tàu ngầm khơng người lái để khám phá nơi sâu đáy đại dương, flycam để quan sát vách núi cheo leo hay robot tự hành điều khiển gửi lên mặt trăng, hỏa để nghiên cứu vũ trụ… Việc sử dụng robot di động giúp người tiết kiệm thời gian, thực hay khám phá điều mà người tự tay làm giảm thiểu nguy hiểm, tạo tiền đề phát triển ngành khác Như việc nghiên cứu, phát triển robot đặc biệt robot di động cần thiết quan trọng Tại Việt Nam xe tự hành nghiên cứu rộng rãi áp dụng nhiều sống Tuy nhiên, quốc gia khác nhau, có nhiều điều kiện khoa BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG CHƯƠNG TỔNG QUAN học–kỹ thuật, kinh tế phạm vi ứng dụng khác Vì nhóm nghiên cứu chọn nghiên cứu thiết kế xe tự hành, đáp ứng toán khoa học – kỹ thuật, kinh tế mang tính ứng dụng cao Điển việc xe vận chuyển hàng hóa từ vị trí đến vị trí khác mà khơng cần có người điều khiển, hay làm cơng việc bưng bê phục vụ nhà hàng thay cho nhân viên… Từ ứng dụng trên, việc nghiên cứu, thiết kế phát triển xe tự hành công việc quan trọng, thiết thực tạo tiền đề để phát triển lĩnh vực khác 1.2 MỤC TIÊU Thiết kế xe chở hàng tự hành có tính năng: Tối ưu lượng: Tìm đường ngắn sử dụng thuật tốn tìm kiếm tối ưu có cải tiến hiệu Tránh vật cản tĩnh Tránh vật cản động Hoạt động xác với vận tốc: 17 cm/s Giao tiếp không dây Giao diện sử dụng thân thiện với người sử dụng 1.3 PHẠM VI NGHIÊN CỨU • Tìm hiểu thiết bị lựa chọn thiết bị phù hợp cho mơ hình ứng dụng • Thiết kế sơ kết cấu phần khí • Tìm hiểu thuật tốn tìm đường ngắn • Cải tiến thuật tốn sẵn có đề xuất mới… • Tiến hành lập trình chương trình điều khiển xe • Tìm hiểu giao tiếp khơng dây • Thiết kế giao diện điều khiển phần mềm Matlab • Thu thập thơng số, chạy thử nghiệm đánh giá kết 1.4 GIỚI HẠN Dựa vào mục tiêu đặt nhóm, thời gian, kinh phí hạn hẹp cịn vấn để chưa giải sau: • Định vị cách xác • Tốc độ giao tiếp • Khả tự di chuyển xe BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG CHƯƠNG CƠ SỞ LÝ THUYẾT Chương CƠ SỞ LÝ THUYẾT 2.1 GIẢI THUẬT DIJSKTRA 2.1.1 Giới thiệu: Như ta biết, tốn tìm đường ngắn kiểu toán đồ thị Nhắc lại chút, tìm đường ngắn đồ thị tìm quãng đường từ điểm đến điểm khác cho tổng độ dài cạnh đường nhỏ Các thuật toán thường dùng để giải tốn là: • Thuật toán Dijkstra - giải toán đường ngắn hai đỉnh cho trước tất trọng số khơng âm Thuật tốn tính tốn tất đường ngắn từ đỉnh xuất phát cho trước tới đỉnh khác mà khơng làm tăng thời gian chạy • Thuật tốn Bellman-Ford - giải toán toán đường ngắn hai đỉnh cho trước trường hợp trọng số có giá trị âm • Thuật tốn Floyd-Warshall - giải toán đường ngắn cho cặp đỉnh Bảng 2.1 So sánh ưu nhược điểm giải thuật tìm đường ngắn nhất: Ưu điểm Floyd-Warshall Nhược điểm Khơng cần chạy lại Thuật tốn (có nghĩa có tính kế thừa từ đường lẫn Độ phức tạp cao cho nhau) cặp đỉnh Có thể chạy với số âm Dijsktra Tính toán tất đường ngắn từ đỉnh xuất phát cho trước tới đỉnh khác mà khơng làm tăng thời gian chạy BỘ MƠN TỰ ĐỘNG ĐIỀU KHIỂN Không sử dụng cho trọng số âm CHƯƠNG CƠ SỞ LÝ THUYẾT Bellman-Ford Đơn giản việc thực Có thể chạy với số âm Độ phức tạp cao, tốn nhớ Từ bảng so sánh nhóm nghiên cứu định chọn thuật toán Dijkstra để áp dụng cho đề tài Giải thuật Dijkstra, mang tên nhà khoa học máy tính người Hà Lan Edsger W Dijkstra, thuật toán giải toán đường ngắn đồ thị có hướng khơng có cạnh trọng số âm Ứng dụng lớn thuật toán cơng nghệ Hệ thống định vị tồn cầu (GPS), truyền dẫn tín hiệu mạng Internet 2.1.2 Mơ tả thuật tốn: Thuật tốn khởi đầu với giả thiết cho đồ thị G=(V,E) trọng số cạnh (trọng số tức chi phí, chiều dài, thời gian ) Ta chọn đỉnh s, gọi điểm nguồn Kết thúc thuật tốn ta tìm đường ngắn từ s đến đỉnh lại đồ thị Ban đầu, ta coi khoảng cách từ đỉnh s đến (hiển nhiên) khoảng cách từ s đến đỉnh ∞ Một mặt, việc để độ dài quãng đường đến đỉnh ∞ giúp đánh dấu đỉnh chưa thăm Mặt khác, sau thuật tốn tìm thấy đường khác ngắn hơn, ta thay giá trị chúng Thuật toán dựa nhận xét là, giả sử đường P1 đường ngắn từ s đến t phải qua đỉnh v Điều có nghĩa là, đường P1 phải bao gồm đường ngắn từ s đến v Nói cách khác, đường từ s đến v đường P1 phải đường ngắn đoạn từ s đến v khơng phải vậy, ta tìm đường khác ngắn từ s đến v, từ đường từ v đến t Đường gọi P2 từ s đến t ngắn P1, trái với giả thiết ban đầu BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN CHƯƠNG CƠ SỞ LÝ THUYẾT Hình 2.1: Đường từ s đến t Giả sử đường ngắn từ s đến t qua v, đường s đến v ngắn Từ nhận xét trên, ta thấy để tính đường ngắn từ s tới đỉnh xa, ta phải tính đường ngắn từ s tới đỉnh gần trước Trong thuật tốn, ta có vòng lặp, lần ta chọn đỉnh, đỉnh gần s mà ta biết Từ đỉnh ta tính qng đường từ s tới đỉnh kề với đỉnh xét Cụ thể sau: Lần đầu tiên, ta chọn đỉnh s đỉnh gần s mà ta biết (khoảng cách từ đỉnh đến 0) Ta tính khoảng cách từ s đến đỉnh kề độ dài cạnh nối từ s đến đỉnh Ta cập nhật quãng đường từ s đến đỉnh đó, đồng thời đánh dấu đỉnh s thăm Các lần tiếp theo, lần ta chọn đỉnh v mà ta biết chắn gần với s Từ đỉnh v ta tính đường ngắn từ s tới đỉnh t1,t2,t3… t1,t2,t3… kề với v theo cách sau: Ta gọi quãng đường ngắn biết s⇝t1 P1 Ta xét quãng đường P2 tổng quãng đường ngắn s⇝v độ dài cạnh (v,t1) Nếu tổng P2 nhỏ quãng đường P1 tại, ta cập nhật đường ngắn từ s⇝v P2 Lúc ta đánh dấu đỉnh v thăm Thuật toán dừng lại tất đỉnh đánh dấu thăm • Giải thuật: Bước 1: Gán T = V gán nhãn: Bước 2: Nếu v T dừng giá trị L[v] độ dài đường ngắn từ s đến v Prev[v] đỉnh nằm trước v đường BỘ MƠN TỰ ĐỘNG ĐIỀU KHIỂN CHƯƠNG CƠ SỞ LÝ THUYẾT Bước 3: Chọn đỉnh I T cho L[i] nhỏ gán T = T \ {i} Bước 4:Với từ đỉnh I (ở bước 3) đến đỉnh k có cạnh nối: Nếu gán Trở bước 2.2 GIAO TIẾP TRONG HỆ THỐNG: Robot tự hành phải có khả tự hoạt động theo chương trình cài đặt mà không cần can thiệp người như: nhận thông tin tuyến đường đi, robot phải có khả tự động theo tuyến đường trả kết cho trạm điều khiển đến đích Tuy nhiên hệ thống vận chuyển hàng hố thơng minh, tuyến đường vận chuyển robot phụ thuộc vào yêu cầu điều khiển người sử dụng.Vì hệ thống truyền thơng khơng dây cần thiết để người điều khiển điều khiển theo dõi trình hoạt động robot hệ thống Trong mơ hình chúng tơi, hệ thống truyền nhận liệu thiết kế theo mơ hình hình 2.2 sau: Hình 2.2: Sơ đồ mơ hình truyền nhận Trong đó: UART đảm nhiệm vai trị giao tiếp Arduino mega 2560 với NodeMCU, cụ thể Arduino nhận lệnh điều khiển trả cho NodeMCU lệnh xác nhận WiFi có trách nhiệm giao tiếp máy tính NodeMCU, cụ thể NodeMCU nhận lệnh điều khiển từ máy tính trả máy tính thơng tin xác nhận nhận từ Arduino thông qua giao thức UART BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN CHƯƠNG CƠ SỞ LÝ THUYẾT UART (Universal Asynchoronuos Reciever - Transmitter) giao thức truyền nhận liệu nối tiếp bất đồng Được sử dụng phổ biến hệ thống nhúng Hình 2.3: Hệ thống truyền liệu bất đồng Giao thức truyền thông không đồng UART (Universal Asynchoronuos Reciever - Transmitter): Có cách để đưa liệu lên: truyền song song truyền nối tiếp Truyền liệu không đồng bao gồm đường truyền nhận liệu, thiết bị đương truyền ngang cấp Khơng có xung clock, thiết bị phải có mạch dao động tạo xung CK độc lập phải tần số tốc độ (Baudrate) UART truyền nhận liệu theo gói Mỗi gói gồm có: bit bắt đầu, đến bit liệu, bit chẵn lẻ, đến bit kết thúc Hình 2.4: Cấu trúc gói liệu giao tiếp UART Ứng dụng UART: Giao tiếp UART phổ biến vi điều khiển, với nhu cầu cụ thể UART tìm thấy thiết bị module Bluetooth, thiết bị giao tiếp không dây, thiết bị GPS nhiều ứng dụng khác Ưu điểm UART: • • Chuẩn nối tiếp sử dụng nhiều Sử dụng bit chẳn lẻ để kiểm tra lỗi BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN CHƯƠNG CƠ SỞ LÝ THUYẾT • • Dữ liệu truyền nhận đóng gói Chỉ dùng dây để TX RX chuyển liệu khơng cần xung clock Nhược điểm: • • UART khơng hỗ trợ cấu hình nhiều master nhiều slaver Tốc độ tuyền nhận liệu thiết bị truyền nhận phải giống Trong truyền liệu không dây, kết nối wifi thường lựa chọn hàng đầu tính phổ biến kinh tế hệ thống wifi với mơ hình kết nối phạm vị địa lý có giới hạn Sóng wifi gần giống với sóng vơ tuyến dùng cho điện thoại di động hay thiết bị khác Tuy nhiên sóng WiFi truyền nhận tín hiệu tần số 2.4 GHz GHz, tần số cao nhiều so với thiết bị cầm tay truyền hình, nhờ cho phép sóng WiFi mang nhiều liệu Hiện nay, đa số thiết bị wifi tuân theo chuẩn 802.11n, phát tần số 2.4Ghz đạt tốc độ xử lý tối đa 300Megabit/giây • • • • Chuẩn: dựa chuẩn IEEE 802.11n (phổ biến hầu hết hộ gia đình) Tần số: 2.4 GHz GHz Phạm vi: xấp xỉ 50m Tốc độ truyền nhận: thông thường 150-200 Mbps, phụ thuộc vào tần số kênh sử sụng số lượng ăng- ten (chuẩn 802.11-ac cung cấp với tốc độ 500Mbps đến 1Gbps ) Trong đề tài này, chúng tơi sử dụng mơ hình server-client, mơ hình phổ biến mạng máy tính Trong mơ hình này, máy khách (client) gửi yêu cầu đến máy chủ (server), máy chủ xử lý trả kết cho máy khách Và server với client trao đổi liệu cho qua giao thức TCP TCP (Transmission Control Protocol) giao thức cốt lỗi giao thức TCP/IP Sử dụng TCP, thiết bị Accesspoint nối mạng kết nối truyền liệu cho nhau, trao đổi gói tin Giao thức TCP đảm bảo chuyển giao liệu tới nơi nhận cách đáng tin cậy thứ tự Giao thức TCP hoạt động dựa theo quy tắc bước (threeway – hand shaking) tầng giao vân (transport): BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN CHƯƠNG CƠ SỞ LÝ THUYẾT Hình 2.5 Mơ tả q trình TCP thiết lập kết nối bước (hand shaking) Đặc điểm: • • • • • TCP giao thức hướng kết nối: phải thiết lập kết nối trước truyền liệu Hỗ trợ chế full-duplex (truyền nhận liệu lúc) Cung cấp chế đánh số gói tin (sequencing) Cung cấp chế báo nhận Phục hồi liệu bị đường truyền Cấu trúc gói tin TCP: Hình 2.6 Cấu trúc gói tin TCP • 32 bit sequence number: dùng để đánh số thứ tự gói tin (từ sequence tính số byte truyền) • 32 bit acknowledgement number: dùng để báo nhận gói tin mong muốn nhận byte mang số thứ tự • bit head length: cho biết tồn header dài Word BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN 10 PHỤ LỤC if ((S1==0)&&(S2==1)&&(S3==1)&&(S4==1)&&(S5==1)&&(S6==1)&&(S7==1)) {goct=15.524;gocp=-15.524;} if ((S1==0)&&(S2==0)&&(S3==1)&&(S4==1)&&(S5==1)&&(S6==1)&&(S7==1)) {goct=12.529;gocp=-12.529;} if ((S1==1)&&(S2==0)&&(S3==1)&&(S4==1)&&(S5==1)&&(S6==1)&&(S7==1)) {goct= 9.462;gocp= -9.462;} if ((S1==1)&&(S2==0)&&(S3==0)&&(S4==1)&&(S5==1)&&(S6==1)&&(S7==1)) {goct= 7.125;gocp= -7.125;} if ((S1==1)&&(S2==1)&&(S3==0)&&(S4==1)&&(S5==1)&&(S6==1)&&(S7==1)) {goct= 4.764;gocp= -4.764;} if ((S1==1)&&(S2==1)&&(S3==0)&&(S4==0)&&(S5==1)&&(S6==1)&&(S7==1)) {goct= 2.386;gocp= -2.386;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)&&(S5==1)&&(S6==1)&&(S7==1)) {goct= 0;gocp= 0;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)&&(S5==0)&&(S6==1)&&(S7==1)) {goct= -2.386;gocp= 2.386;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==1)&&(S5==0)&&(S6==1)&&(S7==1)) {goct= -4.764;gocp= 4.764;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==1)&&(S5==0)&&(S6==0)&&(S7==1)) {goct= -7.125;gocp= 7.125;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==1)&&(S5==1)&&(S6==0)&&(S7==1)) {goct= -9.462;gocp= 9.462;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==1)&&(S5==1)&&(S6==0)&&(S7==0)) {goct=-12.529;gocp=12.529;} if ((S1==1)&&(S2==1)&&(S3==1)&&(S4==1)&&(S5==1)&&(S6==1)&&(S7==0)) {goct=-15.524;gocp=15.524;} TGL = S1+S2+S3+S4+S5+S6+S7; if (TGL255) {outt=255;} if(outt255) {outp=255;} if(outp0) { Serial.print("Receive"); DynamicJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.parseObject(s); DynamicJsonBuffer json; JsonObject& root2 = json.createObject(); root2["up"]=root["up"]; root2.printTo(Serial); if (root2["up"]==1) { count=0; } else { byte Size = root["sd"]; if ((Size!=0)&&(Status==3)) { n = Size; for (byte i=0; i