Atlas Robotics

Kiến thức robot bằng tiếng Việt

Blog

Bài viết kỹ thuật về lập trình nhúng, ROS 2, SLAM, Nav2 và AMR/AGV — viết từ kinh nghiệm làm robot thật.

28 bài viết · ROS2 Navigation / Nav2

AMCL trong Nav2: cấu hình thực tế cho package amcl
LocalizationTrung bình

AMCL trong Nav2: cấu hình thực tế cho package amcl

Bài AMCL là gì? giải thích particle filter ở mức lý thuyết. Bài này là phần thực hành: node amcl trong Nav2 cấu hình ra sao, và bước 'Set Pose' quan trọng thế nào khi khởi động.

11 phút đọc
EKF trong Nav2: mô hình 2 tầng Local và Global
LocalizationNâng cao

EKF trong Nav2: mô hình 2 tầng Local và Global

Bài EKF (Extended Kalman Filter) giải thích thuật toán ở mức tổng quát. Trong kiến trúc Nav2 thực tế, một pattern phổ biến là chạy HAI EKF riêng biệt — một cho odom, một cho map — không phải một EKF duy nhất.

12 phút đọc
RF2O: tính odometry từ LiDAR, không cần encoder bánh xe
LocalizationNâng cao

RF2O: tính odometry từ LiDAR, không cần encoder bánh xe

Encoder bánh xe không phải nguồn odometry duy nhất có thể — RF2O ước lượng chuyển động robot trực tiếp từ hai lần quét LiDAR liên tiếp, hữu ích chính xác khi bánh xe trượt và encoder nói dối.

11 phút đọc
Hợp nhất Odometry: kết hợp Encoder, IMU, và RF2O trong một node
LocalizationTrung bình

Hợp nhất Odometry: kết hợp Encoder, IMU, và RF2O trong một node

Ba bài trước giới thiệu ba nguồn odometry riêng biệt: Encoder, IMU (qua EKF), và RF2O. Bài này ghép cả ba vào một cấu hình robot_localization thực tế, với nguyên tắc chọn trường dữ liệu tin nguồn nào.

11 phút đọc
TF Tree: debug cây hệ toạ độ khi Nav2 báo lỗi transform
LocalizationTrung bình

TF Tree: debug cây hệ toạ độ khi Nav2 báo lỗi transform

Bài Transform giải thích lý thuyết nối chuỗi phép biến đổi. Đây là phần thực hành: khi Nav2 báo lỗi 'could not transform', hai công cụ view_frames và tf2_echo là nơi bắt đầu tìm nguyên nhân, không phải đoán mò trong code.

11 phút đọc
Cấu hình Nav2 cho robot 2 bánh vi sai: từ params.yaml tới launch
Nav2Nâng cao

Cấu hình Nav2 cho robot 2 bánh vi sai: từ params.yaml tới launch

Các bài trong chuyên mục này giải thích từng khái niệm Nav2 riêng lẻ — Planner, Controller, Costmap. Bài này ghép chúng lại thành một file params.yaml thực tế, khởi động được một robot vi sai thật.

12 phút đọc
Planner trong Nav2: NavFn, SmacPlanner, ThetaStar
Nav2Trung bình

Planner trong Nav2: NavFn, SmacPlanner, ThetaStar

Bài Path Planning giải thích A* và Dijkstra ở mức thuật toán tổng quát. planner_server trong Nav2 là nơi các thuật toán đó trở thành plugin thay thế được — mỗi plugin một đánh đổi khác nhau.

11 phút đọc
Controller trong Nav2: DWB và MPPI bám đường bằng cách khác nhau
Nav2Trung bình

Controller trong Nav2: DWB và MPPI bám đường bằng cách khác nhau

Bài Path Following giới thiệu Pure Pursuit đơn giản. controller_server trong Nav2 dùng các thuật toán phức tạp hơn nhiều — DWB và MPPI — để vừa bám path vừa né vật cản động cùng lúc.

12 phút đọc
Costmap: từ Occupancy Grid thô ra bản đồ chi phí nhiều lớp
Nav2Trung bình

Costmap: từ Occupancy Grid thô ra bản đồ chi phí nhiều lớp

Occupancy Grid chỉ có 3 giá trị (free/occupied/unknown). Costmap thêm một khái niệm quan trọng: vùng gần vật cản 'nguy hiểm' hơn vùng xa, dù cả hai đều free — bằng lớp Inflation.

11 phút đọc
Behavior Tree: cách bt_navigator điều phối toàn bộ Nav2
Nav2Nâng cao

Behavior Tree: cách bt_navigator điều phối toàn bộ Nav2

Planner tính đường, Controller bám đường — nhưng ai quyết định 'nếu bám đường thất bại thì làm gì tiếp theo'? Behavior Tree là bộ não điều phối cấp cao, ghép Planner/Controller/Recovery thành một luồng xử lý có logic rõ ràng.

12 phút đọc
Recovery Behaviors: robot phải làm gì khi bị kẹt
Nav2Trung bình

Recovery Behaviors: robot phải làm gì khi bị kẹt

Planner không tìm được đường, Controller báo kẹt — Nav2 không dừng lại chờ người can thiệp ngay. Recovery Behaviors là tập hành vi 'thử lại theo cách khác' trước khi thực sự báo lỗi cho tầng ứng dụng.

11 phút đọc
Waypoint Follower: đi qua nhiều điểm liên tiếp, có hoặc không dừng lại
Nav2Trung bình

Waypoint Follower: đi qua nhiều điểm liên tiếp, có hoặc không dừng lại

NavigateToPose chỉ đi tới đúng 1 điểm. Robot giao hàng cần ghé qua nhiều điểm liên tiếp trong một nhiệm vụ — Waypoint Follower và action NavigateThroughPoses giải quyết đúng bài toán này.

11 phút đọc