Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 156 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
156
Dung lượng
10,98 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Ĩ VÕ THÀNH SƠN HẢI PHONG NGHIÊN CỨU, THIẾT KẾ HỆ THỐNG KIỂM SOÁT LÀN ĐƯỜNG TRÊN XE QUÉT RÁC TỰ HÀNH NGÀNH: KỸ THUẬT CƠ KHÍ ĐỘNG LỰC – 8520116 SKC008004 Tp Hồ Chí Minh, tháng 03/2023 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Ĩ VÕ THÀNH SƠN HẢI PHONG NGHIÊN CỨU, THIẾT KẾ HỆ THỐNG KIỂM SOÁT LÀN ĐƯỜNG TRÊN XE QUÉT RÁC TỰ HÀNH NGÀNH: KỸ THUẬT CƠ KHÍ ĐỘNG LỰC – 8520116 Hướng dẫn Khoa học: TS NGUYỄN MẠNH CƯỜNG Tp Hồ Chí Minh, tháng / 2023 i ii iii iv v vi vii viii ix 113 c) Kết đánh giá mơ hình thực tế Hình 4.1: Kết mơ hình học đa tác vụ Thực nghiệm mơi trường thách thức Như hình 4.2, chúng tơi thử nghiệm mơ hình điều kiện thời tiết ánh sáng thử thách ban ngày, ban đêm, ngày mưa, tình hình giao thông đông đúc, … Kết điều kiện trời tối thiếu ánh sáng khó khăn tiêu cự trời mưa, mây mù, hệ thống hoạt động tốt ngưỡng 13FPS, điều kiện nhận diện đường nhận viết vật cản trả kết phân tích khung hình Điều chứng minh mơ hình tơi hoạt động tốt điều kiện kể điều kiện khó khăn 114 Hình 4.2: Kết mơ hình điều kiện xấu Kết luận, Với việc Jetson Nano cung cấp 472 GFLOPS để chạy thuật toán AI đại với CPU quad-core 64-bit ARM , NVIDIA GPU 128core tích hợp board mạch Chúng ta lập trình đa luồng cho phép tác vụ chạy song song hệ thống, giúp tăng tốc độ xử lý giảm thời gian chờ, 115 luồng chia sẻ tài nguyên, liệu Đồng thời, thông qua kết nghiên cứu, thử nghiệm thực nghiệm điều kiện tiêu chuẩn đến điều kiện khó khăn, hệ thống kiểm sốt làm đường thể hiệu làm việc kết tốc độ khung hình xử lí khả phát vật thể, nhận biết đường tương đối xác 116 KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN Kết luận Với mục tiêu ban đầu đặt ra, đề tài: “NGHIÊN CỨU, THIẾT KẾ, HỆ THỐNG KIỂM SOÁT LÀN ĐƯỜNG TRÊN XE QUÉT RÁC TỰ HÀNH” Đã thực nội dung sau: - Xây dựng mơ hình xe tự hành đáp ứng nội dung, - Ứng dụng mơ hình trí tuệ nhân tạo xử lý ảnh để giúp xe nhận diện theo đường cách xác hiệu Từ xác định điều đạt được, hạn chế, nguyên nhân, tồn cần khắc phục việc xây dựng mơ hình xe tự hành ứng dụng công nghệ lane tracking xử lý ảnh trí tuệ nhân tạo Khi nghiên cứu thực đề tài, đưa nhìn sâu sắc việc ứng dụng trí tuệ nhân tạo kết hợp với xử lý ảnh xe tự hành nghiên cứu tìm phương pháp tối ưu với khả nguồn lực có Tuy nhiên, trình thực đề tài gặp nhiều khó khăn việc xây dựng phần cứng điện tử, khí q trình lập trình, thu thập liệu training cho mơ hình trí tuệ nhân tạo không đào tạo chuyên sau mảng Dù vậy, với nội dung đề tài thực được, hy vọng góp phần cung cấp thêm kiến thức tham khảo liên quan tới lĩnh vực trí tuệ nhân tạo dành cho phương tiện tự hành nói riêng tơ nói chung Phương hướng phát triển Phương pháp lane tracking áp dụng cho mơ hình xe tự hành đồ án hoạt động môi trường thiết lập sẵn nhiều nhược điểm cần khắc phục Một số việc đáp ứng chậm sai lệch vận hành thời gian thực Nguyên nhân khuyết điểm máy tính Jetson Nano có cấu hình chưa đủ mạnh, thời gian training cho model liệu training cịn q 117 bị giới hạn thời gian, số phần cứng khác có chất lượng chưa cao nguồn lực để đầu tư cho đồ án hạn chế Để giải vấn đề đáp ứng chậm sai lệch thời gian thực, ta lựa chọn giải pháp sau: - Chọn máy tính nhúng có cấu hình mạnh mẽ hơn, có khả xử lý nhanh hoạt động ổn định Ví dụ Jetson Xavier NX, NVIDIA Jetson AGX Xavier phiên Jetson Nano - Tăng lượng liệu cho trình training, với việc kéo dài thời gian training, tăng cường chất lượng liệu để cải thiện khả dự đoán mơ hình - Bổ sung thêm thiết bị phần cứng hỗ trợ camera chất lượng cao, cảm biến tiếp xúc, giúp cải thiện độ xác dự đốn Ngồi ra, nên sử dụng xử lý hình ảnh loại cảm biến khoảng cách để giúp hệ thống phát tránh vật cản - Bổ sung kiến thức trí tuệ nhân tạo để tham khảo thêm mơ hình phức tạp deep learning, machine learning kỹ thuật tối ưu hóa để giải vấn đề - Bổ sung tính phát vật cản, nhận diện biển báo để giúp hệ thống tự động điều khiển xe xác an tồn Tổng hợp lại, để nâng cao hiệu suất độ xác hệ thống xe tự hành đồ án, nên cân nhắc tổng thể giải pháp tùy thuộc vào nguồn lực, yêu cầu kế hoạch phát triển dự án để lựa chọn giải pháp phù hợp 118 TÀI LIỆU THAM KHẢO Thorpe, C., Herbert, M., Kanade, T., & Shafter, S “Toward autonomous driving: the cmu navlab ii architecture and systems” IEEE Expert, pp 44-52, 1991 Broggi, A., Bertozzi, M., & Fascioli, A “Argo and the millemiglia in automatico tour” IEEE Intelligent Systems and their Applications, pp 55-64, 1991 Gregor, R., Lutzeler, M., Pellkofer, M., Siedersberger, K.-H., & Dickmanns, E D “Ems-vision: A perceptual system for autonomous vehicles” IEEE Transactions on Intelligent Transportation Systems, pp 48-59, 2002 Buehler, M., Iagnemma, K., & Singh, S “The 2005 DARPA grand challenge: the great robot race”, Vol 36,Spinger, 2005 Thrun, S., Montemerlo, M., Dahlkamp, H., Stavens, D., Aron, A., Diebel, J., Fong, P., Gale, J., Halpenny, M., & Hoffmann, G “Stanley: The robot that won the darpa grand challenge” Journal of Field Robotics, pp 661-692, 2006 Buehler, M., Iagnemma, K., & Singh, S (2009) The DARPA urban challenge: autonomous vehicles in city traffic, Vol 56 springer Urmson, C., Anhalt, J., Bagnell, D., Baker, C., Bittner, R., Clark, M., Dolan, J., Duggins, D., Galatali, T., & Geyer, C “Autonomous driving in urban environments: Boss and the urban challenge” Journal of Field Robotics, pp 425–466, 2008 Montemerlo, M., Becker, J., Bhat, S., Dahlkamp, H., Dolgov, D., Ettinger, S., Haehnel, D., Hilden, T., Hoffmann, G., & Huhnke, B “Junior: The stanford entry in the urban challenge” Journal of Field Robotics, pp 569- 597, 2008 Bacha, A., Bauman, C., Faruque, R., Fleming, M., Terwelp, C., Reinholtz, C., Hong, D., Wicks, A., Alberi, T., & Anderson, D “Odin: Team victortango’s entry in the darpa urban challenge” Journal of Field Robotics, pp 467- 492, 2008 10 L.-Y J P.-L H & B.-C W Yu-Kuen Tsai, “Implementation of autonomous vehicles with the hough transform and fuzzy control”, SICE Annual Conference, 2007 119 11 A K R C S M Vijay Badrinarayanan, “SegNet: A Deep Convolutional EncoderDecoder Architecture for Image Segmentation”, arXiv: 1511.100561v3, 2016 12 V Shrimali, ""learnopencv," [Online]," 2019 [Online] Available: [Online] Available: https://learnopencv.com/pytorch-for-beginners-basics/ 13 N Thoại, "Machine learning gì?," 2015 https://longvan.net/machine-learning-la-gi-ung-dung-cua-machine-learning.html 14 ITNAVI, "Deep learning gì? Khái quát kiến thức Deep learning," 2020 [Online] Avaliable: https://itnavi.com.vn/blog/deep-learning-la-gi 15 Saha, "A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way," 2018 [Online] Available: https://towardsdatascience.com/a-comprehensiveguide-toconvolutional-neural-networks-the-eli5-way-3bd2b1164a53 16 R Gandhi, “R-CNN, Fast R-CNN, Faster R-CNN, YOLO – Object Detection Algorithms”, Towards Data Science, 2018 17 S D R G a A F J Redmon, “You only look once: Unified, real-time object detection”, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2016 18 D A D E C S S R C.-Y F A C B Wei Liu, “SSD: Single Shot MultiBox Detector”, 2016 19 RangiLyu, “Nanodet -Plus [source code]”, 2022 [Online] Available: https://github.com/RangiLyu/nanodet 20 J G L W S S a X Z Tailin Liang, “Pruning and Quantization for Deep Neural Network Acceleration: A Survey”, arXiv:2101.09671, 2021 21 S L N a E A d S Rafael Padilla, “A Survey on Performance Metrics for ObjectDetection Algorithms”, in Proceedings of the IEEE conference on Systems, Signals and Image Processing, 2020 22 C.-Y a B A a L H.-Y M Wang, “Trainable bag-of-freebies sets new state-ofthe-art for real-time object detectors”, arXiv:2207.02696, 2022 23 P D Khanh, “Các thuật toán Object Detection”, 2019 [Online] Available: https://phamdinhkhanh.github.io/2019/09/29/OverviewObjectDetection.html 120 24 C C Y Y Z L S Z L Shifeng Zhang, “Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection”, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2020 25 C S H C T H Zhi Tian, “FCOS: Fully Convolutional One-Stage Object Detection”, arXiv:1904.01355v5, 2019 26 S L F W Z L J S Zheng Ge, “YOLOX: Exceeding YOLO Series in 2021”, arXiv: 2107.08430, 2021 27 S L N a E A d S Rafael Padilla, “A Survey on Performance Metrics for ObjectDetection Algorithms”, in Proceedings of the IEEE conference on Systems, Signals and Image Processing, 2020 28 G G P D a R G K He, “Mask R-CNN”, Proceedings of the IEEE International Conference on Computer Vision, 2017 29 Daily, M., Medasani, S., Behringer, R., & Trivedi, M “Self-Driving Cars Computer”, 50(12), 18–23, 2017 30 Kumaresan, "Senmatic Segmentation For Self Driving Car," 2018 [Online] Available: https://www.kaggle.com/datasets/kumaresanmanickavelu/lyft-udacity- challenge 31 C P T Dũng, “CEEC - team Unity”, 2021 [Online] Available: https://www.youtube.com/watch?v=FrFEhCfoPPQ&list=PLJ2iHFzHKEfkmYddz0Hi9bGJMXiLUD9L 32 121 PHỤ LỤC # Import socket module import cv2 # import numpy as np from bisenet_xcept_v12 import BiSeNet from lib import * from utils import colour_code_segmentation, reverse_one_hot, get_label_values import time from board import SCL, SDA import busio from adafruit_motor import servo from adafruit_pca9685 import PCA9685 import nanocamera as nano error_arr = np.zeros(5) # error_arr = torch.zeros(5) pre_t = time.time() MAX_SPEED = 40.0 SPEED_BRAKE = 45.0 SAFE_SPEED = 40.0 Ratio = 0.1 # -Edit -# def PID(error, p, i, d): #0.43,0,0.02 global pre_t # global error_arr 122 error_arr[1:] = error_arr[0:-1] error_arr[0] = error P = error*p delta_t = time.time() - pre_t #print('DELAY: {:.6f}s'.format(delta_t)) pre_t = time.time() D = (error-error_arr[1])/delta_t*d I = np.sum(error_arr)*delta_t*i angle = P + I + D if abs(angle)>25: angle = np.sign(angle)*25 return int(angle) color_encoding = [ ('sky', (128, 128, 128)), ('road', (128, 0, 0)), ('car', (192, 192, 128)), ] label_values = get_label_values(color_encoding) normalize = transforms.Compose([ transforms.ToTensor(), # transforms.Normalize((0.4990, 0.5106, 0.4905), (0.2247, 0.2226, 0.2270)), ]) device = 'cuda' criterion = nn.CrossEntropyLoss(reduction='mean', ignore_index=2) 123 model = BiSeNet(3, criterion= criterion).to(device) state_dict = torch.load("last_150.pth", map_location= torch.device(device))["model_state_dict"] model.load_state_dict(state_dict) model.eval() fps = [] def Control(angle, speed): pca.channels[1].duty_cycle = speed servo1.angle = angle def remove_small_contours(image): image_binary = np.zeros((image.shape[0], image.shape[1]), np.uint8) contours = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[0] mask = cv2.drawContours(image_binary, [max(contours, key=cv2.contourArea)], 1, (255, 255, 255), -1) image_remove = cv2.bitwise_and(image, image, mask=mask) return image_remove if name == " main ": camera = nano.Camera(flip=0, width=640, height=480, fps=30) print('CSI Camera is now ready') i2c_bus = busio.I2C(SCL, SDA) pca = PCA9685(i2c_bus) pca.frequency = 50 servo1 = servo.Servo(pca.channels[0]) 124 while True: try: ############################# Workspace ############################# image = camera.read() start = time.time() # image = cv2.imread('./images/8.png') image = image[120:, :600] image = cv2.resize(image, (160, 80)) image_ori = image image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) #new image = normalize(image).to(device) output = model(image.unsqueeze(0)) output = reverse_one_hot(output.squeeze(0)) output = np.array(output.cpu()) # end = time.time() # fps.append(1/(end - start)) # print(np.mean(fps)) # debug - delete when use show = colour_code_segmentation(output, label_values) show = remove_small_contours(show) cv2.imshow("orgi", image_ori) 125 cv2.imshow("output", show) cv2.waitKey(1) # PID Controller -# arr = [] height = 20 #18 Try 20 lineRow = output[height,:] for x, y in enumerate(lineRow): if y == 1: arr.append(x) if not arr: arr = [40, 120] Min = min(arr) Max = max(arr) center = int((Min+Max)/2) error = int(output.shape[1]/2)-center sendBack_angle = -PID(error, 0.35, 0, 0.05) sendBack_Speed = 65535 # -> 65535 Control(10, sendBack_Speed) except Exception as er: print(er) pass 126 S K L 0