Chương 1: Tổng quan đề tài Chương 2: Cơ sở lý thuyết đề tài Chương 3: Nội dung thực hiện Chương 4: Kết quả thực hiện Chương 5: Kết luận. CƠ SỞ LÝ THUYET DE TÀI 2. Stream Socket và Datagram Socket 2. Socket là gi? Socket là giao diện lập trình ứng dụng mạng được dùng dé truyén và nhận dữ liệu trên Internet.
Giữa hai chương trình chạy trên mạng cần có một liên kết giao tiếp hai chiều, hay còn gọi là two-way communication dé kết nối 2 process trò chuyện với nhau. Socket hoạt động trên cả giao thức TCP và UDP và được định nghĩa bằng công thức ( 2.1), với Portnumber ở đây chính là Port logic của máy tính (16 bits = 65535 ports). Socket = IP Address + Portnumber (2.1) Application Layer eS Application ĐT KHEE —— Presentation Layer Session Layer re b Session Tr: t Lay Transport a ae a Network Layer NT Data Link =—— Data Link Layer Physical Layer — Physical Hình 2.1: Mô hình OSI [13] Có 2 loại Socket chính ma ta cần quan tâm trong đề tài này bao gồm: - Stream Socket - Datagram Socket 2. Stream Socket Stream Socket hay còn gọi là socket hướng kết nối, là socket hoạt động thông qua giao thức TCP (Transmission Control Protocol).
Stream Socket chỉ hoạt động khi server và client đã kêt nôi với nhau, ta có thê thay miêu ta của giao thức ở Hình 2. CLIENT SERVER Listen{) Close) Close[] Hình 2.2: Cấu trúc Stream Socket Ưu điểm: - _ Dữ liệu truyền đi được đảm bảo truyền đến đúng nơi nhận, đúng thứ tự với thời gian nhanh chóng. - Mỗi thông điệp gửi đi đều có xác nhận trả về dé thông báo cho người dùng thông tin về quá trình truyền tải. Nhược điểm: - Gitta máy chủ và máy nhận chỉ có 1 IP, nên khi kết nối, 1 máy phải chờ may còn lai chap nhận kết nôi.
Datagram Socket Datagram Socket hay còn gọi là socket không hướng kết nối, là socket hoạt động thông qua giao thức UDP ( User Datagram Protocol). Datagram Socket có thể hoạt động ké cả khi không có sự thiết lập kết nối giữa 2 máy với nhau, ta có thé thấy miêu tả của giao thức ở Hình 2. CUENT SERVER Bind{) ee Retvfrom|] Hình 2.3: Cấu trúc Datagram Socket Ưu điểm: - Qua trình kết nối và truyền tai thông tin đơn giản, không cần thực hiện nhiều thao tác. - _ Thời gian truyền tải dữ liệu cực nhanh.
Nhược điểm: - Qua trình truyền thông tin không đảm bảo tin cậy, thông tin có thé truyền sai thứ tự hoặc bị lặp 11 2. Giao thức MQTT 2. Dinh nghĩa MQTT (Message Queuing Telemetry Transport) [14] là giao thức truyền thông điệp (message) theo mô hình publish/subscribe (cung cấp / thuê bao), được sử dung cho các thiết bị loT với băng thông thấp, độ tin cậy cao và khả năng được sử dụng trong mạng lưới không ồn định. Nó dựa trên một Broker (tạm dich là “Máy chủ môi giới”) “nhẹ” (khá ít xử lý) và được thiết kế có tính mở (tức là không đặc trưng cho ứng dụng cụ thể nào), đơn giản và dễ cài đặt.
Một số ưu điểm nồi bật của MQTT như: băng thông thấp, độ tin cậy cao va có thể sử dụng ngay cả khi hệ thống mạng không ồn định, tốn rất it byte cho việc kết nối với server và connection có thê giữ trạng thái open xuyên suốt, có thể kết nối nhiều thiết bị (MQTT client) thông qua một MQTT server (broker). Bởi vì giao thức này sử dụng băng thông thấp trong môi trường có độ trễ cao nên nó là một giao thức lý tưởng cho các ứng dụng IoT va sử dụng như một bộ điều phối thông tin tin cậy trong các hệ thống lớn như xe tự hành. Kiến trúc thành phần Kiến trúc thành phần của giao thức MQTT được mô tả chỉ tiết trong Hình 2. 12 Thành phần chính của MQTT là Client (Publisher/Subscriber), Server (Broker), Sessions (tạm dịch là Phiên làm việc), Subscriptions va Topics.
MỌTTT Client (Publisher/Subscriber): Clients sẽ subscribe một hoặc nhiều topics để gửi và nhận thông điệp từ những topic tương ứng. MQTT Server (Broker): Broker nhận những thông tin subscribe (Subscriptions) từ client, nhận thông điệp, chuyên những thông điệp đến các Subscriber tương ứng dựa trên Subscriptions từ client. Topic: Có thé coi Topic là một hàng đợi các thông điệp, và có săn khuôn mẫu dành cho Subscriber hoặc Publisher. Một cach logic thì các topic cho phép Client trao đồi thông tin với những ngữ nghĩa đã được định nghĩa sẵn.
Ví dụ: Dữ liệu cảm biến nhiệt độ của một tòa nhà. Session: Một session được định nghĩa là kết nối từ client đến server. Tất cả các giao tiép giữa client và server đêu là 1 phân của session. 13 - Subscription: Không giống như session, subscription về mặt logic là kết nối từ client đến topic.
Khi đã subscribe một topic, Client có thê nhận/gửi thông điệp (message) với topIc đó. Mô hình Pub/Sub - Client: o Publisher : Nơi gửi thông điệp o Subscriber : Nơi nhận thông điệp - Broker : May chủ môi giới Trong đó Broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ Client (Publisher/Subscriber). Nhiệm vụ chính của Broker là nhận thông điệp (message) từ Publisher, xếp vào hàng đợi rồi chuyên đến một địa điểm cụ thể. Nhiệm vụ phụ của Broker là nó có thể đảm nhận thêm một vài tính năng liên quan tới quá trình truyền thông như: bảo mat message, lưu trữ message, logs,.
Client thì được chia thành hai nhóm là Publisher va Subscriber. Client chi làm ít nhất một trong 2 việc là publish các thông điệp (message) lên một/nhiều topic cụ thể hoặc subscribe một/nhiêu topic nào đó đê nhận message từ topic nay. Kiến trúc Entity Components System Entity Components System - ECS [16] là một kién tric phan mềm được thiết kế theo cầu tric DOD (Thiết kế hướng dit liệu — Data Driented Design) thay vì hướng đối tượng - OOP (Object-oriented programming) trong các ứng dụng thông thường khác. Kiến trúc này được tông hợp lên từ 3 thành phần chính: - Component: Chia tính chat, đặc điểm của một đối tượng hay còn gọi là đữ liệu của đối tượng đó và thường được thêm vào đối tượng để hỗ trợ thực hiện hành vi.
Một component được thêm vào đối tượng nó sẽ thể hiện một tính chất duy nhất, một component tự nó sẽ không có hành vi. 14 - System: Là những module con, hoạt động độc lập với nhau, xử lý một “behaviour” nào đó trong hệ thống. Có thé ké đến như các System tìm đường đi, System nhận diện vat thê. - Entity: Entity như là một thực thé được triển khai dưới dạng liên kết duy nhất của các components.
Entity sẽ không có dữ liệu hay hành vị thực tế nào, nó chỉ là nơi liên kết các tính chất của component tới các System dé hỗ trợ một hành vi nào đó. Về cơ bản, ECS giúp ta phân tách chương trình thành các phần riêng lẻ có thê chạy độc lập với nhau. Mỗi System có thé sử dụng một hoặc nhiều Component và ta có thể thay đôi thêm bớt bất cứ Component nào ta muốn mà không gây ảnh hướng tới các System khác. Ví dụ, trong đề tài này, các chương trình liên quan đến tác vụ nhận dạng hoặc lập lịch có thể được tách thành nhiều System nhỏ khác chạy độc lập với nhau, chúng có thé liên kết với nhau thông qua các Component chứa dữ liệu của toàn bộ hệ thống.
Bằng cách này, ta có thê thiết kế một hệ thống chạy đa luồng và đạt tới khả năng đa nhiệm. Kinematic Bicycle model Mô hình động học của phương tiện thường được sử dụng trong các ứng dụng liên quan đến Motion Planning [17], [18]. Khi áp dụng các mô hình động hoc của xe trong lập lịch, ta có thể biết được sự thay đôi trạng thái của xe mỗi khi đánh lái hoặc thay đổi tốc độ. Các thay đối này có ý nghĩa như việc dự đoán trước tương lai của xe vậy.
Ta có thé đưa vào day giá trị của vận tốc, góc lái và cho mô hình vẽ lên chuyên động của xe. Đối với các mô hình xe 4 bánh, ta có thé làm đơn giản hoá nó lại bằng cách kết hợp 2 bánh trước và 2 bánh sau lại giống Hình 2.5, ta sẽ được mô hình xe hai bánh mang tên Kinematic Bicycle model và phải thoả những điều kiện sau: - Phuong tiện hoạt động trên mặt phăng 2D. 15 - Gia sử toan bộ trọng lượng của phương tiện được đặt ở trọng tâm. - Chico bánh trước của xe mới được bẻ hướng.5: Chuyên mô hình xe 4 bánh về 2 bánh Mô hình Kinematic bicycle model này còn được gọi với cái tên là Mô hình bánh lái trước (Font wheel steering model) vì hướng của bánh xe tác động trực tiếp tới hướng của cả xe.
Và khi nhìn vào Hình 2.6, ta có thé viết được phương trình của mô hình này như sau: X =Vcos(w +8) ( 2.2c) Với B là góc trượt tai trọng tâm: 16 tant) L, bn B = arctan ( ;+h (2.2d) Trong đó: - V: vận tốc phương tiện - — X: Toạ độ x - Y: Toa độ y - L: Chiều dai phương tiện - ww: Hướng của phương tiện - ¢: Góc đánh lái 2. Nó được thiết kế dé hoạt động theo kiểu bổ sung với các khung đảo tạo như TensorFlow, Caffe, PyTorch, MXNet, v. 17 Nó tập trung đặc biệt vào việc chạy một mạng đã được đảo tạo một cách nhanh chóng và hiệu quả trên GPU nhằm mục đích tạo ra một kết quả (một quy trình được gọi ở nhiều nơi khác nhau như cho điểm, phát hiện, hồi quy hoặc suy luận). Một số khuôn khổ dao tạo như TensorFlow đã tích hợp TensorRT để nó có thể được sử dụng dé tăng tốc suy luận trong khuôn khổ.
Ngoài ra, TensorRT có thé được sử dung như một thư viện trong ứng dụng người dùng. Nó bao gồm các trình phân tích cú pháp dé nhập các mô hình hiện có từ Caffe, ONNX hoặc TensorFlow và các API C++ và Python dé xây dựng các mô hình theo chương trình. Trained TheFET TensorRT Neural Optimizer Runtime Sar Automotive Data center Jetson Drive Tesla Hình 2.7: Ứng dụng của TensorRT 18 Hình 2.7 cho thấy TensorRT là một công cụ tối ưu hóa suy luận mạng thần kinh hiệu suât cao và công cụ thời gian chạy đê triên khai sản xuât. Mô hình YOLOP Trong bài toán nhận dạng cho xe tự hành thường có các các tác vụ như: - Nhận diện làn đường.
- Phat hiện vật. - Phat hiện vạch kẻ đường. Các giải thuật hoặc mô hình đã được phát triển mạnh dé việc nhận diện này trở lên nhanh hơn với độ chính xác cao hơn. Lấy một vài ví dụ như Mask R-CNN [23]va YOLOR [24] được dùng trong phát hiện vật.
Hoặc các mô hình như UNet [25] và PSPNet [26] cho các tác vụ phân đoạn ảnh làn đường.