Bối cảnh và vấn đề nghiên cứu
Trong xu hướng tự động hóa hiện nay, công nghệ xe tự hành đang phát triển mạnh mẽ và giữ vai trò quan trọng trong các lĩnh vực vận chuyển, kho vận (logistics), nông nghiệp và dịch vụ công nghiệp. Để phương tiện tự hành vận hành độc lập, chính xác và an toàn, bài toán nhận thức môi trường đóng vai trò then chốt, cụ thể là việc định vị vị trí của phương tiện trong không gian đồng thời tái hiện bản đồ xung quanh theo thời gian thực. Kỹ thuật Định vị và Vẽ bản đồ đồng thời (Simultaneous Localization and Mapping - SLAM) được ứng dụng nhằm giải quyết yêu cầu kỹ thuật này mà không cần dựa vào hạ tầng định vị định sẵn bên ngoài.
Đề tài tốt nghiệp "Định vị và vẽ bản đồ (SLAM) cho xe tự hành dùng Lidar" do sinh viên Lê Thanh Tùng thực hiện dưới sự hướng dẫn của TS. Trần Quốc Khải tại Khoa Điện – Điện tử, Học viện Hàng không Việt Nam (niên khóa 2021–2025, hoàn thành tháng 4 năm 2025) tập trung vào việc nghiên cứu và chế tạo mô hình xe tự hành tích hợp công nghệ quét laser 2D (Lidar) và hệ điều hành robot (ROS 2).
Nhiệm vụ nghiên cứu của đề tài được xác định theo 3 nội dung trọng tâm:
- Nghiên cứu hệ điều hành dành cho Robot (ROS – Robot Operating System).
- Nghiên cứu thuật toán định vị và vẽ bản đồ (SLAM).
- Thiết kế mô hình xe tự hành.
Mục tiêu nghiên cứu cụ thể bao gồm:
- Tìm hiểu và ứng dụng thuật toán SLAM: Nghiên cứu các phương pháp SLAM phổ biến (như Cartographer) và lựa chọn giải pháp tương thích với dữ liệu quét từ cảm biến Lidar 2D.
- Thiết kế và tích hợp phần cứng: Hoàn thiện mô hình xe tự hành bao gồm kết cấu khung cơ khí, động cơ chấp hành kèm encoder, vi điều khiển, cảm biến khoảng cách Lidar và máy tính nhúng xử lý trung tâm.
- Triển khai hệ thống phần mềm trên ROS 2: Cấu hình và xây dựng các node xử lý trên ROS 2 Foxy để tiếp nhận dữ liệu cảm biến, tính toán thuật toán SLAM và phát luồng dữ liệu bản đồ.
- Hiển thị và đánh giá kết quả: Sử dụng công cụ trực quan hóa RViz để theo dõi quá trình định vị, lập bản đồ và kiểm thử độ ổn định của hệ thống trong điều kiện thực tế.
- Tạo nền tảng cho điều hướng tự động: Thiết lập hệ thống cơ sở phục vụ cho các bài toán phát triển tiếp theo như tự động lập kế hoạch đường đi (path planning) và né tránh vật cản.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Hệ thống điều khiển xe tự hành hai bánh chủ động vi sai, thuật toán SLAM bằng cảm biến laser 2D, kiến trúc phần mềm hướng node trên nền tảng ROS 2 Foxy, các module mạch nhúng điều khiển động cơ và truyền nhận dữ liệu.
- Phạm vi không gian: Nghiên cứu giới hạn trong môi trường trong nhà (indoor), mặt sàn phẳng, không gian có ranh giới xác định, ít biến động về ánh sáng mạnh và không chịu tác động của điều kiện thời tiết ngoài trời.
- Phạm vi công nghệ: Sử dụng cảm biến Lidar 2D thu thập dữ liệu mặt phẳng hai chiều, chưa kết hợp các hệ cảm biến phụ trợ chuyên sâu như khối đo quán tính (IMU), camera RGB-D hay hệ thống định vị toàn cầu (GPS). Quá trình xử lý tính toán thuật toán SLAM phụ thuộc hoàn toàn vào năng lực xử lý cục bộ của bo mạch máy tính nhúng tầm trung.
- Phạm vi thời gian: Đề tài được giao thực hiện từ ngày 16 tháng 12 năm 2024 đến tháng 4 năm 2025.
Cơ sở lý thuyết và phương pháp
Nghiên cứu được xây dựng dựa trên sự kết hợp giữa lý thuyết điều khiển tự động, kỹ thuật robot học và các thuật toán thị giác/đo xa laser.
Hệ thống khung lý thuyết bao gồm:
- Kiến trúc hệ điều hành Robot (ROS/ROS 2): ROS cung cấp cơ chế tính toán phân tán với ba cấp độ khái niệm:
- Cấp độ hệ thống tập tin (Filesystem Level): Gồm các gói (Packages), gói siêu dữ liệu (Metapackages), bản khai báo gói (Package Manifests) và các khối ngăn xếp (Stacks) giúp cấu trúc mã nguồn có thể tái sử dụng.
- Cấp độ đồ thị tính toán (Computation Graph Level): Mạng lưới giao tiếp phân tán gồm các tiến trình tính toán độc lập (Nodes), điểm trung tâm kết nối (Master), máy chủ lưu trữ cấu hình (Parameter Server), cấu trúc bản tin (Messages), kênh truyền thông tin bất đồng bộ theo cơ chế xuất bản/đăng ký (Topics) và giao tiếp đồng bộ yêu cầu/phản hồi (Services).
- Cấp độ cộng đồng (Community Level): Mạng lưới tài nguyên, các bản phân phối phần mềm (Distributions), kho lưu trữ (Repositories) và trang tài liệu kỹ thuật (ROS Wiki). Bản phân phối được lựa chọn trong đề tài là ROS 2 Foxy chạy trên nền tảng Linux.
- Kỹ thuật SLAM và LIDAR SLAM: Bản chất của SLAM là bài toán ước lượng trạng thái kép, trong đó phương tiện vừa xác định tọa độ tương đối vừa lập bản đồ không gian xung quanh thông qua các phép đo khoảng cách liên tục. Cảm biến laser phát ra chùm tia quét góc $360^\circ$, thu thập dữ liệu đám mây điểm (point cloud) hai chiều phản xạ từ bề mặt chướng ngại vật. Thuật toán laser SLAM tính toán sự thay đổi tư thế (pose) của cảm biến thông qua đối sánh dữ liệu quét ở các thời điểm liên tiếp, bù trừ sai lệch vị trí mà không phụ thuộc vào hạ tầng dẫn đường cố định bên ngoài.
- Mô hình động học xe tự hành hai bánh vi sai: Vận tốc dài $v$ (m/s) và vận tốc góc $\omega$ (rad/s) của robot được biến đổi thành vận tốc quay của từng bánh xe độc lập ($v_L, v_R$) dựa trên khoảng cách giữa hai bánh xe ($b$) và bán kính xe ($R$). Tọa độ vị trí $(x, y, \theta)$ được cập nhật liên tục qua thông tin lượng giác chuyển dịch bánh xe (Odometry) thu được từ số xung cảm biến góc (encoder) với hệ số chuyển đổi xung trên mét ($Tick_meter$).
- Thuật toán điều khiển PID cho động cơ: Cơ chế hồi tiếp vòng kín gồm ba thành phần tỉ lệ (P), tích phân (I) và vi phân (D). Dạng rời rạc của bộ điều khiển được triển khai trên hệ thống nhúng có chu kỳ lấy mẫu $T$ theo phương trình tác động:
$$u(kT) = K_P e(kT) + K_I T \sum_{i=0}^k e(iT) + K_D \frac{e(kT) - e((k-1)T)}{T}$$
Quá trình xác định tham số PID được thực hiện theo phương pháp thực nghiệm 3 bước: khởi tạo ban đầu các hệ số bằng 0; tăng dần $K_P$ tới khi đáp ứng vận tốc bắt đầu dao động rồi chọn $K_P$ bằng $1/2$ ngưỡng dao động; điều chỉnh $K_D$ để dập tắt hiện tượng vọt lố. Do bản thân hệ truyền động cơ học tích hợp khâu tích phân tự nhiên nên tác giả lựa chọn gán $K_I = 0$ để tối ưu tính ổn định.
Phương pháp nghiên cứu thực nghiệm và công cụ:
- Phương pháp phân tích - thiết kế mô hình: Thiết kế cơ khí khung robot 3D trên phần mềm SolidWorks; thiết kế sơ đồ nguyên lý mạch điện tử và mạch in PCB trên phần mềm KiCad.
- Phương pháp thực nghiệm: Chế tạo xe thực tế, nạp chương trình điều khiển cấp thấp lên vi điều khiển ESP32, cấu hình hệ thống ROS 2 trên máy tính nhúng Raspberry Pi 4, thiết lập liên lạc nối tiếp qua giao thức UART (với các chân RX/TX và quy chuẩn tốc độ baud đồng bộ).
- Nguồn dữ liệu: Dữ liệu đám mây điểm từ máy quét laser RPLIDAR A1M8 (tần số quét mẫu 8000 điểm/giây, góc quét $360^\circ$) kết hợp cùng tín hiệu xung phản hồi từ bộ encoder gắn trên trục động cơ DC giảm tốc GA25.
Thiết kế và triển khai
Hệ thống xe tự hành được cấu trúc theo mô hình hai tầng: tầng tính toán cấp cao (High-level processing) phụ trách thuật toán định vị, xây dựng bản đồ trên nền Linux/ROS 2 và tầng điều khiển cấp thấp (Low-level control) phụ trách điều khiển vận tốc chấp hành, đọc cảm biến phản hồi.
Thiết kế phần cứng và cơ cấu nguồn
Khung xe được chế tạo dạng đĩa tròn có bán kính $15\text{ cm}$, sử dụng cơ cấu chuyển động 3 điểm đỡ gồm hai bánh dẫn động chủ động bố trí đối xứng hai bên và một bánh xoay đa hướng (caster) đặt phía sau làm điểm cân bằng. Cảm biến RPLIDAR A1M8 được lắp đặt ở mặt sàn trên cùng nhằm tránh hiện tượng che khuất góc quét laser $360^\circ$.
Hệ thống điện và điều khiển chia tách thành các khối chuyên biệt để hạn chế sụt áp và nhiễu từ động cơ:
- Khối máy tính nhúng: Sử dụng bo mạch Raspberry Pi 4 Model B, nhận nguồn cấp $5\text{V} - 3\text{A}$ từ pin sạc dự phòng chuyên dụng. Raspberry Pi 4 đóng vai trò máy chủ xử lý, cấp nguồn tín hiệu $3.3\text{V}$ cho vi điều khiển ESP32 và nguồn $5\text{V}$ cho module quay quét của cảm biến Lidar RPLIDAR A1M8.
- Khối nguồn lực và mạch chấp hành: Khối pin sạc Li-ion 18650 mắc nối tiếp cung cấp điện áp danh định $14\text{V DC}$. Đường nguồn $14\text{V}$ đi qua công tắc tổng, cấp trực tiếp vào chân $V_{in}$ của module cầu H L298 để điều khiển hai động cơ DC. Đồng thời, nguồn $14\text{V}$ được nối vào module hạ áp xung LM2596 để chuyển đổi thành điện áp ổn định $5\text{V}$, cấp riêng cho mạch đọc xung quang học (encoder) của động cơ.
| Tên thiết bị / linh kiện |
Thông số kỹ thuật ghi nhận trong văn bản |
Chức năng trong hệ thống |
| Raspberry Pi 4 Model B |
Broadcom BCM2711, 4 lõi Cortex-A72 64-bit @ 1.5GHz; RAM LPDDR4; Gigabit Ethernet; WiFi 802.11ac; 2x USB 3.0; nguồn vào qua USB-C 5V DC (tối thiểu 3A). |
Bộ xử lý trung tâm, chạy hệ điều hành Linux và nền tảng ROS 2 Foxy, xử lý thuật toán SLAM, giao diện RViz. |
| RPLIDAR A1M8 |
Máy quét laser 2D $360^\circ$; tốc độ quét $0.5\text{ Hz}$ đến $5.5\text{ Hz}$; tần số lấy mẫu lên đến 8000 điểm/giây; giao tiếp nối tiếp qua cổng UART. |
Thu thập khoảng cách và góc phản xạ của chướng ngại vật trong môi trường xung quanh. |
| ESP32-WROOM-32 |
Vi điều khiển SoC ESP32-D0WDQ6, 2 nhân Xtensa 32-bit LX6; 448 KB ROM; 520 KB SRAM; 18 kênh ADC 12-bit; hỗ trợ PWM, UART, WiFi, BLE. |
Nhận lệnh vận tốc từ máy tính nhúng, tính toán thuật toán PID rời rạc, xuất xung PWM điều khiển động cơ và đọc encoder. |
| Động cơ GA25 (GA25-370) |
Điện áp làm việc 3 – 12V; tỉ số truyền hộp giảm tốc 21.3:1; tốc độ không tải 280 RPM; lực kéo tối đa 2 kg.cm; có tích hợp đĩa encoder. |
Cơ cấu chấp hành chuyển động cho hai bánh xe chủ động của robot. |
| Mạch cầu H L298 |
Điện áp điều khiển +5V ~ +30V; dòng tải tối đa 2A mỗi kênh; công suất hao phí tối đa 25W (tại $75^\circ\text{C}$); điều khiển thuận/nghịch qua tín hiệu số và PWM. |
Khuếch đại công suất và đổi chiều dòng điện cấp cho hai động cơ DC. |
| Mạch hạ áp LM2596 |
Điện áp đầu vào 3V – 30V; điện áp đầu ra 1.5V – 30V; dòng tải cực đại 3A; hiệu suất chuyển đổi 92%; công suất tối đa 15W. |
Hạ áp từ nguồn pin $14\text{V}$ xuống $5\text{V}$ ổn định cấp nguồn cho encoder động cơ. |
| Pin sạc Li-ion 18650 |
Điện áp trung bình 3.7V DC (sạc đầy 4.2V DC); dung lượng 2500 mAh; dòng xả tối đa liên tục 25A (hệ số xả 10C); nội trở trung bình 12 – 14 m$\Omega$. |
Nối thành chuỗi cấp nguồn động lực $14\text{V DC}$ cho hệ thống chấp hành và hạ áp. |
Cấu trúc phần mềm và luồng dữ liệu trên ROS 2
Chương trình điều khiển trên hệ thống ROS 2 được phân tách thành các node chức năng liên kết qua mạng lưới đồ thị tính toán (Computation Graph):
Key Teleop Node: Tiếp nhận tín hiệu bàn phím từ người vận hành để chuyển đổi thành bản tin vận tốc mong muốn (gồm thành phần vận tốc tuyến tính $v$ và vận tốc góc $\omega$).
Twist to Motor Node: Nhận lệnh từ chủ đề (topic) vận tốc dạng geometry_msgs/Twist, phân tách thành giá trị tốc độ quay yêu cầu cho động cơ bánh trái và động cơ bánh phải, sau đó truyền thông số qua giao tiếp nối tiếp UART xuống ESP32.
Odometry Node: Tiếp nhận dữ liệu số xung encoder phản hồi từ ESP32, tính toán sự dịch chuyển độc lập của từng bánh xe, từ đó tích phân vị trí tương đối $(x, y, \theta)$ và xuất bản dữ liệu định vị cơ học lên hệ thống.
SLAM / AMCL Node: Tiếp nhận dữ liệu tọa độ tương đối từ Odometry và dữ liệu quét tia laser từ topic của cảm biến RPLIDAR A1M8 để tiến hành thuật toán ghép điểm, định vị và vẽ bản đồ. Khi đã có bản đồ hoàn chỉnh, node AMCL (Adaptive Monte Carlo Localization) đảm nhận việc định vị robot trên bản đồ có sẵn.
Robot State Publisher Node: Biểu diễn cấu trúc liên kết cơ học của robot dưới dạng các vector không gian 3D, hỗ trợ hiển thị vị trí và tư thế dịch chuyển của các khớp nối khung xe.
Map Server Node: Quản lý việc đọc/ghi dữ liệu bản đồ. Khi quá trình quét hoàn tất, bản đồ được xuất ra hai tập tin: một tập tin cấu hình định dạng YAML (chứa thông tin metadata gồm độ phân giải, tọa độ gốc, các ngưỡng xác suất) và một tập tin hình ảnh đồ họa ghi lại ranh giới không gian.
Move Base Node: Kết hợp thông tin bản đồ từ Map Server và dữ liệu vị trí tức thời từ AMCL để tính toán lộ trình di chuyển tới đích và tránh chướng ngại vật phát sinh.
RViz (ROS Visualization): Giao diện trực quan hóa 3D cho phép hiển thị các tia laser phản xạ, mô hình khung xe, đường đi ước lượng và các lớp bản đồ lưới chiếm dụng (occupancy grid map).
Nội dung chính theo từng chương
CHƯƠNG 1: GIỚI THIỆU
Chương 1 thiết lập tổng thể cấu trúc nghiên cứu của đề tài. Tác giả trình bày tính cấp thiết của việc áp dụng xe tự hành trong sản xuất và dịch vụ hiện đại, làm rõ tầm quan trọng của hệ thống SLAM trong bài toán dẫn đường độc lập. Chương này xác định chi tiết 5 mục tiêu nghiên cứu, chỉ rõ các giới hạn thử nghiệm (môi trường trong nhà, sử dụng Lidar 2D quét phẳng, xử lý cục bộ trên máy tính nhúng, không dùng cảm biến ngoại vi phụ trợ) và phân chia các nội dung nghiên cứu thành các mảng: cơ sở lý thuyết SLAM, thiết kế chế tạo phần cứng cơ - điện tử, xây dựng phần mềm trên ROS 2 và kiểm nghiệm thực tế.
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Nội dung chương 2 đi sâu vào hệ thống lý thuyết nền tảng phục vụ đồ án:
- Giới thiệu chi tiết hệ điều hành ROS/ROS 2 Foxy: Phân tích kiến trúc 3 cấp độ (Filesystem, Computation Graph, Community), phân tích nguyên lý truyền nhận bản tin bất đồng bộ theo mô hình xuất bản - đăng ký (Publish/Subscribe) qua Topics và mô hình yêu cầu - phản hồi (Request/Reply) qua Services.
- Cấu trúc các node tính toán khi áp dụng mô hình ROS vào xe tự hành: Định nghĩa chức năng của các node Key Teleop, Twist to Motor, Odometry, SLAM, AMCL, Robot State Publisher, Map Server, Move Base và công cụ RViz.
- Cơ sở toán học về mô hình động học xe hai bánh vi sai: Trình bày các công thức tính toán vận tốc bánh xe từ lệnh điều khiển tổng quát và công thức Odometry cập nhật vị trí $(x, y, \theta)$ từ xung encoder theo chu kỳ $\Delta t$.
- Tổng quan về công nghệ SLAM và LIDAR SLAM: Nguyên lý so sánh các đám mây điểm laser theo thời gian để tính toán độ dịch chuyển và lập bản đồ không gian 2D dạng lưới chiếm dụng.
- Phương thức giao tiếp UART: Nguyên lý truyền nối tiếp dữ liệu bất đồng bộ qua hai đường dẫn TX, RX và GND, yêu cầu đồng bộ cấu hình khung truyền và tốc độ baud rate.
- Thuật toán điều khiển PID: Phân tích các khâu tác động P, I, D, phương trình vi phân và phương trình sai phân rời rạc của bộ điều khiển số; quy trình 3 bước thực nghiệm hiệu chỉnh hệ số $K_P, K_I, K_D$ với việc thiết lập $K_I = 0$ cho động cơ chấp hành.
CHƯƠNG 3: NỘI DUNG VÀ THIẾT KẾ MÔ HÌNH (THIẾT KẾ PHẦN CỨNG)
Chương 3 tập trung vào khâu hiện thực hóa phần cứng vật lý cho xe tự hành:
- Thiết lập sơ đồ khối hệ thống và sơ đồ đấu nối chi tiết giữa máy tính nhúng Raspberry Pi 4, vi điều khiển ESP32, mạch công suất cầu H L298, cảm biến RPLIDAR A1M8 và khối động cơ DC GA25 tích hợp encoder.
- Phân tích thiết kế mạch nguồn phân chia điện áp: Nguồn pin $14\text{V DC}$ qua mạch LM2596 hạ xuống $5\text{V}$ cho encoder và cấp trực tiếp $14\text{V}$ cho cầu H; nguồn pin sạc dự phòng $5\text{V} - 3\text{A}$ cấp riêng cho Raspberry Pi 4.
- Thiết kế kết cấu cơ khí khung xe dạng tròn bán kính $15\text{ cm}$ gồm hai bánh dẫn động và một bánh đa hướng.
- Trình bày thông số kỹ thuật chi tiết của các linh kiện lựa chọn (Raspberry Pi 4, Lidar RPLIDAR A1M8, mạch LM2596, ESP32-WROOM-32, động cơ GA25, mạch L298 và cell pin Li-ion 18650).
- Thiết kế mạch in trên phần mềm KiCad: Vẽ sơ đồ nguyên lý mạch điều khiển vi xử lý, mô phỏng PCB 3D và tiến hành gia công lắp ráp mạch thực tế cho xe.
CHƯƠNG 4: THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN
Chương 4 mô tả quy trình tích hợp phần mềm và triển khai thuật toán:
- Xây dựng lưu đồ giải thuật giao tiếp giữa vi điều khiển ESP32 và máy tính nhúng qua UART để trao đổi bản tin điều khiển và dữ liệu encoder phản hồi.
- Thiết lập mã nguồn điều khiển động cơ trên ESP32 ứng dụng giải thuật PID số, bảo đảm đáp ứng vận tốc tức thời bám sát giá trị đặt.
- Tích hợp hệ thống trên môi trường ROS 2: Khởi tạo các node phần mềm, cấu hình cổng kết nối Lidar, chuyển đổi dữ liệu quét laser thành thông điệp chuẩn trong ROS.
- Thiết lập quy trình vận hành lập bản đồ: Khởi động Lidar, hiển thị dữ liệu quét trên RViz, sử dụng bàn phím điều khiển robot di chuyển thủ công quét dọc các ranh giới môi trường xung quanh.
CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ
Chương 5 trình bày toàn bộ kết quả đo đạc và kiểm thử hệ thống:
- Kiểm tra tính tương thích và hoạt động ổn định của khối phần cứng thực tế (khung xe, nguồn pin, vi điều khiển ESP32 và Raspberry Pi 4).
- Ghi nhận quá trình khởi động và nhận dữ liệu quét laser thời gian thực của cảm biến RPLIDAR A1M8 trên công cụ RViz2.
- Quá trình tạo lập bản đồ không gian phòng thực nghiệm: Dữ liệu đám mây điểm 2D quét được tái hiện rõ các đường bao tường rào, vách ngăn và chướng ngại vật cố định.
- So sánh trực quan giữa hình ảnh bản đồ thực tế của khu vực khảo sát với bản đồ lưới 2D do hệ thống SLAM trích xuất, chứng minh tính khả thi của mô hình xe tự hành trong nhà.
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Chương 6 tổng kết các kết quả đạt được đối chiếu với mục tiêu ban đầu, đồng thời chỉ rõ những mặt còn hạn chế của phần cứng và giải thuật. Từ đó, tác giả vạch ra các định hướng nghiên cứu tiếp nối nhằm hoàn thiện khả năng tự hành thông minh cho robot.
Kết quả và đóng góp
Nghiên cứu đạt được các kết quả kỹ thuật và đóng góp học thuật cụ thể sau:
- Kết quả thực nghiệm hệ thống phần cứng và phần mềm:
- Chế tạo hoàn chỉnh mô hình vật lý xe tự hành 3 bánh (bán kính $15\text{ cm}$) hoạt động ổn định với cơ cấu chuyển động vi sai, tích hợp đĩa encoder quang học và cảm biến khoảng cách RPLIDAR A1M8 quét $360^\circ$.
- Thiết kế và gia công thành công bo mạch in PCB điều khiển trung gian bằng phần mềm KiCad, kết nối tối ưu giữa vi điều khiển ESP32 và các module ngoại vi.
- Xây dựng thành công kênh giao tiếp nối tiếp UART giữa ESP32 và Raspberry Pi 4, bảo đảm truyền nhận thông suốt dữ liệu xung encoder và lệnh điều khiển vận tốc.
- Triển khai thành công hệ thống phần mềm hướng node trên nền tảng ROS 2 Foxy; tích hợp các node tính toán động học vi sai, xử lý odometry và giải thuật laser SLAM.
- Trích xuất thành công bản đồ lưới 2D của môi trường trong nhà hiển thị qua RViz/RViz2, đồng thời lưu trữ cấu trúc bản đồ hoàn chỉnh thành 2 tệp tin: tệp ảnh bản đồ định dạng chuẩn và tệp cấu hình tham số định dạng YAML.
- Giải pháp kỹ thuật do tác giả đề xuất:
- Giải pháp cân chỉnh tham số PID thực nghiệm tối ưu cho động cơ DC vi sai trong bài toán xe tự hành: loại bỏ khâu tích phân ($K_I = 0$) nhằm tránh hiện tượng dao động trễ, điều chỉnh $K_P$ theo ngưỡng dao động biên và dùng $K_D$ để triệt tiêu hiện tượng quá điều chỉnh (vọt lố).
- Thiết kế cấu trúc nguồn điện cách ly chức năng: tách biệt hoàn toàn nguồn cấp cho cơ cấu chấp hành công suất lớn (pin 18650 qua LM2596 và L298) và nguồn cấp cho mạch tính toán nhúng (sạc dự phòng 5V-3A cấp cho Raspberry Pi 4), ngăn chặn hiện tượng khởi động lại máy tính do sụt áp khi động cơ đổi chiều hoặc tăng tốc.
- Đóng góp đối với các nghiên cứu trước:
- Tác giả tự nhận định đề tài đã xây dựng thành công một mô hình thực nghiệm chi phí thấp, sử dụng các linh kiện phần cứng nhúng phổ biến (ESP32, Raspberry Pi 4, RPLIDAR A1M8) nhưng vẫn đáp ứng đầy đủ yêu cầu triển khai hệ điều hành hiện đại ROS 2 Foxy.
- Tạo lập một khung nền tảng mở (framework) hoàn chỉnh kết hợp giữa phần cứng mạch in tự thiết kế và phần mềm ROS 2, sẵn sàng làm cơ sở để tích hợp các thuật toán điều hướng tự động cấp cao hơn (như Nav2, né tránh vật cản động).
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài (được ghi nhận theo nội dung công bố của tác giả):
- Giới hạn không gian: Hệ thống chỉ được thử nghiệm và hoạt động ổn định trong môi trường kín trong nhà (indoor), sàn bằng phẳng, chưa thể thích ứng với môi trường ngoài trời có ánh sáng tán xạ mạnh, mặt đường gồ ghề hoặc thời tiết phức tạp.
- Giới hạn chiều dữ liệu: Cảm biến RPLIDAR A1M8 là dòng Lidar 2D quét trên một mặt phẳng cắt đơn, do đó bản đồ thu được chỉ phản ánh tọa độ 2D, không thể hiện được thông tin độ cao, cấu trúc hình học 3D của vật thể hoặc các chướng ngại vật nằm ngoài mặt phẳng quét.
- Giới hạn tài nguyên tính toán: Toàn bộ quá trình định vị và xử lý SLAM phụ thuộc vào năng lực của máy tính nhúng tầm trung (Raspberry Pi 4), dẫn đến nguy cơ suy giảm hiệu năng xử lý thời gian thực nếu kích thước không gian bản đồ mở rộng quy mô lớn hoặc môi trường xuất hiện nhiều vật thể chuyển động.
- Thiếu hụt cảm biến bổ trợ: Hệ thống SLAM trong đề tài thuần túy dựa vào laser scan và odometry bánh xe, hoàn toàn chưa tích hợp cảm biến quán tính IMU, camera thị giác RGB-D hay định vị phụ trợ để bù trừ sai số khi bánh xe xảy ra hiện tượng trượt cơ học.
Hướng phát triển tiếp theo:
- Tích hợp thêm cảm biến quán tính IMU nhằm kết hợp thuật toán lọc Kalman (EKF), dung hợp dữ liệu odometry giúp nâng cao độ chính xác định vị khi xe quay cua hoặc trượt bánh.
- Nâng cấp hệ thống cảm biến lên Lidar 3D hoặc tích hợp camera chiều sâu để phát triển thuật toán Visual-Inertial SLAM, tái hiện không gian 3 chiều hoàn chỉnh.
- Triển khai hoàn thiện ngăn xếp điều hướng tự율 (Navigation Stack / Nav2), hiện thực hóa đầy đủ chức năng tự động lập kế hoạch quỹ đạo di chuyển (global/local path planning) và né tránh chướng ngại vật động mà không cần sự can thiệp điều khiển bằng tay của con người.
Giá trị tham khảo
Đồ án là tài liệu kỹ thuật có giá trị tham khảo ứng dụng cao đối với:
- Sinh viên, học viên thuộc các chuyên ngành Kỹ thuật Điện – Điện tử, Kỹ thuật Điều khiển và Tự động hóa, Cơ điện tử và Kỹ thuật Robot đang thực hiện đồ án môn học hoặc khóa luận tốt nghiệp liên quan đến robot di động (AGV/AMR).
- Các nhà phát triển hệ thống nhúng mong muốn tìm hiểu quy trình tích hợp phần cứng vi điều khiển (ESP32) với máy tính đơn bo (Raspberry Pi) chạy nền tảng ROS 2.
Nội dung trọng tâm đáng tham khảo bao gồm:
- Toàn bộ sơ đồ nguyên lý và quy trình thiết kế mạch in PCB cho robot trên phần mềm KiCad (Chương 3).
- Phương pháp phân tách cấu trúc nguồn điện hạn chế nhiễu công nghiệp cho hệ thống xe tự hành.
- Quy trình toán học rời rạc hóa và kinh nghiệm cân chỉnh thực nghiệm bộ điều khiển PID cho động cơ vi sai với thiết lập $K_I = 0$ (Chương 2).
- Các bước cấu hình, tích hợp các node ROS 2 Foxy giao tiếp qua cổng UART và trực quan hóa dữ liệu đám mây điểm Lidar trên RViz2 (Chương 2 và Chương 4).
Câu hỏi thường gặp
1. Khóa luận sử dụng phiên bản ROS nào và phân chia kiến trúc xử lý giữa các thiết bị phần cứng ra sao?
Khóa luận sử dụng phiên bản ROS 2 Foxy chạy trên hệ điều hành Linux cài đặt tại máy tính nhúng Raspberry Pi 4. Hệ thống phân chia xử lý thành 2 tầng: Raspberry Pi 4 đảm nhiệm tầng tính toán cấp cao (chạy các node ROS 2, tiếp nhận dữ liệu quét laser từ RPLIDAR A1M8, thực hiện thuật toán SLAM và hiển thị đồ họa RViz2); còn vi điều khiển ESP32 đảm nhiệm tầng chấp hành cấp thấp (nhận lệnh vận tốc từ Raspberry Pi qua giao tiếp UART, tính toán giải thuật PID rời rạc, xuất xung PWM điều khiển mạch cầu H L298 và đọc xung phản hồi từ bộ encoder động cơ).
2. Vì sao trong bộ điều khiển PID cho động cơ, tác giả lại thiết lập hệ số $K_I = 0$?
Theo phân tích của tác giả trong mục thiết kế tham số PID (Chương 2), do bản thân cơ cấu truyền động và ngõ ra của hệ thống điều khiển động cơ DC đã tồn tại một khâu tích phân lý tưởng nội tại, nên giá trị $K_I$ được gán bằng 0. Hệ số $K_P$ được hiệu chỉnh bằng một nửa giá trị làm xuất hiện dao động cơ học, còn hệ số $K_D$ được tinh chỉnh để triệt tiêu hiện tượng vọt lố và đưa vận tốc nhanh chóng bám sát giá trị đặt.
3. Khung gầm và giải pháp cấp nguồn cho xe tự hành được thiết kế như thế nào?
Khung xe có dạng hình đĩa tròn với bán kính $15\text{ cm}$, sử dụng cơ cấu chuyển động vi sai gồm hai bánh xe dẫn động gắn động cơ DC GA25-370 đối xứng hai bên và một bánh xe xoay đa hướng đặt phía sau làm điểm cân bằng. Nguồn điện được chia thành hai nhánh độc lập: khối pin Li-ion 18650 mắc nối tiếp cấp điện áp $14\text{V DC}$ qua mạch LM2596 hạ xuống $5\text{V}$ cho encoder và cấp trực tiếp $14\text{V}$ cho module cầu H L298; nhánh còn lại dùng pin sạc dự phòng $5\text{V} - 3\text{A}$ cấp riêng cho Raspberry Pi 4 để tránh hiện tượng sụt áp hệ thống vi xử lý khi động cơ hoạt động tải nặng.
4. Sau khi quét lập bản đồ bằng thuật toán SLAM, dữ liệu được Map Server lưu trữ dưới cấu trúc nào?
Bản đồ môi trường sau khi xây dựng hoàn thiện được node Map Server lưu lại thành hai tập tin chuyên biệt: một tập tin ảnh đồ họa ghi lại trực quan không gian lưới chiếm dụng (các đường biên tường và vật cản) và một tập tin cấu hình định dạng YAML lưu trữ các tham số siêu dữ liệu của bản đồ bao gồm tên bản đồ, độ phân giải kích thước ô lưới, tọa độ gốc ban đầu và các ngưỡng xác suất chiếm dụng.
5. Cảm biến RPLIDAR A1M8 trong đồ án có các thông số hoạt động kỹ thuật then chốt nào?
Cảm biến RPLIDAR A1M8 được trang bị trên mặt đỉnh của xe là thiết bị đo khoảng cách laser 2D quét $360^\circ$, có tần số quét từ $0.5\text{ Hz}$ đến $5.5\text{ Hz}$, tần số lấy mẫu đạt tới 8000 điểm trên một giây và giao tiếp truyền dữ liệu đám mây điểm trực tiếp với máy tính trung tâm qua cổng UART.
Kết luận
Đồ án tốt nghiệp "Định vị và vẽ bản đồ (SLAM) cho xe tự hành dùng Lidar" của sinh viên Lê Thanh Tùng đã hoàn thành trọn vẹn mục tiêu thiết kế và chế tạo một mô hình xe tự hành trong nhà hoàn chỉnh trên cơ sở phần cứng nhúng (ESP32, Raspberry Pi 4, Lidar RPLIDAR A1M8). Tác giả đã giải quyết hiệu quả bài toán tích hợp giữa điều khiển chuyển động vi sai sử dụng giải thuật PID với hệ điều hành robot ROS 2 Foxy để thu thập dữ liệu quét laser và tái tạo bản đồ 2D thời gian thực trên công cụ RViz2. Mặc dù còn giới hạn ở môi trường phẳng trong nhà và chưa tích hợp thêm cảm biến bù trượt IMU, kết quả của đồ án đã tạo dựng một nền tảng thực nghiệm vững chắc cho các nghiên cứu chuyên sâu tiếp theo về điều hướng và tránh vật cản tự động trong lĩnh vực xe tự hành.