Atlas Robotics
Hardware AMRCơ bản

Camera trong AMR: bổ sung cho LiDAR ở những việc LiDAR không làm được

Atlasbot · 17/8/2026 · 11 phút đọc

Camera trong AMR: bổ sung cho LiDAR ở những việc LiDAR không làm được
Camera bổ sung khả năng nhận diện mà LiDAR không có

Bài LiDAR trong kiến trúc AMR đã nói LiDAR là cảm biến chính cho SLAM và né vật cản. Nhưng LiDAR có một giới hạn cố hữu: nó chỉ trả lời "có vật thể ở đó, cách bao xa" — hoàn toàn không biết vật thể đó là gì. Camera lấp đúng khoảng trống này.

Khái niệm chính

Việc LiDAR không làm được, Camera làm được:

  • Phân loại vật thể — LiDAR thấy "có khối hình chữ nhật cách 2m", camera + mô hình nhận diện (YOLO, đã nhắc trong nội dung dự án Atlas A2) biết đó là "người" hay "thùng carton" hay "xe đẩy hàng" — thông tin quan trọng để quyết định cách phản ứng (người cần né rộng hơn, thùng carton tĩnh có thể đi sát hơn)
  • Đọc thông tin trực quan — mã QR/vạch dán trên sàn hoặc kệ hàng, biển báo, đèn tín hiệu — LiDAR hoàn toàn mù với các loại dữ liệu 2D phẳng này
  • Nhận diện vật liệu trong suốt/phản chiếu — kính, gương phản xạ tia laser của LiDAR sai lệch hoặc xuyên qua hoàn toàn; camera (dùng ánh sáng nhìn thấy thông thường) ít bị ảnh hưởng hơn nhiều với những vật liệu này

Nguyên lý hoạt động

Camera đơn (monocular) không tự đo được khoảng cách tuyệt đối — chỉ ước lượng gián tiếp qua kích thước vật thể trong khung hình (cần biết trước kích thước thật) hoặc qua các kỹ thuật thị giác máy tính phức tạp hơn (visual odometry, structure from motion). Camera stereo (2 ống kính, giống mắt người) đo được độ sâu (depth) trực tiếp bằng tam giác đạc thị sai — tương tự nguyên lý LiDAR triangulation, nhưng dùng hai ảnh 2D thay vì laser.

Phần lớn camera dùng trong AMR DIY là loại USB UVC chuẩn (v4l2 trên Linux) — cắm là dùng ngay, không cần driver riêng, dữ liệu ảnh đọc trực tiếp qua OpenCV hoặc package usb_cam trong ROS2.

Tóm lại: LiDAR trả lời "cái gì đó ở đâu, cách bao xa" rất chính xác nhưng mù về bản chất vật thể; Camera trả lời "đó là cái gì" rất tốt nhưng đo khoảng cách kém tin cậy hơn (trừ khi dùng loại stereo/depth chuyên dụng). Kết hợp cả hai — không chọn một trong hai — là kiến trúc cảm biến chuẩn cho AMR nghiêm túc.

Kiến thức kỹ thuật

Công thức

Camera stereo tính độ sâu (khoảng cách) từ độ lệch thị sai (disparity) giữa 2 ảnh trái/phải:

Z = (f × B) / d

Trong đó: Z = khoảng cách tới vật thể, f = tiêu cự camera (pixel),
B = khoảng cách giữa 2 ống kính (baseline), d = độ lệch thị sai (pixel)

VD: f = 700px, B = 6cm, vật thể có độ lệch thị sai đo được d = 21px
Z = (700 × 6) / 21 = 200cm = 2m

Thị sai càng nhỏ (vật càng xa) thì sai số đo khoảng cách càng lớn — đây là lý do camera stereo đáng tin cậy ở cự ly gần-trung bình hơn nhiều so với cự ly xa.

Thông số

