1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu mạng học sâu vào điều khiển quadcopter né tránh vật cản

58 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

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 CƠNG TRÌNH NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN NGHIÊN CỨU MẠNG HỌC SÂU VÀO ĐIỀU KHIỂN QUADCOPTER NÉ TRÁNH VẬT CẢN S K C 0 9 MÃ SỐ: SV2022 - 160 CHỦ NHIỆM ĐỀ TÀI: THÁI TRUNG TÀI S KC 0 Tp Hồ Chí Minh, tháng 6/2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN NGHIÊN CỨU MẠNG HỌC SÂU VÀO ĐIỀU KHIỂN QUADCOPTER NÉ TRÁNH VẬT CẢN SV2022-160 Thuộc nhóm ngành khoa học: SV thực hiện: Thái Trung Tài Dân tộc: Kinh Lớp, khoa: 18142CL3A, Đào tạo CLC Ngành học: Điện - Điện tử Nam, Nữ: Nam Năm thứ: Người hướng dẫn: TS Nguyễn Phan Thanh TP Hồ Chí Minh, 06/2022 /Số năm đào tạo: MỤC LỤC Trang DANH MỤC BẢNG BIỂU I DANH MỤC CÁC HÌNH ẢNH II DANH MỤC NHỮNG TỪ VIẾT TẮT IV THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI V MỞ ĐẦU 1 Tổng quan tình hình nghiên cứu Lý chọn đề tài Mục tiêu đề tài Phương pháp nghiên cứu Đối tượng phạm vi nghiên cứu CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .2 1.1 Giới thiệu Quadcopter .2 1.2 Hệ điều hành Robot (ROS) – Robot Operation System 1.2.1 Tổng quan .3 1.2.2 Cấu trúc ROS 1.2.2.1 ROS Filesystem Level .6 1.2.2.2 ROS Computation Graph 1.2.2.3 ROS Community level 1.2.3 Truyền nhận liệu thông qua MAVLINK 10 1.2.4 Xây dựng mơ hình ROS cho Quadcopter 10 1.2.5 Sơ đồ giao tiếp phần cứng 11 1.3 Thuật toán CNN 11 1.3.1 Phương pháp học sâu (Deep Learning) 11 1.3.2 Kiến trúc mạng nơ-ron tích chập .12 1.3.3 Xây dựng mạng nơ-ron tích chập 13 1.3.4 Giới thiệu Yolo 19 1.3.4.1 Cách Yolo hoạt động 19 1.3.4.2 Hàm tính IOU 20 1.3.4.3 Loss Function 22 1.4 Bộ điều khiển PID 23 1.4.1 Tổng quan 23 1.4.2 Chỉnh định PID 24 CHƯƠNG 2: KẾT QUẢ NGHIÊN CỨU 25 2.1 Kết nối phần cứng .25 2.1.1 Giới thiệu phần cứng 25 2.1.1.1 Khung máy bay QAV 250 25 2.1.1.2 Động không chổi than MT 2204 - 2300KV 26 2.1.1.3 Mạch điều khiển tốc độ động 26 a Tổng quát 26 b Mạch điều khiển tốc độ sử dụng BLHeli –S 20A 27 c Mạch cân F3 Racing (ACRO) .28 2.1.1.4 Mạch chia nguồn Mini Power Hub (PDB) 29 2.1.1.5 Raspberry Pi Model B 29 2.1.1.6 Tay điều khiển Devo mạch nhận tín hiệu RX-601 .30 a Tay điều khiển Devo .30 b Bộ thu RX-601 31 2.1.1.7 Pin LiPo 31 a Tổng quan 31 b Thông số pin LiPo 32 c Pin LiPo cho máy bay 32 2.1.1.8 Cánh quạt 33 a Tổng quan 33 b Cánh DYS 6045 34 2.2 Sơ đồ thuật toán né tránh vật cản .36 2.2.1 Thuật toán nhận diện vật cản 36 2.2.2 Phát đối tượng 37 CHƯƠNG 3: ĐÁNH GIÁ KẾT QUẢ 41 KẾT LUẬN VÀ KIẾN NGHỊ .42 TÀI LIỆU THAM KHẢO 43 PHỤ LỤC .44 DANH MỤC BẢNG BIỂU Trang Bảng 2.1 Đặc điểm kỹ thuật động không chổi than AF 1806 2300KV 26 Bảng 2.2 Thông số ESC 27 Bảng 2.3 Thông số chi tiết tay điều khiển Devo 31 Bảng 2.4 Thông số kỹ thuật thu RX-601 31 Bảng 2.5 Thông số kỹ thuật Pin LiPo 32 i DANH MỤC CÁC HÌNH ẢNH Trang Hình 1.1 Cấu trúc Quadcopter Hình 1.2 Các chuyển động Quadcopter Hình 1.3 Các Robot có sử dụng hệ thống ROS Hình 1.4 So sánh khối lượng công việc phải làm dùng khơng dùng ROS Hình 1.5 Mối quan hệ Stack Packages Hình 1.6 Mơ tả chế quản lý Parameter Master Hình 1.7 Mơ tả hoạt động Service Hình 1.8 Mơ hình giao tiếp ROS .9 Hình 1.9 ROS Repository repository toàn tài nguyên ROS .9 Hình 1.10 Sơ đồ tổ chức tệp liệu Mavlink .10 Hình 1.11 Cách thức giao tiếp phần cứng 11 Hình 1.12 Cấu trúc mạng nơ-ron tích chập 12 Hình 1.13 Mơ hình tích chập 13 Hình 1.14 Biểu diễn ma trận RGB 13 Hình 1.15 Ma trận đầu vào lớp mặt nạ tương tự 14 Hình 1.16 Kết phép tính chập 15 Hình 1.17 Hồn thành phép tích chập tạo Feature Map .16 Hình 1.18 Tạo phân tử Stride = 17 Hình 1.19 Tạo phân tử thứ hai Stride = 17 Hình 1.20 Tạo phân tử Stride = Padding = 18 Hình 1.21 Ma trận tạo với lớp Max Pooling Stride = 18 Hình 1.22 Các lớp Layers .19 Hình 1.23 Cơng thức tính IOU .21 Hình 1.24 Sơ đồ điều khiển vòng lặp điều khiển PID .24 ii Hình 2.1 Khung QAV 250 với sợi Cacbon vật liệu 25 Hình 2.2 Chi tiết cách lắp ráp khung QAV 250 25 Hình 2.3 Động khơng chổi than MT 2204- 2300KV .26 Hình 2.4 Một số loại ESC có thị trường 27 Hình 2.5 ESC sử dụng 27 Hình 2.6 Mạch SP F3 Racing .28 Hình 2.7 Mạch chia nguồn 29 Hình 2.8 Raspberry Pi Model B .30 Hình 2.9 Tay điều khiển Devo 30 Hình 2.10 Bộ thu RX-601 .31 Hình 2.11 Các loại pin LiPo 32 Hình 2.12 Pin LiPo dùng cho máy bay 32 Hình 2.13 Kích thước cánh quạt 34 Hình 2.14 Cánh quạt ba 6045 34 Hình 2.15 Sơ đồ nguyên lý kết nối phần cứng .35 Hình 2.16 Mơ hình Quadcopter 36 Hình 2.17 Sơ đồ thuật toán nhận dạng ước lương đối tượng 36 Hình 2.18 Lưu đồ giải thuật 37 Hình 2.19 Nhận dạng vật thể qua Camera 38 Hình 2.20 Ảnh đọc từ Camera 39 Hình 2.21 Ảnh sau vẽ Bouding Box lên hình 40 iii DANH MỤC NHỮNG TỪ VIẾT TẮT AC Alternating Current BLDC Brushless Direct Current Motor CNN Convolution Neural Network DC Direct Current ESC Electronic Speed Control MAVLink Micro Air Vehicle Link PID Proportional Integral Derivative PDB Power Distribution Board ROS Robot Operation System RX Receiver SV Sinh Viên TX Transmitter UAV Unmanned Aerial Vehicle iv BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: Nghiên cứu mạng học sâu vào điều khiển Quadcopter né tránh vật cản - Chủ nhiệm đề tài: Thái Trung Tài Mã số SV: 18142205 - Lớp: 18142CL3A Khoa: Đào tạo CLC - Thành viên đề tài: Stt Họ tên Lớp Khoa Nguyễn Vương Ái Long 18142155 18142CL3A Đào tạo CLC Phạm Nguyễn Thanh Long 18142156 18142CL1A Đào tạo CLC Phạm Duy Phương 18142189 18142CL3A Đào tạo CLC Nguyễn Hoàng Quân 18142193 18142CL3A Đào tạo CLC MSSV - Người hướng dẫn: TS Nguyễn Phan Thanh Mục tiêu đề tài: - Nghiên cứu xây dựng mơ hình Quadcopter có khả tránh né vật cản - Xây dựng mạng CNN để nhận biết vật cản - Xây dựng mạng Nơron nhân tạo để nhận biết né tránh đối tượng Tính sáng tạo: - Hướng nghiên cứu khả tự động hóa Quadcopter Kết nghiên cứu: - Mơ hình Quadcopter - Chương trình nhận dạng vận cản Đóng góp mặt giáo dục đào tạo, kinh tế - xã hội, an ninh, quốc phòng khả áp dụng đề tài: - Mô hình sử dụng cho giáo dục Cơng bố khoa học SV từ kết nghiên cứu đề tài (ghi rõ tên tạp chí có) nhận xét, đánh giá sở áp dụng kết nghiên cứu (nếu có): v 2.1.1.8 Cánh quạt a Tổng quan Cánh quạt phần để tạo chênh lệch áp suất quadcopter giúp thiết bị bay khơng trung Do việc hoạt động quadcopter tần thấp nên việc tăng tốc độ động giúp quadcopter bay cao Các động quadcopter thiết kế với cặp cặp quay theo chiều kim dồng hồ cặp quay ngược lại Góc nghiêng cánh quạt Quadcopter phép đo khoảng cách mà cánh quạt di chuyển khơng khí cho vịng quay cánh quạt Đây gần mặt lý thuyết yếu tố tự nhiên vật liệu, mật độ khơng khí hiệu ảnh hưởng đến khoảng cách Tuy nhiên, góc nghiêng cánh quạt thông số giúp hiểu rõ hiệu suất cánh quạt Kích thước cánh quạt khoảng cách từ đầu đến đầu Các cánh quạt dài tạo nhiều lực đẩy tốc độ, cần nhiều mô-men xoắn từ động để quay Kích thước cánh quạt lớn khơng có nghĩa bay nhanh Điều chủ yếu xác định góc nghiêng cánh quạt Hình 1.16 cho thấy cách kích thước khác cánh quạt Diện tích bề mặt cánh quạt định lực đẩy mà tạo Diện tích bề mặt cao cho phép nhiều khơng khí di chuyển hơn, tạo nhiều lực đẩy Điều có nghĩa động cần nhiều lượng để quay cánh quạt Chiều dài khung Quadcopter xác định kích thước tối đa cánh quạt sử dụng Điều dễ dàng xác định cách lấy chiều dài chiều rộng nhỏ khung Quadcopter chia cho hai Và chiều dài cần nhỏ chút để tạo khoảng trống quay cánh quạt liền kề Hai cánh quạt có hai cánh giúp tạo lực đẩy hiệu Bên cạnh đó, có cánh quạt ba cánh, bốn cánh nhiều cánh Đối với mục đích cánh quạt quadcopter, số lượng cánh quạt vấn đề lớn 33 Hình 2.13 Kích thước cánh quạt b Cánh DYS 6045 Hình 2.14 Cánh quạt ba 6045 34 2.1.2 Sơ đồ nguyên lý kết nối phần cứng mơ hình Hình 2.15 Sơ đồ nguyên lý kết nối phần cứng 35 Hình 2.16 Mơ hình Quadcopter 2.2 Sơ đồ thuật tốn né tránh vật cản 2.2.1 Thuật toán nhận diện vật cản Trong việc sử dụng trí tuệ nhân tạo để nhận biết vào phân biệt đối tượng ngày phổ biến Đóng vai trị nhận biết cho thiết bị tự động hóa, để điều khiển thiết bị tự động Việc sử dụng thị giác máy tính việc cần thiết để ứng dụng thuật toán nhận dạng vật cản để bảo vệ thiết bị Vị trí đối tượng Video Phát đối tượng Ước tính đối tượng Theo dõi đối tượng Chỉnh định Camera Vị trí đối tượng Hình 2.17 Sơ đồ thuật tốn nhận dạng ước lương đối tượng 36 2.2.2 Phát đối tượng Lưu đồ giải thuật để né tránh vật cản Bắt đầu Ảnh chụp từ Camera Sai Đang hiệu chỉnh vị trí? Đúng Nhận diện vật thể Sai Có vật thể vùng giới hạn Đúng Tự động nâng cao độ cao bay Theo dõi đối tượng Đối tượng vùng giới hạn Sai Đúng Tiếp tục trì độ cao Giữ độ cao vị trí ban đầu Kết thúc Hình 2.18 Lưu đồ giải thuật 37 Giải thích lưu đồ: - Khi bắt đầu, Camera bật, hình ảnh tự động chụp liên tục - Mỗi hình ảnh thu nhỏ lại để giảm thiểu tính tốn cho chương trình - Nếu vật cản nằm vùng giới hạn tự động nâng độ cao theo dỗi đối - tượng Nếu đối tượng khơng cịn nằm vùng giới hạn trả độ cao vị trí điều khiển, cịn nằm vùng giới hạn tiếp tục trì độ cao Do việc đồng hóa với thiết bị thuật tốn chưa hoàn thành nên chưa hiệu chỉnh vùng giới hạn Hình 2.19 Nhận dạng vật thể qua Camera 38 Diễn giải kết thuật toán: - Đọc Video từ Camera Raspberry Pi Model B: Hình 2.20 Ảnh đọc từ Camera - Tiếp đến tải trình phát đối tượng Yolov3 Đặt xác suất tối thiểu để loại bỏ dự đoán yếu - - Tạo vòng lặp để xác định khung từ máy ảnh, sau ta lấy Blod từ khung hình tại, thực chuyển tiếp khối blod, thực chuyển tiếp với Blod thông qua lớp đầu ra, nhận xác suất lớp phát đối tượng, nhận mục xác định giá trị lớn nhất, nhận mục, giá trị xác suất lớn Loại bỏ dự đoán yếu với xác suất tối thiểu - Chia tỷ lệ bouding box thành khung hình ban đầu Định dạng tọa độ chiều rộng chiều cao hộp Cuối ta nhận vẽ lại Bouding Box lên khung ban đầu 39 Hình 2.21 Ảnh sau vẽ Bouding Box lên hình 40 CHƯƠNG 3: ĐÁNH GIÁ KẾT QUẢ - Kết chưa mong muốn chưa đồng hóa việc điều khiển từ Rasberry Pi sang Quadcopter - Các kết mơ hình nhiều hạn chế cần khắc phục nâng cao hiệu mơ hình CNN Việc ứng dụng yolo vào nhận diện giúp đơn giản hóa việc thiết kế lập trình - Mơ hình cịn nhiều khuyết điểm cần thời gian để phát triển hoàn thiện vận hành thực tế 41 KẾT LUẬN VÀ KIẾN NGHỊ Vì Quadcopter có tính động nhanh chóng nên việc điều khiển Quadcopter bước phát triển quan trọng quốc phòng vấn đề áp chế tội phạm, ứng dụng giao hàng thơng minh Việc thiết bị bay tự dộng vận hành bước tiến cho hệ thống giao thơng tương lai Cịn ứng dụng nhiều việc theo dõi đối tượng, phát theo dõi lỗi vi phạm giao thông, phần tử tội phạm nguy hiểm giúp bảo đảm an ninh xã hội 42 TÀI LIỆU THAM KHẢO [1] M C Le and M H Le, “Human Detection and Tracking for Autonomous Humanfollowing Quadcopter,” Proc 2019 Int Conf Syst Sci Eng ICSSE 2019, pp 6– 11, 2019, doi: 10.1109/ICSSE.2019.8823343 [2] TS Trương Ngọc Sơn, “Giáo trình Trí tuệ nhân tạo sở ứng dụng”, NXB Đại học Quốc gia Tp.HCM [3] G R Bradski and A Kaehler, Learning OpenCV - computer vision with the OpenCV library: software that sees 2008 [4] E Kuantama, I Tarca, and R Tarca, “Quadcopter Modeling in Virtual Reality for Dynamic Visualization,” 2018 5th Int Conf Control Decis Inf Technol CoDIT 2018, pp 671–676, 2018, doi: 10.1109/CoDIT.2018.8394860 [5] M Faessler, D Falanga, and D Scaramuzza, “Thrust Mixing, Saturation, and Body-Rate Control for Accurate Aggressive Quadrotor Flight,” IEEE Robot Autom Lett., vol 2, no 2, 2017, doi: 10.1109/LRA.2016.2640362 [6] D Falanga, E Mueggler, M Faessler, and D Scaramuzza, “Aggressive quadrotor flight through narrow gaps with onboard sensing and computing using active vision,” Proc - IEEE Int Conf Robot Autom., pp 5774–5781, 2017, doi: 10.1109/ICRA.2017.7989679 [7] Hmrishav Bandyopadhyay, “YOLO: Real-Time Object Detection Explained”, YOLO: Real-Time Object Detection Explained (v7labs.com), 20/06/2022 [8] Lê Ngọc Hiền Đức, “Nghiên cứu, thiết kế chế tạo mơ hình Quadcopter tự hành bay qua khoảng trống hẹp”, Luận văn tốt nghiệp, Trường Đại học Sư Phạm Kỹ Thuật TP.HCM, 2021 43 PHỤ LỤC Chương trình chạy Model: import numpy as np import cv2 import time camera = cv2.VideoCapture(0) h, w = None, None with open('/home/pi/project/data/coco.names') as f: labels = [line.strip() for line in f] network = cv2.dnn.readNetFromDarknet('/home/pi/project/data/yolov3.cfg,' /home/pi/project/data/yolov3.weights') layers_names_all = network.getLayerNames() layers_names_output = \ [layers_names_all[i - 1] for i in network.getUnconnectedOutLayers()] probability_minimum = 0.5 threshold = 0.3 colours = np.random.randint(0, 255, size=(len(labels), 3), dtype='uint8') while True: _, frame = camera.read() if w is None or h is None: h, w = frame.shape[:2] print("1") blob = cv2.dnn.blobFromImage(frame, / 255.0, (416, 416), swapRB=True, crop=False) network.setInput(blob) start = time.time() output_from_network = network.forward(layers_names_output) end = time.time() print('Current frame took {:.5f} seconds'.format(end - start)) 44 bounding_boxes = [] confidences = [] class_numbers = [] for result in output_from_network: for detected_objects in result: scores = detected_objects[5:] class_current = np.argmax(scores) confidence_current = scores[class_current] if confidence_current > probability_minimum: box_current = detected_objects[0:4] * np.array([w, h, w, h]) x_center, y_center, box_width, box_height = box_current x_min = int(x_center - (box_width / 2)) y_min = int(y_center - (box_height / 2)) bounding_boxes.append([x_min, y_min, int(box_width), int(box_height)]) confidences.append(float(confidence_current)) class_numbers.append(class_current) results = cv2.dnn.NMSBoxes(bounding_boxes, confidences, probability_minimum, threshold) if len(results) > 0: for i in results.flatten(): x_min, y_min = bounding_boxes[i][0], bounding_boxes[i][1] box_width, box_height = bounding_boxes[i][2], bounding_boxes[i][3] colour_box_current = colours[class_numbers[i]].tolist() cv2.rectangle(frame, (500,800),(500,800),[0,0,255],2) cv2.rectangle(frame, (x_min, y_min), 45 (x_min + box_width, y_min + box_height), colour_box_current, 2) if x_center>100 and x_center100 and y_center250 and box_height>250: print("1") text_box_current = '{}: {:.4f}'.format(labels[int(class_numbers[i])], confidences[i]) cv2.putText(frame, text_box_current, (x_min, y_min - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, colour_box_current, 2) cv2.namedWindow('Objects Detection', cv2.WINDOW_NORMAL) cv2.imshow('Objects Detection', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break camera.release() cv2.destroyAllWindows() 46 S K L 0 ... TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN NGHIÊN CỨU MẠNG HỌC SÂU VÀO ĐIỀU KHIỂN QUADCOPTER NÉ TRÁNH VẬT CẢN SV2022-160 Thuộc nhóm ngành khoa học: SV thực hiện: Thái Trung... PHẠM KỸ THUẬT TPHCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI Thông tin chung: - Tên đề tài: Nghiên cứu mạng học sâu vào điều khiển Quadcopter né tránh vật cản - Chủ nhiệm đề tài: Thái Trung Tài... Nghiên cứu xây dựng mơ hình Quadcopter có khả tránh né vật cản - Xây dựng mạng CNN để nhận biết vật cản - Xây dựng mạng Nơron nhân tạo để nhận biết né tránh đối tượng Tính sáng tạo: - Hướng nghiên

Ngày đăng: 07/09/2022, 21:16

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

TÀI LIỆU LIÊN QUAN

w