16 KiB
title, subtitle, author, date, lang
| title | subtitle | author | date | lang |
|---|---|---|---|---|
| AMR SLAM Đa Tầng Qua Thang Máy | Ghi chú nguyên lý và chức năng thang máy | RD Odomety | 10/07/2026 | vi |
Tổng quan
Tài liệu này tổng hợp nguyên lý điều hướng AMR (Autonomous Mobile Robot) sử dụng SLAM để di chuyển giữa các tầng thông qua thang máy, và vai trò/chức năng của thang máy trong hệ thống.
Đây là bài toán điều hướng đa tầng (multi-floor navigation) — không chỉ là SLAM thuần túy. SLAM giải quyết "robot đang ở đâu trên bản đồ", còn thang máy thêm lớp điều phối hệ thống tòa nhà + chuyển đổi ngữ cảnh giữa các tầng.
Phần 1: Nguyên lý AMR SLAM di chuyển qua thang máy
1.1 Kiến trúc tổng quan
Các thành phần chính trong hệ thống:
| Thành phần | Vai trò |
|---|---|
| SLAM / Localization | Định vị trên bản đồ từng tầng |
| Global planner | Lập kế hoạch đường đi xuyên tầng |
| Elevator interface | Gọi thang, mở cửa, giữ cửa, nhận trạng thái |
| Mission / State machine | Điều phối toàn bộ quy trình lên/xuống tầng |
| Map management | Quản lý nhiều bản đồ, chuyển tầng |
Luồng tương tác:
AMR + SLAM → Navigation / Mission → Elevator Manager
↓
Elevator Controller / BMS
Map Switch / Relocalization
1.2 Cách biểu diễn bản đồ đa tầng
A. Nhiều bản đồ độc lập (phổ biến nhất)
- Mỗi tầng một map riêng (2D occupancy grid hoặc graph).
- Các map không nối liên tục về mặt hình học — chỉ liên kết qua elevator node.
- Ví dụ:
Floor_1.map,Floor_2.map, mỗi map có điểmelevator_A_in,elevator_A_out.
B. Một bản đồ 3D / multi-layer
- Một map chứa nhiều "layer" (mỗi layer = một tầng).
- Phù hợp khi dùng SLAM 3D hoặc hệ thống thương mại (MiR, Omron, Geek+…).
C. Topological graph (đồ thị)
- Node = điểm quan trọng (phòng, thang máy, cửa).
- Edge = đường đi hoặc kết nối thang máy giữa các tầng.
- Global planner chạy trên graph, local planner chạy trên map 2D từng tầng.
1.3 Quy trình điển hình (State Machine)
[Tầng nguồn] [Thang máy] [Tầng đích]
| | |
Navigate --> Wait at door --> Call elevator --> Enter --> Ride -->
Align in cabin --> Door close --> Moving --> Door open --> Exit -->
Relocalize on new floor --> Navigate to goal
Các trạng thái chi tiết
- Navigate to elevator waiting point — Robot đi đến vị trí chờ trước cửa thang.
- Request elevator — Gửi yêu cầu qua API/BMS: tầng đích, ID thang, ưu tiên.
- Wait for arrival — Chờ thang đến đúng tầng, cửa mở, cabin trống.
- Enter elevator — Local navigation vào cabin (line following, QR marker, hoặc map nhỏ trong cabin).
- Inside cabin — localization bị "mù" — Điểm then chốt kỹ thuật (xem mục 1.4).
- Ride to target floor — Robot đứng yên; hệ thống theo dõi trạng thái thang.
- Exit elevator — Ra khỏi cabin, đến điểm relocalization đã định sẵn.
- Relocalize on new floor — Xác định lại vị trí trên map tầng mới.
- Continue mission — Điều hướng bình thường trên tầng đích.
1.4 Thách thức SLAM / Localization trong thang máy
Vấn đề cốt lõi
Trong cabin, môi trường thay đổi liên tục (cửa đóng/mở, cabin di chuyển, người vào ra). LiDAR scan matching dễ drift hoặc nhảy pose sai.
Cách xử lý thực tế
| Giai đoạn | Chiến lược |
|---|---|
| Trước khi vào | Localization bình thường (AMCL, Cartographer, SLAM Toolbox…) |
| Trong cabin | Tắt hoặc "đóng băng" SLAM; chỉ dùng odometry ngắn hoặc IMU |
| Khi ra cabin | Relocalization bằng scan matching với map tầng mới |
| Backup | QR / AprilTag / UWB tại cửa thang hai đầu |
Vai trò của Odometry
Trong cabin, wheel odometry + IMU giữ ước lượng tương đối ngắn (vài mét). Tuy nhiên odometry không đủ để biết đã lên tầng nào — cần tín hiệu từ thang máy (floor reached).
Luồng điển hình:
SLAM (tin cậy) → Odom only (trong thang) → SLAM relocalize (tầng mới)
1.5 Tích hợp thang máy (Elevator Integration)
Mức độ tích hợp
Mức 1 — Passive (đơn giản)
- Robot chỉ chờ cửa mở (sensor hoặc camera), không điều khiển thang.
- Phù hợp thang công cộng, khó triển khai công nghiệp.
Mức 2 — API với BMS / EMS (phổ biến)
- Giao thức: Modbus, BACnet, OPC-UA, REST API, MQTT.
- Robot gửi:
call(floor=5),hold_door(),release(). - Thang trả:
current_floor,door_open,moving,fault.
Mức 3 — Dedicated robot elevator
- Thang riêng cho robot (Kone, Otis, Schindler có giải pháp robot elevator).
- Có robot mode: giữ cửa lâu hơn, điều khiển từng bước.
Tín hiệu thường cần
Robot → Elevator: call_floor, destination_floor, hold_door, cancel
Elevator → Robot: current_floor, door_status, ready, in_service, fault_code
1.6 Global planning xuyên tầng
Planner không tính đường liên tục 3D. Thường là 2 tầng lập kế hoạch:
-
Topological planner (đồ thị):
Room_A (F1) → Elevator_1_wait (F1) → [elevator_edge] → Elevator_1_exit (F3) → Room_B (F3) -
Local planner (từng tầng): DWA, TEB, Nav2 trên map 2D của tầng đó.
Elevator edge là "cạnh ảo": chi phí = thời gian chờ thang + thời gian di chuyển + rủi ro lỗi.
1.7 Relocalization khi sang tầng mới
Sau khi ra khỏi thang, robot không biết chính xác pose trên map tầng mới (drift trong cabin).
| Phương pháp | Mô tả |
|---|---|
| Scan matching | So khớp LiDAR với map tầng mới (AMCL global localization) |
| Known exit pose | Điểm ra cố định; initial pose gần đúng |
| Fiducial marker | QR/AprilTag tại cửa thang |
| Feature matching | Đặc trưng quanh khu vực cửa thang |
Quy trình an toàn: robot ra đến relocalization zone → dừng → xác nhận pose (confidence > ngưỡng) → mới tiếp tục.
1.8 Luồng dữ liệu tổng thể
Mission: "Deliver to Room 502 (Floor 5)"
|
v
+------------------+
| Task Scheduler | --> Chọn route: F1 -> Elevator B -> F5
+--------+---------+
|
+----+----+
v v
+--------+ +--------------+
| Nav2 | | Elevator FSM |
| (local)| | (call/wait/ |
| | | enter/exit) |
+---+----+ +------+-------+
| |
v v
+--------+ +-----------+
| SLAM / | | Elevator |
| AMCL | | API/BMS |
+---+----+ +-----------+
|
v
+----------+
| Odometry | <- dung khi SLAM khong tin cay (trong cabin)
| + IMU |
+----------+
1.9 Các vấn đề thực tế cần lưu ý
- An toàn: E-stop, phát hiện người trong cabin, không chen khi cửa sắp đóng.
- Đồng bộ thời gian: Timestamp map, odometry và trạng thái thang phải nhất quán.
- Nhiều robot: Queue thang, tránh hai robot cùng gọi một cabin.
- Map maintenance: Thay đổi nội thất từng tầng → cập nhật map riêng.
- Khe cửa thang / ngưỡng: Robot phải vượt qua được; thường cần map chi tiết vùng cửa.
- Mất mạng: Timeout khi gọi thang; retry và fallback.
- Chuẩn hóa tọa độ: Mỗi tầng một hệ tọa độ; chỉ nối qua elevator node, không cộng trực tiếp tọa độ giữa các tầng.
Phần 2: Chức năng thang máy trong điều hướng AMR đa tầng
2.1 Vai trò vật lý vs vai trò logic
| Lớp | Thang máy làm gì |
|---|---|
| Vật lý | Chuyển robot từ tầng A sang tầng B |
| Logic (navigation) | Cạnh nối giữa hai map độc lập (Floor_A ↔ Floor_B) |
| Điều phối | Tài nguyên dùng chung — nhiều robot có thể tranh nhau |
| An toàn | Vùng nguy hiểm: cửa, khe, cabin chuyển động |
Với SLAM: thang máy là ranh giới mà localization không còn đáng tin. Robot "nhảy" từ một không gian định vị được sang không gian khác, còn thang đảm nhiệm phần ở giữa.
2.2 Chức năng theo góc nhìn hệ thống
A. Vận chuyển (Transport)
Chức năng cơ bản: đưa cabin từ tầng nguồn đến tầng đích.
Robot không tự biết đã lên tầng nào nếu không có tín hiệu từ thang (current_floor, arrived_at_destination).
B. Cửa và vùng truy cập (Access control)
Thang quyết định khi nào robot được vào/ra:
- Cửa mở đủ lâu để robot vào (thường cần hold door)
- Cabin dừng đúng tầng, không lệch sàn quá ngưỡng
- Không đóng cửa khi có vật cản (light curtain, cảm biến cửa)
C. Đồng bộ với robot (Synchronization)
Robot FSM Elevator FSM
----------- --------------
GO_TO_ELEVATOR IDLE
WAIT_CALL --> RECEIVE_CALL
WAIT_DOOR_OPEN <-- ARRIVED + DOOR_OPEN
ENTERING <-> DOOR_HELD
INSIDE --> GO_TO_DEST_FLOOR
WAIT_EXIT <-- ARRIVED + DOOR_OPEN
EXITING <-> DOOR_HELD
RELOCALIZE RELEASE / IDLE
D. Tài nguyên dùng chung (Resource management)
- Queue yêu cầu
- Reservation (giữ thang cho robot)
- Priority (robot giao hàng vs robot dọn phòng)
2.3 Interface: Robot ↔ Thang
Robot → Thang (Commands)
| Lệnh | Mục đích |
|---|---|
call_elevator(floor) |
Gọi thang đến tầng robot đang đứng |
request_ride(dest_floor) |
Đặt đích sau khi đã vào cabin |
hold_door() |
Giữ cửa mở khi robot đang vào/ra |
release_door() |
Cho phép đóng cửa |
cancel() |
Hủy khi nhiệm vụ thất bại |
ping / heartbeat |
Giữ session, phát hiện mất kết nối |
Thang → Robot (Status / Events)
| Tín hiệu | Robot dùng để |
|---|---|
current_floor |
Biết thang đang ở đâu |
door_open / door_closed |
Quyết định vào/ra |
moving / stopped |
Biết cabin đang chạy hay dừng |
at_destination |
Xác nhận đã đến tầng đích |
ready_for_robot |
Cabin sẵn sàng (trống, không lỗi) |
fault / maintenance |
Dừng mission, chọn thang khác |
passenger_present |
Có người — có thể chờ hoặc hủy |
2.4 Các chế độ vận hành thang với robot
| Chế độ | Mô tả |
|---|---|
| Thang công cộng | Robot chỉ quan sát, khó triển khai công nghiệp |
| Robot mode | API với BMS, giữ cửa lâu, ưu tiên cabin trống — phổ biến nhất |
| Thang chuyên dụng | Chỉ robot dùng, điều khiển hoàn toàn qua API |
2.5 Chức năng thang tại từng giai đoạn mission
Giai đoạn 1: Trước cửa thang (tầng nguồn)
Thang: Nhận call, di chuyển cabin, mở cửa, báo ready.
Robot: Đi đến elevator_wait_point, chờ door_open + current_floor == my_floor.
Giai đoạn 2: Vào cabin
Thang: hold_door trong khi robot vào.
Robot: Tắt/hạ độ tin cậy SLAM, dùng odometry ngắn, gửi request_ride(dest_floor) khi vào xong.
Giai đoạn 3: Trong cabin (đang chạy)
Thang: Báo moving, current_floor, at_destination + door_open.
Robot: Đứng yên, không cố SLAM, chờ tín hiệu thang.
Giai đoạn 4: Ra cabin (tầng đích)
Thang: Giữ cửa mở cho đến khi robot báo exited.
Robot: Ra đến relocalization zone, load map tầng đích, relocalize, sau đó release_door.
2.6 Thang như "cạnh" trong đồ thị điều hướng
Floor 1: [Room] --- [Elev1_Wait] ====ELEVATOR==== [Elev1_Exit]
|
Floor 3: [Room] --- [Elev1_Wait] ====ELEVATOR==== [Elev1_Exit]
|
Floor 5: [Room] --- [Elev1_Wait] ====ELEVATOR==== [Elev1_Exit]
Thuộc tính của cạnh thang:
- Cost = thời gian chờ + thời gian chạy + độ tin cậy
- Constraint = chỉ đi được khi
elevator.available == true - Precondition = robot tại
wait_point, thangready - Postcondition = robot tại
exit_pointtầng đích, đã relocalize
2.7 Chức năng phụ quan trọng
- Timeout & retry — Gọi thang quá lâu → đổi thang hoặc hủy mission
- Interlock an toàn — Robot trong cabin, thang fault, lệch inside_pose
- Multi-robot coordination — Queue, gán elevator_id, tránh tranh cabin
- Ghi log / audit — Debug khi SLAM lệch sau khi ra thang
2.8 Phân chia trách nhiệm
| Việc | Ai làm |
|---|---|
| Biết vị trí trên hành lang từng tầng | Robot (SLAM/AMCL) |
| Lập đường trong tầng | Robot (local planner) |
| Vào/ra cabin không va chạm | Robot (local nav + odometry) |
| Relocalize sau khi ra | Robot |
| Chọn thang nào trong tòa nhà | Fleet / mission manager |
| Mở cửa, chạy tầng, báo trạng thái | Thang (qua BMS/API) |
2.9 Ví dụ luồng sự kiện đầy đủ
1. Mission: F2 → F5 qua Elevator B
2. Robot nav đến Elev_B_wait (F2) [SLAM hoạt động]
3. Robot → Elev: call(2)
4. Elev → Robot: moving_to_2
5. Elev → Robot: arrived, door_open
6. Robot → Elev: hold_door
7. Robot nav vào cabin (2m) [odom chính, SLAM phụ]
8. Robot → Elev: entered, ride_to(5)
9. Robot → Elev: release_door (cho đóng)
10. Elev: moving 2→5
11. Elev → Robot: floor=3,4... (optional)
12. Elev → Robot: arrived_5, door_open
13. Robot → Elev: hold_door
14. Robot nav ra + relocalize (F5) [SLAM bật lại]
15. Robot → Elev: exited, release_door
16. Robot nav đến đích trên map F5
Tóm tắt
Ba trụ cột của hệ thống
- Perception / Localization — biết vị trí trên từng tầng
- Building integration — điều khiển và đọc trạng thái thang máy
- Mission orchestration — quy trình vào/ra thang và chuyển map
Sáu chức năng cốt lõi của thang máy
- Transport — chuyển tầng vật lý
- Gateway — nối hai không gian/map SLAM tách biệt
- Access — kiểm soát cửa và thời điểm vào/ra
- Signaling — cung cấp trạng thái mà SLAM không suy ra được
- Resource — tài nguyên dùng chung cần đặt chỗ và xếp hàng
- Safety envelope — vùng vận hành có rủi ro cao, cần interlock
Kết luận
AMR multi-floor không phải một SLAM map khổng lồ 3D, mà là nhiều map 2D + đồ thị kết nối qua thang máy + state machine điều phối thang + relocalization khi đổi tầng.
Thang máy là cầu nối có điều kiện giữa các map — robot SLAM điều hướng trong từng tầng, còn thang đảm nhiệm chuyển tầng + đồng bộ trạng thái + kiểm soát cửa; localization được tạm ngưng trong cabin và khôi phục sau khi ra.