Tiêu chíLiDARCamera
Đo khoảng cáchChính xác trực tiếpGián tiếp (monocular) hoặc qua thị sai (stereo)
Biết "vật thể là gì"KhôngCó (kết hợp mô hình nhận diện)
Chi phí tính toánThấp (mảng 1D theo góc)Cao (mảng pixel 2D, nhất là qua AI)
Phần cứng xử lý phù hợpCPU thường (Raspberry Pi đủ dùng)Cần GPU cho tốc độ thời gian thực (Jetson)

Ứng dụng thực tế

Đây chính là loại camera USB UVC dùng trong dự án Atlas A2 (phần showcase của trang này) — stream video qua API, xử lý bằng YOLOv8 để nhận diện vật thể thời gian thực. Xử lý dữ liệu LiDAR nhẹ hơn nhiều so với xử lý ảnh camera qua mô hình AI — đây là lý do robot chỉ dùng LiDAR (như Robot Mecanum, Diff Robot trong showcase) chạy tốt trên Raspberry Pi 4, trong khi robot có thêm camera + YOLO (như Atlas A2) cần nâng cấp lên máy tính có GPU (Jetson Orin Nano) mới xử lý đủ nhanh theo thời gian thực.

Ví dụ thực tế

Camera stereo baseline B = 6cm, tiêu cự f = 700px, so sánh độ chính xác theo khoảng cách:

Vật ở 1m: d = (700×6)/100 = 42px → sai lệch 1px → sai số khoảng cách ≈ 2.4%
Vật ở 5m: d = (700×6)/500 = 8.4px → sai lệch 1px → sai số khoảng cách ≈ 12%
Vật ở 10m: d = (700×6)/1000 = 4.2px → sai lệch 1px → sai số khoảng cách ≈ 24%

Sai số tăng nhanh theo khoảng cách vì thị sai giảm dần trong khi sai số đo pixel gần như cố định — đây là lý do camera stereo trên AMR thường chỉ đáng tin cậy trong tầm vài mét, còn khoảng cách xa vẫn nên dựa vào LiDAR.

Lỗi thường gặp

  • Dùng camera đơn (monocular) để đo khoảng cách tuyệt đối mà không hiệu chỉnh — không có baseline để tam giác đạc, kết quả chỉ là ước lượng tương đối dựa vào kích thước vật thể đã biết trước, dễ sai nếu vật thể thực tế khác kích thước giả định.
  • Kỳ vọng camera stereo chính xác ở khoảng cách xa như LiDAR — như tính ở ví dụ trên, sai số tăng nhanh theo khoảng cách do thị sai giảm dần, không phù hợp thay thế LiDAR cho né vật cản tầm xa.
  • Chạy mô hình nhận diện AI nặng trên phần cứng không đủ GPU — như đã nêu, xử lý ảnh qua AI cần GPU để đạt tốc độ thời gian thực; chạy trên CPU thường (như Raspberry Pi) dễ khiến độ trễ nhận diện quá lớn để né vật cản kịp thời.
  • Chỉ dùng camera mà bỏ LiDAR (hoặc ngược lại) — như đã nêu ở phần Tóm lại, hai cảm biến bổ sung lẫn nhau chứ không thay thế nhau; AMR chỉ dùng 1 trong 2 sẽ có điểm mù nghiêm trọng ở đúng việc cảm biến còn lại làm tốt.

Kết luận

Camera lấp đúng khoảng trống LiDAR để lại — biết "vật thể là gì", đọc được thông tin trực quan, ít bị ảnh hưởng bởi vật liệu trong suốt — nhưng đánh đổi bằng chi phí tính toán cao hơn và độ chính xác khoảng cách kém tin cậy hơn ở tầm xa. Bài tiếp theo trong chuyên mục đi vào IMU — cảm biến quán tính giúp robot biết mình đang nghiêng, xoay, tăng tốc như thế nào, một mảnh ghép nữa trong bộ cảm biến hoàn chỉnh của AMR.

Camera trong AMR: bổ sung cho LiDAR ở những việc LiDAR không làm được — Atlasbot