Bối cảnh và vấn đề nghiên cứu
Sự phát triển của khoa học kỹ thuật và công nghệ tự động hóa đã thúc đẩy quá trình nghiên cứu và ứng dụng các phương tiện tự hành trong đời sống cũng như sản xuất. Trong lĩnh vực ô tô và robot di động, các tính năng của hệ thống hỗ trợ lái xe nâng cao (ADAS) như kiểm soát hành trình thích ứng (ACC), hỗ trợ giữ làn đường (LKAS), phanh khẩn cấp tự động (AEB), cảnh báo điểm mù (BSM) và cảnh báo va chạm phía trước (FCW) đã được nhiều tập đoàn công nghệ triển khai. Tuy nhiên, các hệ thống thương mại hiện nay phần lớn vẫn đòi hỏi sự giám sát trực tiếp từ con người, chưa đạt đến mức độ tự hành hoàn toàn trong mọi điều kiện vận hành thực tế.
Đối với các nhà nghiên cứu và sinh viên kỹ thuật, việc phát triển một hệ thống xe tự hành từ đầu thường gặp nhiều rào cản về chi phí phần cứng, rủi ro thử nghiệm và độ phức tạp của thuật toán điều hướng. Để giải quyết vấn đề này, việc khai thác nền tảng mã nguồn mở Robot Operating System (ROS) kết hợp với các thuật toán định vị và điều hướng tiêu chuẩn mang lại giải pháp tối ưu hóa chi phí và rút ngắn chu kỳ phát triển.
Đồ án tốt nghiệp "Ứng dụng ROS Navigation Stack cho Điều hướng tự động và Tránh vật cản trên xe tự hành vi sai" do sinh viên Trương Khương Duy thực hiện dưới sự hướng dẫn của ThS. Lê Thị Thanh Hoàng tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh tập trung vào các nhiệm vụ và mục tiêu cụ thể:
- Nghiên cứu tổng quan về hệ điều hành robot mã nguồn mở Robot Operating System (ROS).
- Nghiên cứu và khai thác công cụ trực quan hóa không gian ba chiều RViz trong môi trường ROS.
- Tính toán vị trí và tư thế của xe trong không gian bằng gói định vị
robot_localization kết hợp bộ lọc Kalman mở rộng (Extended Kalman Filter - EKF).
- Nghiên cứu cấu trúc và nguyên lý vận hành của gói điều hướng ROS Navigation Stack.
- Thực hiện mô phỏng robot di chuyển đến vị trí mục tiêu định trước (Goal Location) trong môi trường ảo.
- Chuyển đổi và triển khai thuật toán từ mô hình mô phỏng sang mô hình phần cứng robot hai bánh vi sai trong môi trường thực tế.
Đối tượng nghiên cứu của đề tài là mô hình xe tự hành hai bánh vi sai có kích thước vật lý 30 x 25 x 20 cm. Phạm vi nghiên cứu về mặt không gian được giới hạn trong môi trường mặt phẳng trong nhà với bản đồ định sẵn, chưa mở rộng ra các dạng địa hình phức tạp hoặc nhiều vật cản biến động ngoài trời. Thời gian thực hiện đồ án diễn ra từ ngày 23/01/2024 đến ngày 30/06/2024.
Cơ sở lý thuyết và phương pháp
Cơ sở lý thuyết của đồ án dựa trên sự kết hợp giữa mô hình động học xe vi sai, lý thuyết ước lượng trạng thái ngẫu nhiên và kiến trúc phần mềm phân tán:
- Hệ điều hành Robot (ROS): ROS hoạt động theo kiến trúc phân tán dựa trên các nút xử lý (Nodes) giao tiếp thông qua các cơ chế: Topics (truyền thông tin một chiều không đồng bộ theo cơ chế publish/subscribe), Services (truyền thông hai chiều đồng bộ dạng request/response), Actions (dành cho các tác vụ kéo dài có phản hồi tiến độ và khả năng hủy bỏ), và Parameter Server (quản lý tham số cấu hình hệ thống).
- Hệ tọa độ chuẩn (tf tree): Cấu trúc phân cấp các khung tham chiếu trong ROS đảm bảo việc chuyển đổi dữ liệu không gian nhất quán, bao gồm khung tọa độ bản đồ cố định (
map), khung tọa độ đo hình (odom), tâm đế robot trên mặt phẳng (base_footprint), tâm thân robot (base_link), và tâm của cảm biến quét laser (laser_link).
- Mô hình động học bánh xe vi sai (Differential Drive Kinematics): Robot sử dụng hai bánh dẫn động độc lập và bánh xe tự do (caster) để giữ thăng bằng. Quãng đường di chuyển của từng bánh ($D_L, D_R$) được tính qua số vòng quay ($N_L, N_R$) và bán kính bánh xe $r$:
$$D_L = N_L \cdot 2\pi r, \quad D_R = N_R \cdot 2\pi r$$
Sự dịch chuyển trung bình $D_{avg}$ và góc quay thay đổi $\Delta\theta$ phụ thuộc vào khoảng cách giữa hai bánh xe $L$:
$$D_{avg} = \frac{D_L + D_R}{2}, \quad \Delta\theta = \frac{D_R - D_L}{L}$$
Vị trí toàn cục mới $(x_{new}, y_{new})$ được cập nhật thông qua hàm lượng giác của góc hướng $\theta$.
- Bộ lọc Kalman mở rộng (EKF): Triển khai thông qua nút
ekf_localization_node thuộc gói robot_localization nhằm xử lý các mô hình phi tuyến tính bằng phép xấp xỉ tuyến tính qua khai triển chuỗi Taylor bậc một và ma trận Jacobian ($G_t, H_t$). Quá trình vận hành gồm hai pha: Dự đoán trạng thái kế tiếp dựa trên tín hiệu điều khiển và ma trận hiệp phương sai sai số, sau đó Cập nhật trạng thái thông qua việc tính toán Kalman Gain và hiệu chỉnh độ lệch giữa giá trị đo đạc từ cảm biến với hàm quan sát dự đoán.
- ROS Navigation Stack và thuật toán TEB (Timed Elastic Band): Khung điều hướng tích hợp nút điều phối
move_base, bản đồ chi phí tĩnh (global_costmap), bản đồ chi phí động (local_costmap), bộ định vị xác suất thích nghi (amcl), cùng thuật toán lập kế hoạch quỹ đạo cục bộ TEB. Thuật toán TEB mô hình hóa đường đi như một dải đàn hồi chịu các lực biến dạng và ràng buộc về động học, vị trí vật cản nhằm tối ưu hóa thời gian thực thi theo thời gian thực.
- Bộ điều khiển PID: Sử dụng ba thành phần tỉ lệ (P), tích phân (I), vi phân (D) nhằm triệt tiêu sai số điều khiển vận tốc cho từng động cơ truyền động độc lập.
Phương pháp nghiên cứu thực tế bao gồm phương pháp mô hình hóa toán học động học và động lực học; phương pháp mô phỏng phần mềm trên công cụ trực quan hóa RViz; phương pháp thiết kế cơ khí 3D; và phương pháp thực nghiệm kiểm chứng trên mô hình vật lý. Nguồn dữ liệu thực nghiệm đầu vào được thu thập từ bộ mã hóa xung (encoder) gắn trên trục động cơ, cảm biến đo lường quán tính 9 bậc tự do IMU948, và cảm biến quét laser 360 độ RPLIDAR A1.
Thiết kế và triển khai hệ thống
Hệ thống xe tự hành hai bánh vi sai được thiết kế với cấu trúc phần cứng và phần mềm phân tầng rõ rệt, kết hợp giữa bộ xử lý nhúng trung tâm và vi điều khiển ngoại vi.
+---------------------------------------------------------+
| JETSON NANO B01 |
| (ROS, Navigation Stack, robot_localization, move_base) |
+----------------------------+----------------------------+
^ | ^
| USB | Serial/UART | UART/USB
v v v
+---------------+ +---------------+ +---------------+
| RPLIDAR A1 | |ARDUINO UNO R3 | | IMU948 |
| (Quét 360 độ) | | (Đọc encoder, | | (Gia tốc, góc)|
+---------------+ | PID động cơ)| +---------------+
+-------+-------+
| PWM / Hướng
v
+---------------+
| Driver L298N |
+-------+-------+
| Công suất
v
+---------------+
| 2x Động cơ |
| GA25-370 |
+---------------+
Kiến trúc phần cứng
Cấu trúc phần cứng được chia làm 5 khối chức năng chính:
- Khối xử lý trung tâm (NVIDIA Jetson Nano B01): Đóng vai trò là bộ não tính toán chính của hệ thống. Bo mạch chịu trách nhiệm thu nhận dữ liệu từ LIDAR và IMU, thực thi thuật toán EKF định vị, xử lý bản đồ chi phí, tính toán quỹ đạo toàn cục và cục bộ trong Navigation Stack, đồng thời trực quan hóa qua giao diện RViz.
- Khối điều khiển ngoại vi (Arduino Uno R3): Giao tiếp với Jetson Nano thông qua kết nối nối tiếp (Serial). Khối này thực hiện nhiệm vụ đo đạc số xung từ bộ mã hóa encoder, tính toán sơ bộ odometry, tiếp nhận lệnh vận tốc đặt (
cmd_vel), thực thi giải thuật PID vận tốc và xuất tín hiệu điều khiển độ rộng xung (PWM) cùng chiều quay đến mạch công suất.
- Khối cảm biến: Gồm cảm biến laser RPLIDAR A1 đo khoảng cách 360 độ phục vụ phát hiện vật cản và xây dựng bản đồ; cảm biến quán tính IMU948 đo gia tốc tuyến tính và vận tốc góc nhằm bù sai số trượt; hai bộ encoder quang học đo trực tiếp số vòng quay của bánh xe.
- Khối công suất và cơ cấu chấp hành: Bao gồm mạch cầu H L298N điều khiển hai động cơ DC giảm tốc GA25-370.
- Khối nguồn: Nguồn điện của toàn xe sử dụng khối pin lithium-ion NCR 18650 dung lượng 3400mAh, đi kèm mạch hạ áp công suất lớn Module Buck DC-DC 300W 20A để cung cấp điện áp ổn định cho Jetson Nano (5V/4A), Arduino Uno và động cơ.
- Kết cấu cơ khí: Thân xe được thiết kế trên phần mềm SolidWorks với cấu trúc hai tầng độc lập. Tầng 1 là nơi bố trí hệ thống truyền động, động cơ, pin sạc, mạch nguồn và driver L298N. Tầng 2 được bố trí Jetson Nano, bo mạch Arduino Uno R3 và cảm biến RPLIDAR A1 đặt tại vị trí cao nhất nhằm đảm bảo tầm quét 360 độ không bị che khuất.
| Thành phần phần cứng |
Model / Thông số kỹ thuật |
Vai trò trong hệ thống |
| Máy tính nhúng |
NVIDIA Jetson Nano B01 (CPU 4 nhân ARM Cortex-A57, GPU Maxwell 128 nhân, RAM 4GB) |
Khối xử lý trung tâm, chạy hệ điều hành ROS và Navigation Stack |
| Vi điều khiển |
Arduino Uno R3 (ATmega328P) |
Giao tiếp phần cứng cấp thấp, đọc xung encoder và điều khiển PID động cơ |
| Cảm biến khoảng cách |
RPLIDAR A1M8 (Quét laser 360°, dải đo 0.15 - 12m, tần số 5Hz, sai số ±3cm) |
Quét môi trường xung quanh, cung cấp dữ liệu cho bản đồ chi phí và AMCL |
| Cảm biến quán tính |
IMU948 |
Đo đạc gia tốc và tốc độ góc xoay theo 3 trục |
| Động cơ chấp hành |
2x DC GA25-370 có tích hợp encoder |
Dẫn động độc lập cho hai bánh xe chủ động |
| Mạch điều khiển động cơ |
Module L298N Dual H-Bridge |
Khuếch đại công suất và điều khiển đảo chiều động cơ |
| Mạch chuyển đổi nguồn |
Module Buck DC-DC 300W 20A |
Hạ áp từ khối pin cung cấp nguồn cho vi xử lý và cảm biến |
| Nguồn cấp |
Pin sạc NCR 18650 dung lượng 3400mAh |
Cung cấp toàn bộ năng lượng cho hoạt động của xe |
Kiến trúc phần mềm và luồng điều khiển
Quy trình xử lý dữ liệu phần mềm trên nền tảng ROS diễn ra theo chu trình khép kín:
- Dữ liệu odometry tính toán từ encoder bánh xe được gửi từ Arduino lên Jetson Nano qua giao thức truyền thông nối tiếp.
- Gói
robot_localization tiếp nhận đồng thời dữ liệu odometry bánh xe và dữ liệu định hướng từ IMU948, áp dụng bộ lọc EKF để xuất ra thông tin vị trí và trạng thái ước lượng có độ tin cậy cao trên khung tham chiếu odom.
- Nút
map_server nạp dữ liệu bản đồ môi trường 2D đã được quét lập trước. Nút amcl sử dụng bản đồ này cùng dữ liệu quét /scan từ cảm biến RPLIDAR A1 để xác định vị trí của robot so với khung toàn cục map.
- Khi nhận được vị trí đích (Goal Pose) từ RViz, thành phần
global_planner trong nút move_base sẽ tìm kiếm đường đi tối ưu tĩnh trên global_costmap.
- Thành phần
local_planner ứng dụng thuật toán TEB liên tục tính toán quỹ đạo khả thi trong thời gian thực trên local_costmap, tính toán tránh né các vật cản bất ngờ và phát thông điệp vận tốc geometry_msgs/Twist trên topic /cmd_vel.
- Nút điều khiển cấp thấp nhận vận tốc từ topic
/cmd_vel, chuyển đổi thành tốc độ quay mong muốn của từng bánh xe vi sai và chuyển tiếp tín hiệu xuống Arduino Uno để thực thi vòng lặp phản hồi PID.
Nội dung chính theo từng chương
Chương 1. Tổng quan
Chương 1 trình bày lý do chọn đề tài xuất phát từ nhu cầu thực tiễn của công nghệ xe tự hành và các hệ thống hỗ trợ lái ADAS. Tác giả phân tích các tính năng hỗ trợ lái hiện nay như ACC, LKAS, AEB, BSM, FCW và chỉ ra các hạn chế khi vận hành thực tế. Từ đó, tác giả nêu bật vai trò của phần mềm mã nguồn mở ROS trong việc tối ưu hóa chi phí nghiên cứu và khả năng tái sử dụng tài nguyên. Chương này cũng xác định rõ mục tiêu, 6 nhiệm vụ nghiên cứu, đối tượng xe vi sai kích thước 30 x 25 x 20 cm, cùng giới hạn thử nghiệm trong môi trường bản đồ định sẵn.
Chương 2. Cơ sở lý thuyết
Nội dung chương 2 tập trung phân tích sâu các cơ sở toán học và cấu trúc phần mềm được áp dụng trong đề tài:
- Trình bày kiến trúc phân tán của ROS bao gồm Master, Nodes, Topics, Services, Actions, Parameter Server và hệ sinh thái bổ trợ (Gazebo, RViz, MoveIt).
- Định nghĩa hệ tọa độ chuẩn cho robot vi sai và vai trò quản lý biến đổi khung tham chiếu của gói
tf.
- Giới thiệu chi tiết chức năng trực quan hóa 3D của RViz, bao gồm cấu trúc các bảng điều khiển (Displays Panel, Views Panel, Tools Panel, Render Panel) và các plugin cơ bản (RobotModel, LaserScan, Map, Odometry, TF).
- Phân tích nguyên lý toán học của gói
robot_localization, giải thích chi tiết phương trình trạng thái, ma trận hiệp phương sai sai số, ma trận đo lường và hệ thống phương trình dự đoán - cập nhật của bộ lọc Kalman mở rộng (EKF).
- Trình bày kiến trúc gói ROS Navigation Stack với các thành phần cốt lõi:
move_base, amcl, map_server, costmap_2d, và chiến lược phục hồi recovery_behaviors.
- Phân tích nguyên lý bộ điều khiển PID và thuật toán lập kế hoạch đường đi cục bộ TEB (Timed Elastic Band), bao gồm các khái niệm về điểm chính (Keypoints), ràng buộc (Constraints) và lực đàn hồi co giãn (Elastic Forces).
Chương 3. Thiết kế và tính toán
Chương 3 giải quyết bài toán mô hình hóa động học và cơ khí của robot:
- Xây dựng hệ phương trình tính quãng đường di chuyển của từng bánh xe dựa trên số xung encoder và bán kính bánh xe $r$.
- Thiết lập công thức tính toán độ dịch chuyển trung bình $D_{avg}$, độ biến thiên góc hướng $\Delta\theta$, và cập nhật tọa độ vị trí toàn cục của xe theo thời gian thực.
- Xây dựng mô hình toán học cho hệ thống định vị EKF trên robot hai bánh vi sai, biểu diễn véc-tơ trạng thái $X_t = [x_t, y_t, \theta_t]^T$, véc-tơ điều khiển $u_t = [v_t, \omega_t]^T$, cùng việc tính toán các ma trận đạo hàm riêng Jacobian $G_t$, $B_t$, $H_t$ từ khai triển chuỗi Taylor cho mô hình chuyển động và mô hình đo lường.
- Trình bày bản vẽ thiết kế không gian 3D chi tiết trên phần mềm SolidWorks cho tầng 1, tầng 2 và toàn bộ kết cấu lắp ráp hoàn chỉnh của xe.
Chương 4. Thi công hệ thống
Chương 4 mô tả quá trình hiện thực hóa mô hình phần cứng và tích hợp hệ thống:
- Sơ đồ hóa kiến trúc phần cứng và sơ đồ khối chức năng tổng quan.
- Chi tiết hóa các thông số kỹ thuật của từng khối linh kiện: Máy tính nhúng Jetson Nano B01, cảm biến quét laser RPLIDAR A1, cảm biến gia tốc và góc nghiêng IMU948, động cơ DC GA25-370 kèm encoder, mạch cầu H L298N, mạch hạ áp Buck DC-DC 300W 20A và pin sạc NCR 18650 3400mAh.
- Xây dựng sơ đồ nối dây giữa khối vi điều khiển Arduino Uno R3 với mạch điều khiển động cơ L298N và cảm biến encoder.
- Mô tả các lớp điều khiển (Control Layer) và phương thức tương tác giữa Jetson Nano và Arduino trong việc điều phối luồng dữ liệu.
Chương 5. Nhận xét và đánh giá
Chương 5 ghi nhận kết quả vận hành của hệ thống qua hai giai đoạn:
- Giai đoạn mô phỏng: Thiết lập môi trường ảo tương thích với điều kiện thực tế; mô phỏng quá trình điều hướng robot di chuyển từ điểm xuất phát đến vị trí mục tiêu (Goal Location); ghi nhận thông báo trạng thái của robot và đánh giá quỹ đạo tránh vật cản động/tĩnh trong không gian ảo.
- Giai đoạn thực nghiệm: Triển khai toàn bộ giải thuật lên xe thực tế trong khuôn viên phòng thí nghiệm; đánh giá khả năng bám quỹ đạo theo bản đồ định sẵn; kiểm tra tính ổn định của hệ thống định vị EKF khi hợp nhất dữ liệu cảm biến; kiểm thử các tình huống robot phát hiện vật cản bất ngờ trên đường đi và tự động tái lập quỹ đạo né tránh an toàn.
Chương 6. Kết luận và hướng phát triển
Chương cuối cùng tổng kết các kết quả kỹ thuật đã hoàn thành của đề tài, phân tích các ưu điểm và hạn chế của mô hình phần cứng cũng như thuật toán, giải trình các khó khăn phát sinh trong quá trình thi công và đề xuất các giải pháp kỹ thuật, hướng nghiên cứu mở rộng trong tương lai.
Kết quả và đóng góp
Đề tài đã hoàn thành đầy đủ các mục tiêu thiết kế và thử nghiệm đề ra với các kết quả cụ thể:
- Chế tạo hoàn chỉnh mô hình phần cứng xe tự hành hai bánh vi sai với kích thước thực tế 30 x 25 x 20 cm, đảm bảo tính vững chắc về cơ khí và độ ổn định về nguồn cấp điện.
- Tích hợp thành công hệ điều hành ROS trên nền tảng máy tính nhúng NVIDIA Jetson Nano B01, thiết lập liên lạc nối tiếp ổn định với vi điều khiển Arduino Uno R3 để điều khiển động cơ thông qua mạch công suất L298N.
- Ứng dụng thành công gói
robot_localization và thuật toán bộ lọc Kalman mở rộng (EKF), kết hợp dữ liệu odometry từ bánh xe với dữ liệu quán tính từ IMU948, giúp ước lượng chính xác trạng thái vị trí và hướng của xe, giảm thiểu hiện tượng sai số trôi tích lũy (drift) so với việc chỉ sử dụng riêng lẻ encoder.
- Triển khai hoạt động ổn định gói ROS Navigation Stack kết hợp thuật toán tránh vật cản TEB (Timed Elastic Band), cho phép xe tự động lập kế hoạch đường đi toàn cục và cục bộ, điều hướng chính xác đến vị trí đích và né tránh vật cản an toàn trong môi trường thực nghiệm.
Đóng góp của đồ án thể hiện ở việc xây dựng một quy trình kỹ thuật hoàn chỉnh từ khâu tính toán động học lý thuyết, mô hình hóa toán học EKF, thiết kế 3D trên SolidWorks, kiểm thử thuật toán trên môi trường mô phỏng đến chuyển đổi thành công lên mô hình phần cứng thực tế với chi phí tối ưu, tạo nguồn tài liệu tham khảo cho các nghiên cứu tiếp theo về robot di động sử dụng ROS.
Hạn chế và hướng nghiên cứu tiếp
Mặc dù đã đạt được các kết quả thực nghiệm cơ bản, đề tài vẫn còn một số hạn chế được tác giả chỉ ra:
- Môi trường thử nghiệm thực tế mới chỉ dừng lại ở mặt bằng phẳng trong phòng thí nghiệm với bản đồ tĩnh được quét và nạp sẵn; chưa kiểm thử trong các môi trường có địa hình gồ ghề hoặc mật độ chướng ngại vật thay đổi quá nhanh.
- Cảm biến RPLIDAR A1 có dải đo giới hạn tối đa 12m và chỉ quét dữ liệu trên một mặt phẳng cắt hai chiều (2D), do đó không có khả năng phát hiện các chướng ngại vật nằm ngoài mặt phẳng quét (quá cao hoặc quá thấp so với vị trí đặt cảm biến).
- Thuật toán TEB Local Planner đòi hỏi tài nguyên tính toán tương đối lớn của vi xử lý Jetson Nano, dễ phát sinh độ trễ nếu môi trường xuất hiện nhiều vật cản động phức tạp.
Các hướng phát triển tiếp theo được đề xuất:
- Tích hợp thêm cảm biến thị giác máy tính như camera chiều sâu (RGB-D Camera) hoặc 3D LiDAR để nâng cao khả năng nhận diện chướng ngại vật trong không gian ba chiều.
- Phát triển và thử nghiệm các thuật toán SLAM tự động lập bản đồ và định vị đồng thời trong thời gian thực mà không cần nạp sẵn bản đồ tĩnh.
- Tối ưu hóa thuật toán điều khiển và mở rộng thử nghiệm trên các địa hình di chuyển phức tạp hơn.
Giá trị tham khảo
Đồ án là tài liệu kỹ thuật có giá trị tham khảo đối với:
- Sinh viên và học viên chuyên ngành Công nghệ Kỹ thuật Điều khiển và Tự động hóa, Cơ điện tử, Kỹ thuật Robot, hoặc Kỹ thuật Máy tính đang thực hiện các đề tài về xe tự hành (AGV/AMR).
- Các nhà phát triển hệ thống nhúng quan tâm đến kiến trúc phân cấp điều khiển giữa máy tính xử lý cao cấp (Jetson Nano) và vi điều khiển thời gian thực (Arduino Uno).
- Những người cần tài liệu hướng dẫn cụ thể về việc cấu hình cây biến đổi tọa độ
tf, tích hợp gói robot_localization với bộ lọc EKF, và tinh chỉnh các tham số cấu hình cho gói ROS Navigation Stack cùng thuật toán TEB Local Planner.
Câu hỏi thường gặp
1. Hệ thống phân chia nhiệm vụ xử lý phần cứng như thế nào giữa Jetson Nano và Arduino Uno?
NVIDIA Jetson Nano B01 đóng vai trò là khối xử lý trung tâm, thực thi các thuật toán cấp cao trong hệ điều hành ROS bao gồm: tiếp nhận và xử lý dữ liệu quét từ RPLIDAR A1 và cảm biến IMU948, chạy bộ lọc Kalman mở rộng (EKF) để định vị, xử lý bản đồ chi phí và tính toán thuật toán điều hướng Navigation Stack. Vi điều khiển Arduino Uno R3 đóng vai trò khối điều khiển ngoại vi cấp thấp, nhận nhiệm vụ đọc tín hiệu encoder từ hai bánh xe, thực thi giải thuật PID vận tốc và xuất xung PWM điều khiển động cơ qua mạch công suất L298N theo lệnh vận tốc nhận được từ Jetson Nano qua giao tiếp Serial.
2. Gói robot_localization và bộ lọc EKF giải quyết bài toán gì trong đồ án?
Gói robot_localization sử dụng bộ lọc Kalman mở rộng (EKF) qua nút ekf_localization_node để hợp nhất (fusion) dữ liệu đo đạc từ nhiều cảm biến khác nhau, cụ thể là dữ liệu odometry bánh xe và dữ liệu gia tốc/tốc độ góc từ cảm biến IMU948. Do mô hình chuyển động của robot hai bánh vi sai mang tính phi tuyến, EKF sử dụng khai triển chuỗi Taylor bậc một để tuyến tính hóa mô hình trạng thái, giúp ước lượng vị trí $(x, y)$ và hướng $(\theta)$ của robot với độ chính xác cao, loại bỏ nhiễu đo lường và bù trừ hiện tượng trượt bánh của encoder.
3. Tại sao tác giả lựa chọn thuật toán TEB (Timed Elastic Band) thay vì các thuật toán điều hướng cục bộ khác?
Thuật toán TEB Local Planner được lựa chọn vì khả năng tối ưu hóa quỹ đạo chuyển động theo thời gian thực dựa trên mô hình dải đàn hồi. Khác với các thuật toán truyền thống, TEB trực tiếp đưa các ràng buộc về thời gian di chuyển, vận tốc, gia tốc tối đa của động cơ và khoảng cách an toàn tới các chướng ngại vật vào hàm mục tiêu tối ưu, giúp robot chuyển hướng mượt mà, phản ứng linh hoạt với vật cản tĩnh lẫn vật cản động và tương thích tốt với đặc tính động học của khung gầm hai bánh vi sai.
4. Cảm biến RPLIDAR A1 được cấu hình với các thông số kỹ thuật nào và có ưu nhược điểm gì?
RPLIDAR A1 (A1M8) sử dụng phương pháp đo khoảng cách tam giác hóa laser (Triangulation), hoạt động với điện áp 5VDC, công suất tiêu thụ 0.5W, giao tiếp UART Serial. Cảm biến có góc quét 360 độ, tốc độ quét 5Hz, dải đo khoảng cách từ 0.15m đến 12m với độ chính xác đo lường là ±3cm. Ưu điểm của cảm biến là giá thành thấp, kích thước nhỏ gọn (70 x 70 x 65 mm), độ chính xác cao và dễ tích hợp vào ROS. Nhược điểm là dải đo bị giới hạn ở 12m và chỉ quét được trên một mặt phẳng cắt hai chiều cố định.
5. Khi robot bị kẹt hoặc gặp chướng ngại vật chắn ngang toàn bộ đường đi, hệ thống phản ứng ra sao?
Khi gặp vật cản, bản đồ chi phí cục bộ (local_costmap) lập tức cập nhật vị trí vật cản từ dữ liệu quét của RPLIDAR A1, kích hoạt thuật toán TEB tính toán lại quỹ đạo vòng qua chướng ngại vật. Trong trường hợp robot bị kẹt không thể tìm thấy đường đi khả thi, gói move_base sẽ tự động kích hoạt cơ chế hành vi phục hồi (recovery_behaviors), thực hiện các thao tác dự phòng như xoay xe tại chỗ để tìm kiếm hướng thoát hoặc di chuyển lùi trước khi thử lập lại lộ trình mới.
Kết luận
Đồ án tốt nghiệp của sinh viên Trương Khương Duy đã nghiên cứu và triển khai thành công hệ thống điều hướng tự động và tránh vật cản trên mô hình xe hai bánh vi sai sử dụng ROS Navigation Stack và bộ lọc Kalman mở rộng (EKF). Công trình hoàn thiện trọn vẹn từ khâu tính toán lý thuyết động học, thiết kế cơ khí 3D trên SolidWorks, tích hợp phần cứng nhúng phân tầng (Jetson Nano B01 và Arduino Uno R3) đến thử nghiệm thực tế với cảm biến RPLIDAR A1 và IMU948. Kết quả nghiên cứu là tài liệu kỹ thuật có giá trị tham khảo thực tiễn cao cho việc nghiên cứu và ứng dụng các nền tảng robot tự hành trong nhà.