UMI là gì? Cách thu data VLA cho robot mà không cần teleop
Nếu bạn muốn dạy robot cầm tay làm một việc gì đó — gấp vải, rót nước, lắp ráp linh kiện — bạn cần rất nhiều dữ liệu demo. Bài viết này giải thích tại sao đây là bài toán khó, và tại sao Universal Manipulation Interface (UMI) của Stanford lại là một trong những ý tưởng thú vị nhất để giải quyết nó.
Đây là bài đầu tiên trong series 7 bài về UMI + VLA. Sau khi đọc bài này, bạn sẽ hiểu được tại sao UMI ra đời, pipeline tổng thể hoạt động như thế nào, và những gì bạn cần chuẩn bị để bắt đầu.
Vấn đề: dạy robot làm task thực khó như thế nào?
Hãy tưởng tượng bạn muốn dạy robot cầm tay nhặt một chiếc cốc và đặt vào khay. Nghe đơn giản. Nhưng nếu bạn muốn robot làm được trong 20 vị trí khác nhau, với 10 loại cốc khác nhau, dưới 3 điều kiện ánh sáng khác nhau — bạn cần hàng trăm, thậm chí hàng nghìn demo thành công.
Có hai hướng tiếp cận truyền thống:
1. Lập trình tay (classical programming): Bạn viết code cho từng trường hợp. Giòn, chậm, không generalize sang vật thể mới.
2. Reinforcement Learning (RL): Robot tự học qua thử và sai. Cần hàng triệu lần thử, thường chỉ dùng được trong simulator, chuyển sang thực tế rất khó.
3. Imitation Learning (IL): Người làm demo, robot học theo. Nhanh hơn RL, dễ triển khai hơn. Nhưng vẫn có vấn đề lớn: ai demo và demo như thế nào?
Teleop truyền thống: tốt nhưng không scale được
Cách phổ biến nhất để thu demo imitation learning là teleop — người điều khiển robot từ xa qua joystick, haptic device, hoặc spacemouse. Bạn nhìn camera robot, điều khiển từng khớp, robot làm task, và dữ liệu được ghi lại.
Vấn đề là:
Mỗi demo = robot thật bị chiếm dụng hoàn toàn
1 robot + 1 người = ~1-3 demo/phút
100 demo = vài tiếng robot thật bị chiếm
Robot thật đắt tiền (20.000 - 100.000+ USD)
Robot thật dễ hỏng do va chạm khi teleop
Nếu bạn cần 500 demo cho 5 task khác nhau, với 3 robot khác nhau — bạn đang nhìn vào hàng tháng trời và rủi ro hỏng phần cứng rất thực tế.
Có một câu hỏi đơn giản: tại sao người làm demo lại phải ngồi sau một màn hình để điều khiển robot, thay vì trực tiếp dùng tay làm task đó?
Ý tưởng cốt lõi của UMI
Năm 2024, nhóm nghiên cứu của Chelsea Finn và Cheng Chi tại Stanford công bố Universal Manipulation Interface. Ý tưởng trung tâm:
Đừng điều khiển robot. Hãy cầm một gripper giả có camera, làm task trong đời thực, rồi chuyển demo đó sang robot.
Người vận hành cầm một handheld gripper (được in 3D, gắn camera GoPro và kẹp ngón tay). Họ đứng trước bàn làm việc và trực tiếp thực hiện task — nhặt vật, gấp vải, sắp xếp đồ vật. Camera ghi lại góc nhìn từ cổ tay. Hệ thống SLAM tính toán vị trí và hướng của gripper trong không gian 3D.
Người cầm gripper giả
→ Camera ghi nhìn từ cổ tay
→ GoPro + IMU cung cấp dữ liệu cho SLAM
→ SLAM tính ra trajectory 6DoF
→ Hệ thống kết hợp: pose + gripper width + camera stream
→ Chuyển sang định dạng replay buffer
→ Train policy (Diffusion Policy hoặc VLA)
→ Deploy lên robot thật
Kết quả: thu data nhanh gấp 5-10 lần, không cần robot thật trong giai đoạn collection, có thể thu data ở nhiều địa điểm khác nhau.
Tại sao cách này hoạt động?
Câu hỏi tự nhiên là: nếu người làm demo khác robot về hình học cổ tay, tại sao policy học từ demo của người lại hoạt động trên robot?
UMI giải quyết điều này bằng cách thiết kế handheld gripper có hình học giống gripper trên robot nhất có thể:
- Khoảng cách từ camera đến fingertip giống nhau
- Góc camera so với trục gripper giống nhau
- Phạm vi mở/đóng của ngón tay giống nhau
- Cách cầm của người được thiết kế để wrist pose khi demo xấp xỉ wrist pose khi robot thực thi
Đây là sự khác biệt quan trọng so với những hướng dẫn "dùng bất kỳ gripper nào": mỗi quyết định thiết kế trong UMI đều hướng đến giảm observation gap và giảm embodiment gap giữa demo và deployment.
Tổng quan pipeline: từ gripper đến robot
Để hiểu toàn bộ series này, hãy nhìn vào big picture trước:
[Part 2] In và lắp gripper
↓
[Part 3] Thu demo + chạy SLAM pipeline
↓ (scripts_slam_pipeline/00-07)
↓ replay_buffer.zarr.zip
[Part 4] Train Diffusion Policy
↓ (train.py + eval_real_umi.py)
↓ policy checkpoint
[Part 5] Scale lên hai tay (bimanual)
↓ (demo_real_bimanual_robots.py)
[Part 6] Upgrade lên D405 (tùy chọn)
[Part 7] Whole-body: UMI + mocap/VR
Mỗi bước có đầu vào và đầu ra rõ ràng. Bạn hoàn toàn có thể dừng ở Part 4 và đã có một working manipulation policy.
Bạn cần gì để bắt đầu?
Hardware cần thiết (toàn series):
| Thứ | Chi phí ước tính | Ghi chú |
|---|---|---|
| Máy in 3D | Đã có / thuê | FDM, PETG hoặc PLA+ là đủ |
| GoPro (Hero 7+ hoặc Hero 10/11) | ~150-400 USD | Bản gốc UMI dùng GoPro fisheye |
| Filament PETG + TPU | ~30-50 USD | Cho thân gripper + soft fingers |
| Ốc vít, spring | ~10-20 USD | M2/M3 |
| Robot arm có SDK (Franka, UR5, v.v.) | Đã có | Để deploy policy |
| GPU cho training | Đã có / cloud | Tối thiểu 12 GB VRAM |
Bạn không cần humanoid hay whole-body robot để bắt đầu. Các bước 1-5 chỉ cần một robot arm đơn giản hoặc bimanual arms.
Software:
- Ubuntu 20.04 / 22.04
- Python 3.10
- CUDA 11.8+ (cho training)
- Git, conda
Kiến thức cần có:
- Python cơ bản
- Linux terminal cơ bản (cd, ls, chmod, conda activate)
- Hiểu khái niệm cơ bản về neural network (không cần sâu)
Bạn không cần biết ROS, SLAM chi tiết, hay kinh nghiệm với robot trước để bắt đầu series này.
Cái bẫy thường gặp khi tiếp cận UMI lần đầu
Có một số hiểu lầm rất phổ biến mà bạn nên tránh ngay từ đầu:
1. "UMI = thay GoPro bằng RealSense là xong"
Không. GoPro trong UMI không chỉ là camera — nó là nguồn dữ liệu cho SLAM (IMU + fisheye 155 độ). RealSense D405 thiếu IMU của GoPro và có FOV hẹp hơn nhiều. Part 6 sẽ giải thích khi nào nên và không nên upgrade sang D405.
2. "Cứ thu thật nhiều demo là policy sẽ tốt"
Chất lượng quan trọng hơn số lượng. 50 demo sạch, đa dạng tốt hơn 200 demo lặp đi lặp lại cùng một kiểu.
3. "Train VLA lớn ngay từ đầu để có kết quả tốt hơn"
Sai. Luôn train Diffusion Policy baseline nhỏ trước. Nếu baseline không học được, VLA lớn cũng không giúp được — vấn đề nằm ở data, không phải model size.
4. "D405 cho depth là magic bullet cho tất cả vấn đề"
Depth hữu ích cho contact estimation và object segmentation. Nhưng nó không thay thế được calibration tốt, data quality, hay policy architecture phù hợp.
Lộ trình 7 bài trong series này
| Bài | Tiêu đề | Level | Output |
|---|---|---|---|
| 1 | UMI là gì? (bài này) | Beginner | Hiểu concept |
| 2 | Lắp gripper đầu tiên: in 3D và assembly | Beginner | 1 UMI unit hoạt động |
| 3 | Thu demo và chạy SLAM pipeline | Intermediate | replay_buffer.zarr.zip |
| 4 | Train Diffusion Policy và test trên robot | Intermediate | Working policy |
| 5 | Lên hai tay: UMI bimanual pipeline | Intermediate | Bimanual policy |
| 6 | Upgrade lên D405: khi nào và cách nào | Advanced | D405 setup |
| 7 | Whole-body: UMI + mocap/VR cho toàn thân | Advanced | Architecture plan |
Nếu bạn chỉ có robot arm đơn giản và muốn kết quả nhanh nhất: đọc bài 1-4, bỏ qua 5-7 cho đến khi cần.
Nguồn tham khảo
- UMI project page — paper gốc, video demo, hardware guide
- real-stanford/universal_manipulation_interface — repo chính thức
- Chi et al., 2024 - UMI paper — "Universal Manipulation Interface: In-The-Wild Robot Teaching Without In-The-Wild Robots"
- Diffusion Policy paper — policy framework UMI dùng