Giới thiệu dự án
Trong kỷ nguyên công nghiệp 4.0 và chuyển đổi số tự động hóa, nhu cầu triển khai các thiết bị tự hành thông minh trong môi trường công nghiệp và dân dụng gia tăng vượt bậc. Theo các báo cáo thị trường logistics và kho vận thông minh, thị trường Robot Tự hành (Autonomous Mobile Robot - AMR) đạt tốc độ tăng trưởng kép (CAGR) vượt 18.5% mỗi năm. Tuy nhiên, việc ứng dụng các dòng robot công nghiệp truyền thống (như Autonomous Guided Vehicle - AGV) thường đòi hỏi chi phí đầu tư lớn cùng hạ tầng hỗ trợ đắt đỏ như dán băng từ, mã QR sàn hay gắn phản quang chuyên dụng.
Đề tài “Nghiên cứu và thiết kế Mobile Robot tự hành trong nhà sử dụng Lidar” được thực hiện bởi nhóm tác giả Nguyễn Huỳnh Thanh Tú và Trần Đình Vương dưới sự hướng dẫn của TS. Vũ Văn Phong (Trường Đại học Sư phạm Kỹ thuật TP.HCM) nhằm giải quyết bài toán cốt lõi: phát triển mô hình AMR trong nhà kích thước nhỏ gọn, tự chủ hoàn toàn trong việc lập bản đồ (mapping), định vị (localization) và hoạch định quỹ đạo tránh vật cản động với chi phí tối ưu.
+-----------------------------------+
| Mobile Robot AMR |
+-----------------------------------+
|
+-------------------------+-------------------------+
| |
+-----------------------+ +-----------------------+
| Hardware Architecture| | Software & Algorithm |
+-----------------------+ +-----------------------+
| - Khung 3 tầng phi 30cm | - ROS (Robot OS) |
| - Raspberry Pi 4 Model B | - Laser SLAM Gmapping |
| - Arduino Uno R3 | - Costmap 2D |
| - RPLidar A1 (360 deg) | - Global: A* Algo |
| - Động cơ DC GA25-370 | - Local: DWA Algo |
| - IMU MPU-6050 + L298N | - Vòng lặp PID Motor |
+-----------------------+ +-----------------------+
Problem Statement & Pain Points
- Sai số tích lũy của phương pháp Dead-Reckoning (Odometry drift): Việc chỉ sử dụng encoder quang học trên bánh xe dẫn đến trượt bánh và sai số vị trí tăng tịnh tiến theo quãng đường di chuyển.
- Môi trường trong nhà nhiều biến động: Sự xuất hiện của chướng ngại vật tĩnh và động đòi hỏi hệ thống phải liên tục cập nhật bản đồ chi phí (Costmap) và tái hoạch định đường đi theo thời gian thực (real-time path replanning).
- Độ trễ tính toán trên phần cứng nhúng: Các thuật toán tối ưu hóa đa mục tiêu cần tài nguyên xử lý lớn, đặt ra bài toán phân bổ kiến trúc xử lý 2 tầng (High-level SBC và Low-level MCU) hợp lý.
Mục tiêu dự án
- Mục tiêu 1: Thiết kế hoàn chỉnh khung cơ khí 3 tầng dạng tròn ($\varnothing 30\text{ cm}$) bằng vật liệu Mica 5mm, phân bố tải trọng tối đa $> 4\text{ kg}$ với hệ dẫn động vi sai (Differential Drive).
- Mục tiêu 2: Thiết kế hệ thống điều khiển vòng kín tốc độ động cơ DC Encoder GA25-370 sử dụng thuật toán PID trên vi điều khiển Arduino Uno R3, đạt thời gian đáp ứng $t < 12\text{s}$ và sai số xác lập $e_{ss} < 2%$.
- Mục tiêu 3: Tích hợp thành công hệ điều hành Robot (ROS) trên máy tính nhúng Raspberry Pi 4 Model B, xây dựng bản đồ môi trường 2D thông qua cảm biến RPLidar A1 bằng thuật toán Laser SLAM.
- Mục tiêu 4: Thực thi giải thuật hoạch định toàn cục $A^*$ (Global Planner) kết hợp giải thuật né vật cản cục bộ DWA (Dynamic Window Approach - Local Planner), điều hướng robot đến tọa độ chỉ định với độ lệch vị trí $\Delta d \le 0.05\text{ m}$.
- Mục tiêu 5: Xây dựng phần mềm giám sát và điều khiển không dây trên nền tảng Windows qua giao thức Wi-Fi TCP/IP.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
AGV Dẫn đường từ tính |
Visual SLAM (Camera) |
Lidar SLAM (Giải pháp đề xuất) |
| Hạ tầng môi trường |
Phải kẻ vạch từ, gắn tag RF |
Phụ thuộc ánh sáng, đặc trưng ảnh |
Không cần thay đổi hạ tầng |
| Độ chính xác định vị |
Cao ($\pm 5\text{ mm}$) |
Trung bình ($\pm 50 - 100\text{ mm}$) |
Cao ($\pm 10 - 20\text{ mm}$) |
| Khả năng tránh vật cản |
Kém (chỉ dừng khẩn cấp) |
Tốt nhưng tính toán nặng |
Rất tốt (quét 360°, tần số 5.5–10 Hz) |
| Chi phí triển khai |
Cao về bảo trì hạ tầng |
Trung bình |
Tối ưu chi phí linh kiện |
| Khối lượng tính toán |
Thấp |
Rất cao (xử lý ma trận điểm 3D) |
Tối ưu tốt trên bo mạch nhúng SBC |
Ma trận yêu cầu kỹ thuật theo phương pháp MoSCoW
- Must Have: Thuật toán SLAM 2D với Lidar, bộ điều khiển PID tốc độ động cơ, giao tiếp UART 115200 bps giữa SBC và MCU, cơ chế dừng an toàn khi gặp vật cản $< 0.2\text{ m}$.
- Should Have: Thuật toán tránh vật cản động DWA, giao diện giám sát hiển thị biểu đồ tọa độ thời gian thực, điều hướng đa điểm (Waypoints navigation).
- Could Have: Tích hợp bộ lọc bù góc nghiêng IMU 6-DOF (MPU-6050) vào Odometry.
- Won't Have: Lập bản đồ 3D Point Cloud đa tầng (giới hạn phạm vi bài toán 2D phẳng).
Thiết kế hệ thống
+-------------------------------------------------------------------------+
| ROS Master (Raspberry Pi 4) |
| |
| +------------------+ +--------------------+ +---------------+ |
| | /rplidarNode | --> | /slam_gmapping | --> | /map | |
| | (LaserScan 2D) | | (Laser SLAM) | | (Occupancy) | |
| +------------------+ +--------------------+ +---------------+ |
| | |
| +------------------+ +--------------------+ v |
| | /imu_node | --> | /robot_state_pub | +--------------+ |
| | (MPU-6050 IMU) | | (TF Transformations| ---> | /move_base | |
| +------------------+ +--------------------+ | Global: A* | |
| | Local: DWA | |
| +------------------+ +--------------------+ +--------------+ |
| | /rosserial_node | <-- | /cmd_vel (Twist) | <-----------+ |
| | (UART Link) | +--------------------+ |
+--+------------------+---------------------------------------------------+
^
| Serial Packet (115200 bps)
v
+-------------------------------------------------------------------------+
| Low-Level MCU (Arduino Uno R3) |
| |
| +------------------+ +--------------------+ +---------------+ |
| | PID Motor Driver | --> | Dual H-Bridge L298N| --> | DC GA25-370 | |
| | (Interrupt Timer)| +--------------------+ +---------------+ |
| +------------------+ | |
| ^ v |
| +-------------- Wheel Encoders (AB Phase) <--------+ |
+-------------------------------------------------------------------------+
Bảng công nghệ và thông số cấu hình
| Phân hệ |
Phần cứng / Thư viện |
Phiên bản |
Vai trò kỹ thuật |
| High-level OS |
Ubuntu Mate / ROS Melodic |
Linux 18.04 LTS / ROS v1.0 |
Quản trị tiến trình, tính toán SLAM & Nav |
| SBC |
Raspberry Pi 4 Model B |
4GB RAM, Cortex-A72 @ 1.5GHz |
Máy tính nhúng điều phối trung tâm |
| Low-level MCU |
Arduino Uno R3 |
ATmega328P @ 16MHz |
Đọc xung Encoder, tính PID, xuất xung PWM |
| Cảm biến LiDAR |
Slamtec RPLidar A1M8 |
Tần số quét 5.5 - 10Hz, bán kính 12m |
Thu thập đám mây điểm 2D (LaserScan) |
| Cảm biến IMU |
GY-521 MPU-6050 |
6-DOF (3 trục Accel, 3 trục Gyro) |
Hiệu chỉnh sai số góc xoay Yaw |
| Động cơ |
GA25-370 kèm Hall Encoder |
Tỷ số truyền 1:34, điện áp 12VDC |
Dẫn động bánh xe trái/phải |
| Driver Động cơ |
Module L298N |
Dual Full-Bridge Driver |
Điều khiển công suất động cơ qua PWM |
| Phần mềm UI |
Visual Studio C# / WPF |
.NET Framework 4.8 |
Giám sát quỹ đạo và điều khiển qua Wi-Fi |
Giao thức khung truyền thông dữ liệu UART
Giao tiếp giữa Arduino và Raspberry Pi sử dụng giao thức rosserial hoặc chuỗi byte truyền thông định dạng đóng gói cố định (Fixed-frame):
// Định dạng khung dữ liệu UART (Baudrate: 115200 bps, Data bits: 8, Parity: None, Stop bits: 1)
[0xFF][0xFE] [TARGET_V_L (2B)] [TARGET_V_R (2B)] [ENC_L (2B)] [ENC_R (2B)] [YAW (2B)] [CRC8 (1B)] [0xED]
Phương pháp nghiên cứu và quản lý dự án
Dự án áp dụng mô hình phát triển hệ thống lặp V-Model Robotics:
- Phase 1 (Tháng 2 - Tháng 3/2022): Nghiên cứu động học thuận/nghịch Mobile Robot, mô hình Euler-Lagrange, phân tích ma trận Denavit-Hartenberg (D-H).
- Phase 2 (Tháng 4 - Tháng 5/2022): Thiết kế CAD 3D SolidWorks, gia công khung Mica, lắp ráp phần cứng, xây dựng mạch nguồn $11.1\text{V}$ (3S Li-ion).
- Phase 3 (Tháng 6/2022): Lập trình firmware PID điều khiển vận tốc bánh xe, kiểm thử đáp ứng bước trên Arduino.
- Phase 4 (Tháng 7/2022): Cấu hình tầng Costmap 2D, tinh chỉnh tham số
move_base, kiểm thử thuật toán $A^*$ và DWA trên môi trường thực tế.
- Phase 5 (Tháng 8/2022): Đánh giá thực nghiệm, nghiệm thu sai số điều hướng và hoàn thiện báo cáo luận văn.
Implementation và kết quả
Động học và mô hình toán học của Robot
Robot sử dụng cấu hình 2 bánh dẫn động vi sai độc lập đường kính $2R$, khoảng cách giữa hai bánh xe là $L$, tọa độ trọng tâm robot $C(x_c, y_c)$ và hướng di chuyển góc $\theta$.
$$\begin{bmatrix} \dot{x} \ \dot{y} \ \dot{\theta} \end{bmatrix} = \begin{bmatrix} \cos\theta & 0 \ \sin\theta & 0 \ 0 & 1 \end{bmatrix} \begin{bmatrix} v \ \omega \end{bmatrix} = \begin{bmatrix} \frac{R}{2}\cos\theta & \frac{R}{2}\cos\theta \ \frac{R}{2}\sin\theta & \frac{R}{2}\sin\theta \ \frac{R}{L} & -\frac{R}{L} \end{bmatrix} \begin{bmatrix} \omega_r \ \omega_l \end{bmatrix}$$
Động năng toàn phần $K$ của robot theo công thức Euler-Lagrange:
$$K = \frac{1}{2} m \left(\frac{v_l + v_r}{2}\right)^2 + \frac{1}{2} (m d^2 + I_z) \left(\frac{v_r - v_l}{L}\right)^2$$
Thế năng $U = 0$ do chuyển động trên mặt phẳng ngang.
Thuật toán điều khiển động cơ PID Rời rạc
Tín hiệu điều khiển $u(k)$ được tính toán tại mỗi chu kỳ ngắt timer $T = 10\text{ ms}$:
$$e(k) = v_{set}(k) - v_{meas}(k)$$
$$u(k) = K_p \cdot e(k) + K_i \cdot T \sum_{j=0}^{k} e(j) + K_d \cdot \frac{e(k) - e(k-1)}{T}$$
Nhóm tác giả tiến hành hiệu chỉnh thực nghiệm theo phương pháp dao động tới hạn: hệ số tích phân $K_i$ gán bằng 0 do đặc tính cơ cấu truyền động đã tích hợp quán tính vật lý, tinh chỉnh được bộ tham số tối ưu: $K_p = 12.09$, $K_d = 0.85$, $K_i = 0$.
// C++ Algorithm Snippet: PID discrete computation on Arduino
volatile long enc_count_left = 0;
double kp = 12.09, ki = 0.0, kd = 0.85;
double error_prev = 0.0, error_sum = 0.0;
double sample_time = 0.01; // 10ms sampling
void calculate_pid(double target_speed, double current_speed, int pwm_pin, int dir_pin) {
double error = target_speed - current_speed;
error_sum += error * sample_time;
double d_error = (error - error_prev) / sample_time;
double output = (kp * error) + (ki * error_sum) + (kd * d_error);
error_prev = error;
int pwm_val = constrain(abs((int)output), 0, 255);
digitalWrite(dir_pin, output >= 0 ? HIGH : LOW);
analogWrite(pwm_pin, pwm_val);
}
Thuật toán hoạch định đường đi: A* và DWA
1. Hoạch định toàn cục (Global Planner - A*)
Tìm kiếm đường dẫn ngắn nhất trên lưới tọa độ chiếm dụng (Occupancy Grid Map) dựa trên hàm đánh giá Heuristic:
$$f(n) = g(n) + h(n)$$
Trong đó:
- $g(n)$ là chi phí tích lũy từ điểm xuất phát $S$ đến node hiện tại $n$.
- $h(n) = \sqrt{(x_n - x_{goal})^2 + (y_n - y_{goal})^2}$ là khoảng cách Euclidean ước lượng từ $n$ đến đích.
2. Hoạch định cục bộ và né vật cản (Local Planner - DWA)
Không gian vận tốc khả thi $V_r$ được xác định dựa trên giới hạn vận tốc danh định $V_s$, giới hạn an toàn dừng trước vật cản $V_a$ và cửa sổ gia tốc động $V_d$:
$$V_r = V_s \cap V_a \cap V_d$$
Hàm mục tiêu $G(v, \omega)$ được tối đa hóa tại mỗi chu kỳ $100\text{ ms}$:
$$G(v, \omega) = \alpha \cdot \text{heading}(v, \omega) + \beta \cdot \text{dist}(v, \omega) + \gamma \cdot \text{vel}(v, \omega)$$
# Costmap and DWA Planner Parameters (dwa_local_planner_params.yaml)
DWAPlannerROS:
max_vel_x: 0.35
min_vel_x: 0.05
max_vel_theta: 1.0
min_vel_theta: -1.0
acc_lim_x: 0.5
acc_lim_theta: 1.5
heading_scoring: true
path_distance_bias: 32.0
goal_distance_bias: 24.0
occdist_scale: 0.02
inflation_radius: 0.25
obstacle_range: 2.5
raytrace_range: 3.0
Kết quả thực nghiệm và kiểm chứng
- Khảo sát đáp ứng bộ điều khiển PID:
- Thử nghiệm cấp xung tốc độ đặt $v = 0.3\text{ m/s}$ trong khoảng thời gian $t = 12\text{s}$.
- Kết quả: Hai bánh xe trái và phải bám sát giá trị đặt sau $t_{settling} = 0.45\text{ s}$, độ vọt lố $\sigma% < 4.2%$, không phát sinh dao động tự kích.
Vận tốc (m/s)
0.35 +---------------------------------------------------------+
| |
0.30 | +------------------------------------------------| <-- Target (0.3 m/s)
| / |
0.25 | / <-- Đáp ứng PID thực tế (Kp = 12.09, Kd = 0.85) |
| / |
0.20 | / |
| / |
0.10 | / |
| / |
0.00 +---------------------------------------------------------+
0 0.45s 12.0s Thời gian (s)
- Độ chính xác xây dựng bản đồ (SLAM Verification):
| Chiều đo không gian phòng |
Kích thước thực tế (m) |
Kích thước đo trên Map RViz (m) |
Sai số tuyệt đối (m) |
Sai số tương đối (%) |
| Chiều dài phòng |
6.00 |
5.96 |
0.04 |
0.67% |
| Chiều rộng phòng |
4.50 |
4.47 |
0.03 |
0.66% |
| Khoảng cách chướng ngại vật |
1.80 |
1.82 |
0.02 |
1.11% |
- Điều hướng tự hành và né vật cản động:
- Kịch bản 1: Di chuyển thẳng đến điểm đích $(1.5\text{m}, 0\text{m})$, giữ nguyên góc $0^\circ \rightarrow$ Tới đích chính xác, sai số vị trí $1.2\text{ cm}$.
- Kịch bản 2: Di chuyển đến $(1.0\text{m}, 0\text{m})$ và quay góc $-90^\circ \rightarrow$ Đáp ứng góc xoay ổn định, sai số góc $< 1.8^\circ$.
- Kịch bản 3 & 4: Di chuyển đến tọa độ đích $(1.5\text{m}, 0\text{m})$ và $(2.5\text{m}, 3.0\text{m})$ có đặt vật cản che chắn trực diện $\rightarrow$ Local planner phát hiện vật cản bằng LiDAR ở khoảng cách $2.5\text{ m}$, tự động tính toán lại quỹ đạo vòng cung DWA để vượt qua an toàn và chạm đích thành công.
Đổi mới và đóng góp
- Tối ưu hóa kiến trúc nhúng 2 tầng chi phí thấp: Thay vì sử dụng máy tính công nghiệp IPC đắt tiền, đề tài chứng minh khả năng vận hành đầy đủ Navigation Stack trên tổ hợp Raspberry Pi 4 + Arduino Uno với tổng chi phí phần cứng giảm hơn 70% so với các kit nghiên cứu tiêu chuẩn (như TurtleBot3 Burger hay Slamtec Athena).
- Kết hợp đa cảm biến triệt tiêu trượt: Giải quyết triệt để hiện tượng sai số trôi của Odometry thông qua việc kết hợp dữ liệu quét Lidar (Scan Matching) với dữ liệu góc nghiêng từ cảm biến quán tính IMU GY-521 (MPU-6050).
- Khung cơ khí dạng tròn 3 tầng đối xứng: Thiết kế phân tầng giúp tách biệt hoàn toàn nhiễu điện từ giữa động cơ/mạch công suất (Tầng 1 - Base main), khối vi xử lý máy tính (Tầng 2 - Base mid) và góc quét quang học LiDAR 360° không bị che khuất (Tầng 3 - Base top).
+-----------------------------+
| Tầng 3: Base Top |
| - RPLidar A1 (Quét 360°) |
+-----------------------------+
| (Trụ đồng 60mm)
+-----------------------------+
| Tầng 2: Base Mid |
| - Raspberry Pi 4 (ROS SBC)|
| - Mạch nguồn hạ áp DC-DC |
+-----------------------------+
| (Trụ đồng 50mm)
+-----------------------------+
| Tầng 1: Base Main |
| - Arduino Uno + L298N |
| - 2x Động cơ DC Encoder |
| - Pin 3S 11.1V Li-ion |
+-----------------------------+
Ứng dụng thực tế và triển khai
Trường hợp sử dụng (Use Cases)
- Khử khuẩn và phục vụ bệnh viện/văn phòng: Gắn thêm module đèn UV-C hoặc khay vận chuyển tài liệu, robot tự động chạy theo lịch trình qua các phòng mà không cần sự can thiệp của con người.
- Tuần tra giám sát kho hàng vừa và nhỏ: Tự động di chuyển kiểm tra an ninh, quét mã vạch hàng hóa trong môi trường không gian hẹp nhờ kích thước tròn nhỏ gọn $\varnothing 30\text{ cm}$.
+------------------+ +-------------------+ +--------------------+
| 1. Scan Mapping | --> | 2. Set Waypoints | --> | 3. Autonomous Run |
| Lập bản đồ 2D | | Đặt lộ trình đích | | Né vật cản động |
+------------------+ +-------------------+ +--------------------+
Hướng dẫn cài đặt và triển khai nhanh
- Chuẩn bị môi trường:
# Cài đặt gói ROS navigation và slam-gmapping trên Raspberry Pi
sudo apt-get update
sudo apt-get install ros-melodic-navigation ros-melodic-gmapping ros-melodic-rosserial-arduino
- Khởi chạy hệ thống:
# Terminal 1: Khởi động ROS Core và Serial Link
roscore
rosrun rosserial_python serial_node.py /dev/ttyACM0 _baud:=115200
# Terminal 2: Khởi động Lidar và Mapping
roslaunch rplidar_ros rplidar.launch
roslaunch my_robot_navigation gmapping.launch
# Terminal 3: Khởi chạy gói điều hướng Navigation Move Base
roslaunch my_robot_navigation move_base.launch
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Cảm biến 2D hạn chế góc nâng: RPLidar A1 chỉ quét trên một mặt phẳng phẳng 2D song song mặt đất, không nhận diện được các vật cản thấp hơn mặt quét (dưới $10\text{ cm}$) hoặc vật thể treo lơ lửng trên cao.
- Hiện tượng trượt trên nền trơn trượt: Khi di chuyển trên bề mặt gạch men có độ bóng cao, bánh xe cao su vẫn có xác suất trượt tức thời, gây nhiễu Odometry cục bộ trước khi SLAM kịp bù sai số.
Hướng phát triển nâng cấp
- Nâng cấp lên chuẩn ROS 2 (Humble / Iron) để tăng cường khả năng xử lý thời gian thực (DDS middleware).
- Tích hợp Camera đo chiều sâu (RGB-D Camera như Intel RealSense D435) để xây dựng bản đồ Octomap 3D và phát hiện vật cản đa chiều.
- Ứng dụng bộ lọc bù Kalman mở rộng (Extended Kalman Filter - EKF) thông qua gói
robot_localization nhằm hòa trộn toàn diện dữ liệu Wheel Odometry + IMU + Visual Odometry.
Đối tượng hưởng lợi
- Sinh viên ngành Tự động hóa & Cơ điện tử: Cung cấp tài liệu tham khảo hoàn chỉnh từ thiết kế cơ khí 3D CAD, giải tích động lực học robot đến lập trình nhúng C++ và làm chủ hệ điều hành ROS.
- Kỹ sư R&D Robotics: Cung cấp bộ tham số cấu hình mẫu (
costmap_params, dwa_local_planner_params) và kiến trúc phân tầng truyền thông nối tiếp đã được kiểm nghiệm thực tế.
- Doanh nghiệp vừa và nhỏ (SMEs): Bản thiết kế chứng minh tính khả thi của giải pháp AMR tự hành giá rẻ, rút ngắn thời gian nghiên cứu và phát triển sản phẩm thương mại hóa.
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để hệ thống chạy mượt mà các package ROS SLAM là gì?
Tối thiểu máy tính nhúng SBC phải trang bị bộ xử lý Quad-Core 64-bit (tương đương Broadcom BCM2711 trên Raspberry Pi 4), RAM tối thiểu 2GB (khuyến nghị 4GB) và thẻ nhớ MicroSD Class 10/UHS-1 tốc độ đọc $\ge 100\text{MB/s}$ để không bị nghẽn I/O khi lưu trữ bản đồ Occupancy Grid.
2. Làm thế nào để xử lý triệt để hiện tượng trượt bánh xe gây sai số tích lũy Odometry?
Sử dụng gói robot_localization để tích hợp thuật toán lọc Kalman mở rộng (EKF). Bộ lọc sẽ dung hợp dữ liệu vận tốc tuyến tính từ Encoder bánh xe với vận tốc góc 3 trục từ cảm biến IMU GY-521 và dữ liệu khớp điểm quét Laser (Scan-matching), triệt tiêu sai số trôi tự do.
3. Tại sao chọn bộ điều khiển DWA (Dynamic Window Approach) thay vì TEB Local Planner?
DWA có cấu trúc thuật toán tính toán nhẹ hơn, tập trung lấy mẫu không gian vận tốc $(v, \omega)$ trong dải gia tốc khả thi, rất phù hợp với năng lực xử lý của vi xử lý nhúng ARM Cortex-A72 mà vẫn đảm bảo tính toán né vật cản động thời gian thực ở chu kỳ $10\text{Hz}$.
4. Chi phí chế tạo một robot tự hành hoàn chỉnh theo đề tài là bao nhiêu?
Tổng chi phí linh kiện phần cứng (khung mica, động cơ GA25, mạch cầu L298N, Arduino, Raspberry Pi 4, RPLidar A1, pin 3S, cảm biến IMU) dao động trong khoảng 5.500.000 – 7.500.000 VNĐ, chỉ bằng khoảng $1/5$ so với các kit thương mại có tính năng tương đương.
5. Robot có khả năng lưu trữ nhiều bản đồ và tự chuyển đổi khu vực hoạt động không?
Có. Bằng cách sử dụng package map_server, bản đồ được lưu trữ dưới dạng cặp file định dạng .yaml (siêu dữ liệu) và .pgm (ảnh bản đồ raster). Khi chuyển sang khu vực mới, người dùng chỉ cần nạp lại file bản đồ tương ứng thông qua dịch vụ /change_map của ROS.
Kết luận
Đồ án tốt nghiệp “Nghiên cứu và thiết kế Mobile Robot tự hành trong nhà sử dụng Lidar” của nhóm tác giả tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết trọn vẹn và chuẩn xác bài toán thiết kế, chế tạo và điều khiển một robot AMR tự hành trong môi trường trong nhà. Bằng việc làm chủ mô hình động lực học, tối ưu hóa thuật toán điều khiển PID vận tốc vòng kín và tích hợp sâu các package chuyên dụng trên hệ điều hành ROS (gmapping, costmap_2d, $A^*$, DWA), robot đã thể hiện khả năng định vị chính xác, tạo lập bản đồ có độ tin cậy cao và né tránh vật cản linh hoạt. Đây là nền tảng thực nghiệm vững chắc, mở ra hướng ứng dụng thương mại hóa rộng rãi trong các hệ thống vận chuyển tự động, y tế và dịch vụ thông minh.