Chương 1: Tổng quan đề tài: Giới thiệu lý do chọn đề tài và mục tiêu hướng đến. Cập nhật tình hình nghiên cứu trong và ngoài nước cũng như phương pháp nghiên cứu, giới hạn đề tài và bố cục cho đề tài. Chương 2: Cơ sở lý thuyết: Trình bày ngắn gọn và rõ ràng các linh kiện được sử dụng trong mô hình, các cơ sở lý thuyết liên quan, mô tả đặc điểm của các phần mềm thiết kế hệ thống. Chương 3: Thiết kế hệ thống: Từ yêu cầu của đề tài tính toán để lựa chọn các linh kiện, xây dựng sơ đồ khối và phân tích các chức năng của từng khối trong hệ thống.
Mô tả hoạt động của hệ thống. Chương 4: Kết quả và nhận xét đánh giá: Trình bày kết quả và hình ảnh thực tế của hệ thống. Phân tích kết quả thực tế và đưa ra nhận xét so với mục tiêu đề ra ban đầu. Chương 5: Kết luận và hướng phát triển: Dựa vào các kết quả đạt được từ chương 4, đưa ra kết luận về những việc đã làm được và chưa làm được của đề tài.
Từ đó đưa ra các hướng để cải thiện dự án và nâng cao tính ứng dụng để đưa dự án đi vào thực tiễn. 6 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2. GIỚI THIỆU VỀ NỀN TẢNG ROS ROS là một nền tảng mã nguồn mở (open-sourced) cung cấp cho người dùng các công cụ cũng như các thư viện để xây dựng các ứng dụng liên quan đến robot [7]. ROS cung cấp các tính năng như thực hiện các tác vụ (task) song song, trao đổi dữ liệu giữa các tác vụ, quản lý dữ liệu,.
Việc sử dụng nền tảng ROS mang lại rất nhiều thuận lợi cho người dùng nhờ các công cụ chuẩn hỗ trợ việc giao tiếp giữa các tác vụ được dễ dàng hơn cũng như sự hỗ trợ của các thư viện có sẵn cho nhiều tác vụ. Hơn thế nữa, khi dùng ROS, người dùng còn có sự hỗ trợ của một cộng đồng vô cùng lớn mạnh, giúp việc giải quyết các thắc mắc và các vấn đề gặp phải được dễ dàng và thuận lợi hơn trong quá trình làm việc [7]. Mô hình ROS có thể được chia thành ba phần: Filesystem, Computation Graph, và Community [8]. ➢ Tầng Filesystem: là tầng nền tảng cung cấp môi trường cho việc thực hiện giao tiếp truyền nhận dữ liệu, xử lý các dữ liệu trong hệ thống.
Trong đó các dữ liệu sẽ được quy định về cấu trúc của dữ liệu truyền nhận trong phần message (msg), các lệnh yêu cầu truy cập và phản hồi của các services trong ROS sẽ được định nghĩa trong phần service (src). Quan trọng nhất, để cho việc thực thi và cấu hình cho hệ thống thì ta không thể thiếu được phần Packages nơi cung cấp các dịch vụ để thực hiện các chức năng trên. ➢ Tầng Computation Graph: nơi người dùng có sự tương tác và làm việc trực tiếp nhiều nhất. Cơ bản thì tầng Compution Graph bao gồm các thành phần cơ bản sau: Nodes, Master, Messages, Topics và Bags, trong đó: • Nodes: là nơi thực hiện các công việc về thu thập dữ liệu, tính toán, xử lý các dữ liệu.
Một hệ thống khi được xây dựng sẽ bao gồm nhiều node khác nhau thực hiện các chức năng nhất định. Ví dụ một trong hệ thống xây dựng chất lượng mặt đường sẽ có node thực hiện việc thu thập các giá trị thu được từ cảm biến, một node khác sẽ đảm nhiệm việc tính toán các dữ liệu đã thu được. • Master: cung cấp tên đăng ký và tra cứu cho các node. Đây là nơi để thực hiện các kết nối giữa các node trong hệ thống với nhau để có thể thực hiện việc 7 trao đổi thông tin giữa các node với nhau.
Nếu không có Master thì các node sẽ không có sự liên kết và hoạt động rời rạc, không đem lại kết quả cho hệ thống. • Messages: là kiểu cấu trúc của dữ liệu mà người dùng muốn định nghĩa cho thông tin để giao tiếp giữa các node, ví dụ như string, IMU, GPS,. • Topics: Trong quá trình trao đổi thông tin giữa các Node, Messages được định tuyến theo hai kiểu trong hệ thống bao gồm: Publisher (gửi thông tin) và Subscriber (đăng ký nhận thông tin). Một node thực hiện việc gửi các messages bằng cách đưa các messages vào trong các topic, tên các topic thường được đặt theo nội dung của messages.
• Bags: là nơi lưu trữ các thông tin từ ROS messages, đây là một tính năng quan trọng để lưu trữ các dữ liêu, chẳng hạn như dữ liệu cảm biến thu được. 1: Giao tiếp giữa các Node trong ROS.1 mô tả quá trình giao tiếp giữa 2 node trong ROS, đầu tiên để gửi thông tin đi thì Publisher Node thực hiện đăng ký tên topic với Ros Master, sau đó ROS Master có nhiệm vụ cung cấp thông tin tên topic này đến với Subscriber Node. Khi đã nắm thông tin về topic, Subscriber Node thực hiện yêu cầu gửi thông tin message đến Publisher Node. Khi nhận được yêu cầu Publisher thực hiện gửi các message vào topic đã được đăng ký, sau đó Subscriber Node sẽ nhận các message này từ topic đã đăng ký và được thông báo từ ROS Master.
➢ Tầng Community: là các nguồn tài nguyên bao gồm phần mềm và các kiến thức được cộng đồng phát triển ROS chia sẻ với nhau. CÁC CHUẨN GIAO THỨC 2. Giao thức truyền thông CAN 2. Tổng quan Ngày nay nhiều thiết bị điện tử được triển khai trên các phương tiện hiện đại, với mục đích tạo ra sự an toàn và thoải mái cho người điều khiển phương tiện cũng như giảm thiểu lượng khí thải tạo ra.
Tuy nhiên, điều này đặt ra vấn đề về việc cần có nhiều đường dây kết nối cũng như nhiều đầu nối hơn để các thiết bị trên hệ thống có thể trao đổi thông tin với nhau, lúc này những yếu tố về chi phí vật liệu, thời gian sản xuất và độ tin cậy của dữ liệu bắt đầu có nhiều sự ảnh hưởng. Vì vậy để giải quyết vấn đề trên, mạng truyền thông CAN (Control Area Network) đã được ra đời, việc sử dụng mạng CAN đã giúp thay thế được các kết nối điểm – điểm trong hệ thống và chuyển sang sử dụng một đường truyền thông chung kết nối duy nhất liên kết tất cả các hệ thống lại với với nhau gọi là CAN_bus và trao đổi thông tin trên CAN_bus này. 2: Giao thức truyền thông CAN. Trong mạng CAN các nút truyền dữ liệu với nhau thông qua 2 dây CAN_H và CAN_L các dữ liệu truyền nhận sẽ được mã hóa và giải mã riêng theo các quy luật của mạng CAN.
Tốc độ truyền dữ liệu cao lên đến 1Mbps với khoảng cách truyền lên đến 40m cho cặp dây xoắn, việc xoắn của cặp dây CAN_H và CAN_L giúp cho dữ liệu giảm được nhiễu điện từ EMI một cách đáng kể trong quá trình truyền [10]. Nguyên lý hoạt động Giao thức CAN hoạt động dựa theo khái niệm “Carrier Sense Multiple Access with Arbitration on Message Priority” hay còn gọi là CSMA/AMP [11]. Khái niệm trên có 2 phần cần được hiểu gồm CSMA và AMP trong đó CSMA có nghĩa là trước khi tín hiệu được truyền lên đường truyền thì cần kiểm tra xem đường truyền có đang trống và không còn có dữ liệu nào khác đang được truyền trên đó không, còn AMP có nghĩa là các tin nhắn được truyền sẽ có độ ưu tiên khác nhau và các tin nhắn có độ ưu tiên lớn hơn sẽ có thể được xử lý sớm hơn. Tóm lại, các dữ liệu chỉ được truyền trên đường truyền CAN_Bus nếu đường truyền đang trống, không có dữ liệu đang truyền trên đó và khi các dữ liệu truyền cùng một lúc thì dữ liệu nào có độ ưu tiên cao hơn sẽ được truyền đi trước, độ ưu tiên sẽ được tính dựa theo số bit dominant (bit 0) trong trường trạng thái của dữ liệu.
3: Ví dụ cho quá trình hoạt động trên mạng CAN [9].3 mô tả ví dụ cụ thể cho quá trình truyền khi có đồng thời ba dữ liệu từ ba Node khác nhau cùng truyền một lúc thì lúc này sẽ dựa vào độ ưu tiên của mỗi dữ liệu mà thứ tự truyền của dữ liệu sẽ được thiết lập. Tại đây ta thấy được Node B có độ ưu tiên thấp cao nhất nên sẽ bị cho vào hàng chờ vì có bit recessive cao hơn so với hai Node còn lại, tiếp tục so sánh hai Node còn lại cho ra kết quả bit Node C lại có bit recessive (bit 1) cao hơn so với Node A nên sẽ có độ ưu tiên thấp hơn Node A. Từ kết quả so sánh trên ta có thứ tự ưu tiên trên đường truyền CAN_Bus lần lượt sẽ là Node A, Node B và Node C. 10 Sau khi các dữ liệu đã được truyền trên đường truyền dữ liệu thì sẽ mang một mã ID khác nhau tương ứng với dữ liệu đang mang.
Các Node khi nhận dữ liệu sẽ dựa trên các ID này để kiểm tra xem đây có đúng là dữ liệu đã được yêu cầu chưa, nếu ID chính xác thì sẽ tiến hành nhận dữ liệu để xử lý, trường hợp ID sai sẽ tiếp tục quá trình dò tìm dữ liệu có mã ID đúng theo như yêu cầu. Phân loại khung CAN Khung CAN được phân thành 5 loại [10], bao gồm: • Khung dữ liệu (Data Frame). • Khung yêu cầu (Remote Frame). • Không gian liên khung (Inter-frame Space).
➢ Khung dữ liệu Hình 2. 4: Định dạng khung dữ liệu tiêu chuẩn [9]. Khung dữ liệu được sử dụng khi Node có nhu cầu truyền dữ liệu lên đường truyền CAN, trong hình 2.4 ở trên mô tả chi tiết các thành phần cấu thành nên một khung dữ liệu: • Bắt đầu một khung dữ liệu sẽ là bit SOF, bit này mặc định sẽ luôn có giá trị là 0 (bit dominant). • Tiếp theo sau sẽ là trường trạng thái của khung, nơi đây quy định mức độ ưu tiên cho dữ liệu trên đường truyền, bao gồm 2 phần: phần đầu chiếm 11 bit quy 11 định mã ID để định danh dữ liệu trên đường truyền, phần sau gồm một bit để thể hiện khung hiện tại là khung dữ liệu hay là khung yêu cầu (đối với khung dữ liệu giá trị bit luôn là 0).
• Trường tiếp theo là trường điều khiển tại đây sẽ quy định khung dữ liệu hiện tại đang là khung CAN cơ bản hay khung CAN mở rộng bằng bit IDE, đối với khung CAN cơ bản thì giá trị luôn bằng bit luôn bằng 0, số lượng byte chứa dữ liệu trong tin nhắn sẽ được thể hiện trong 4 bit cuối cùng của trường (0 – 8byte). • Trường dữ liệu có độ dài được xác định bởi DLC ở trên (0, 8, 16,…, 56, 64) tại đây sẽ chứa thông tin về giá trị dữ liệu của tin nhắn đang mang.