aiopenarmvlareinforcement-learninglerobotpi0

SimpleVLA-RL (6): OpenArm — Phân tích Lộ trình

Phân tích chi tiết cách tiếp cận training robot OpenArm 7-DoF gắp hộp carton — so sánh 2 lộ trình: LeRobot native vs SimpleVLA-RL.

Nguyễn Anh Tuấn11 tháng 4, 202613 phút đọc
SimpleVLA-RL (6): OpenArm — Phân tích Lộ trình

OpenArm — Phân tích Lộ trình Training Robot 7-DoF với SimpleVLA-RL

Trong 5 bài trước của series SimpleVLA-RL, chúng ta đã tìm hiểu lý thuyết: từ tổng quan framework đến kết quả thực nghiệm, rồi so sánh với LeRobot. Bây giờ là lúc đặt câu hỏi thực tế nhất: Làm thế nào để áp dụng những kiến thức này vào một con robot thật?

Trong bài viết này, chúng ta sẽ phân tích chi tiết robot OpenArm — cánh tay 7-DoF mã nguồn mở được LeRobot hỗ trợ native từ v0.5 — và vạch ra lộ trình training nó thực hiện task gắp hộp carton. Đây là bài viết dành cho những ai muốn chuyển từ "đọc paper" sang "chạy robot thật".

1. OpenArm là gì? Tại sao chọn nó?

Robot arm trong phòng lab nghiên cứu

OpenArm là cánh tay robot humanoid 7 bậc tự do (7-DoF), được thiết kế đặc biệt cho nghiên cứu AI và robotics. Không giống những cánh tay công nghiệp cứng nhắc như UR5 hay Fanuc, OpenArm sử dụng motor Damiao QDD (Quasi-Direct Drive) — loại motor backdrivable, nghĩa là bạn có thể dùng tay đẩy cánh tay robot mà không gặp lực cản lớn. Đặc tính này cực kỳ quan trọng cho teleoperation và nghiên cứu manipulation.

Thông số kỹ thuật chính

Thông số Giá trị
Bậc tự do (DoF) 7 + gripper = 8 DoF
Tầm với (reach) 633mm
Tải trọng (payload) 4.1 kg
Motor vai (shoulder) DM8009
Motor khuỷu/xoay vai (elbow/shoulder rotation) DM4340
Motor cổ tay/gripper (wrist/gripper) DM4310
Giao tiếp (interface) CAN bus
Giá hệ thống bimanual ~$6,500
LeRobot support Native từ v0.5+

Tại sao OpenArm phù hợp cho nghiên cứu?

Thứ nhất, OpenArm được tích hợp sẵn vào LeRobot từ phiên bản v0.5. Điều này có nghĩa là bạn không cần viết driver, không cần lo giao tiếp phần cứng — tất cả đã được chuẩn hóa qua các lệnh lerobot-calibrate, lerobot-teleoperate, lerobot-record.

Thứ hai, motor QDD backdrivable cho phép leader-follower teleoperation tự nhiên. Bạn di chuyển cánh tay leader bằng tay, cánh tay follower sẽ bắt chước chính xác — đây là cách thu thập dữ liệu demo phổ biến nhất hiện nay.

Thứ ba, giá $6,500 cho hệ thống bimanual (hai tay) là khá hợp lý so với các giải pháp khác. So sánh: ALOHA (Google) ~$32,000, Franka Emika Panda ~$30,000+.

2. Mục tiêu: Dạy OpenArm gắp hộp carton

Hãy đặt mục tiêu cụ thể: dạy OpenArm gắp hộp carton từ bàn và đặt vào vị trí khác. Đây là task tương tự với những gì SimpleVLA-RL đã thử nghiệm trong paper (pick, stack, place objects).

Tại sao task này? Vì nó đủ phức tạp để thú vị — hộp carton có nhiều kích cỡ, texture khác nhau, vị trí đặt ngẫu nhiên — nhưng không quá khó cho người mới bắt đầu. Đây cũng là task có ứng dụng thực tế cao trong logistics và warehouse automation.

Thách thức kỹ thuật

Trước khi vạch lộ trình, hãy liệt kê các thách thức:

  1. OpenArm là robot mới — chưa có dataset công khai cho task gắp hộp
  2. Chưa có sim environment chuẩn — SimpleVLA-RL cần simulation, nhưng OpenArm chưa có MuJoCo/Isaac Lab model chính thức (dù đã có repo openarm_isaac_lab thử nghiệm)
  3. Action space khác biệt — OpenArm 8-DoF (7 joint + 1 gripper) vs Piper trong paper SimpleVLA-RL 14-DoF (bimanual 7+7)
  4. Chưa có pretrained VLA cho OpenArm — OpenVLA-OFT được train trên các robot khác

3. Ba lộ trình Training — Phân tích chi tiết

Dựa trên thách thức trên, có ba lộ trình tiếp cận rõ ràng. Mỗi lộ trình phù hợp với một nhóm đối tượng khác nhau.

PATH A — LeRobot Native (Khuyến nghị cho người mới)

Kỹ sư làm việc với robot trong nhà máy

Đây là con đường đơn giản nhất, tận dụng trực tiếp hệ sinh thái LeRobot mà không cần simulation.

Bước 1: Setup phần cứng + LeRobot

Cài đặt CAN bus interface trên máy tính Linux:

# Setup CAN interfaces cho leader và follower
lerobot-setup-can --mode=setup --interfaces=can0,can1

Calibrate robot — bước này bắt buộc để LeRobot biết vị trí zero của mỗi joint:

# Calibrate follower arm (robot thực hiện task)
lerobot-calibrate \
  --robot.type=openarm_follower \
  --robot.port=can0 \
  --robot.side=right

# Calibrate leader arm (robot bạn điều khiển bằng tay)
lerobot-calibrate \
  --robot.type=openarm_leader \
  --robot.port=can1 \
  --robot.side=right

Bước 2: Thu thập demo bằng teleoperation

Đây là bước quan trọng nhất. Bạn điều khiển leader arm để thực hiện task gắp hộp, follower arm sẽ bắt chước và LeRobot sẽ ghi lại toàn bộ trajectory.

# Test teleoperation trước khi ghi
lerobot-teleoperate \
  --robot.type=openarm_follower \
  --teleop.type=openarm_leader

# Ghi dataset: 50+ episodes, 30 FPS
lerobot-record \
  --robot.type=openarm_follower \
  --teleop.type=openarm_leader \
  --repo-id=your-username/openarm-box-grasping \
  --fps=30 \
  --num-episodes=50

Mẹo quan trọng: Thu thập ít nhất 50 episodes, nhưng 100+ sẽ cho kết quả tốt hơn đáng kể. Mỗi episode nên có biến thể — thay đổi vị trí hộp, góc đặt, kích thước hộp.

Bước 3: Train model với LeRobot

LeRobot hỗ trợ nhiều policy architecture. Cho task gắp hộp, hai lựa chọn tốt nhất:

  • ACT (Action Chunking with Transformers) — ổn định, dễ train, phù hợp task đơn giản
  • SmolVLA — VLA model nhỏ gọn, có khả năng generalize tốt hơn nhờ vision-language backbone
# Train ACT policy trên dataset vừa thu thập
python lerobot/scripts/train.py \
  --dataset.repo_id=your-username/openarm-box-grasping \
  --policy.type=act \
  --training.num_epochs=2000

# Hoặc train SmolVLA cho khả năng generalize tốt hơn
python lerobot/scripts/train.py \
  --dataset.repo_id=your-username/openarm-box-grasping \
  --policy.type=smolvla \
  --training.num_epochs=500

Bạn có thể tham khảo thêm chi tiết về SmolVLA training trong bài viết riêng.

Bước 4: Deploy và itererate

# Chạy policy đã train trên robot thật
python lerobot/scripts/eval.py \
  --policy.type=act \
  --policy.path=outputs/train/act_openarm/checkpoints/last/pretrained_model \
  --robot.type=openarm_follower

Quan sát kết quả, thu thập thêm demo ở những tình huống robot thất bại, train lại. Vòng lặp này thường cần 3-5 lần iteration để đạt kết quả khá.

Ưu điểm PATH A

  • Không cần simulation — làm việc trực tiếp với robot thật
  • Beginner-friendly — LeRobot xử lý phần phức tạp
  • Nhanh có kết quả — từ setup đến kết quả đầu tiên trong 1-2 ngày
  • Dữ liệu thật — không lo sim-to-real gap

Nhược điểm PATH A

  • Chất lượng bị giới hạn bởi demo — robot không thể tốt hơn demo bạn thu thập
  • Không có RL improvement — không thể khám phá hành vi mới ngoài demo
  • Tốn thời gian thu thập — mỗi episode cần thực hiện thủ công
  • Scale kém — muốn thêm task mới phải thu thập demo mới hoàn toàn

PATH B — SimpleVLA-RL Style (Nâng cao)

Đây là con đường theo đúng phương pháp của paper SimpleVLA-RL: SFT trước, RL sau, tất cả trong simulation.

Bước 1: Tìm/tạo sim environment cho OpenArm

Tin tốt: đã có repo openarm_isaac_lab trên GitHub, cung cấp URDF/USD model của OpenArm cho NVIDIA Isaac Lab. Tuy nhiên, đây vẫn là repo thử nghiệm và chưa có sẵn các task environment.

# Ý tưởng: tạo task environment trong Isaac Lab
# 1. Import OpenArm USD model
# 2. Tạo scene: bàn + hộp carton + vùng đặt
# 3. Định nghĩa reward: binary (hộp ở vùng đặt = 1, ngược lại = 0)
# 4. Domain randomization: vị trí hộp, kích thước, texture

Bước 2: Thu thập sim demos

Có thể dùng scripted policy (viết code điều khiển robot gắp theo vị trí biết trước) hoặc teleoperation trong sim.

Bước 3: SFT → RL → Sim-to-Real

Đây là pipeline chính của SimpleVLA-RL:

  1. SFT (Supervised Fine-Tuning) trên sim demos — dạy VLA model "cách gắp cơ bản"
  2. RL (GRPO) trong sim — để model tự khám phá cách gắp tốt hơn demo
  3. Sim-to-real transfer — deploy model đã train lên OpenArm thật

Nhưng có một thách thức lớn: action space mismatch. OpenVLA-OFT (7B) trong SimpleVLA-RL được pretrain cho robot Piper với 14 DoF (bimanual). OpenArm chỉ có 8 DoF. Bạn cần fine-tune action head hoặc sử dụng model khác.

Ưu điểm PATH B

  • RL có thể khám phá hành vi mới — paper SimpleVLA-RL cho thấy "pushcut" behaviors
  • Scale tốt — train hàng nghìn episodes trong sim không tốn thời gian người
  • Nhiều task cùng lúc — thêm task trong sim dễ hơn thu thập demo thật

Nhược điểm PATH B

  • Sim-to-real gap — kết quả sim không đảm bảo hoạt động trên robot thật
  • Cần sim environment — chưa có sẵn, phải tự xây hoặc đợi community
  • Phức tạp hơn nhiều — cần hiểu Isaac Lab, veRL, GRPO
  • Thời gian setup dài — có thể mất 2-4 tuần trước khi bắt đầu train

PATH C — Hybrid (Kết hợp tốt nhất)

Đây là lộ trình tối ưu cho người đã có kinh nghiệm, kết hợp ưu điểm của cả hai path trên.

Quy trình 4 bước

  1. Thu thập real demos qua LeRobot (50 episodes) — giống PATH A
  2. Train SmolVLA/ACT qua LeRobot SFT — có baseline hoạt động trên robot thật
  3. Fine-tune trong sim với RL — nếu sim environment có sẵn, dùng RL để cải thiện
  4. Deploy lại robot thật — kiểm tra sim-to-real transfer

Tại sao Hybrid là tốt nhất?

  • Bạn có baseline hoạt động ngay từ PATH A (không cần đợi sim)
  • Khi sim environment sẵn sàng, bạn có thể cải thiện thêm bằng RL
  • Real demos giúp giảm sim-to-real gap vì model đã thấy dữ liệu thật
  • Flexible: nếu RL trong sim không improve, bạn vẫn có baseline tốt

4. So sánh Action Space: OpenArm vs Piper

Hiểu sự khác biệt về action space là then chốt để adapt SimpleVLA-RL cho OpenArm.

Thông số OpenArm (single) Piper (bimanual - SimpleVLA-RL)
DoF 7 joint + 1 gripper = 8 2 x (6 joint + 1 gripper) = 14
Motor type Damiao QDD Servo
Action format [j1, j2, j3, j4, j5, j6, j7, grip] [left_j1..j6, left_grip, right_j1..j6, right_grip]
Control mode Position (joint angle) Position (joint angle)
Backdrivable Không

Điều này ảnh hưởng gì?

Nếu bạn muốn dùng OpenVLA-OFT (đã pretrain trong SimpleVLA-RL), bạn cần modify action head output dimension từ 14 → 8. Đây không phải thay đổi trivial — action head cần được fine-tune lại.

Giải pháp thực tế hơn: dùng SmolVLA hoặc ACT từ LeRobot, vì chúng được thiết kế để train from scratch trên bất kỳ action space nào.

5. Hardware Checklist — Người mới cần gì?

Nếu bạn quyết định bắt đầu với PATH A (khuyến nghị), đây là danh sách phần cứng cần mua:

Bắt buộc

Thiết bị Giá ước tính Ghi chú
OpenArm follower arm ~$3,000 Cánh tay thực hiện task
OpenArm leader arm ~$3,000 Cánh tay điều khiển bằng tay
CAN-to-USB adapter x2 ~$50 Kết nối robot với máy tính
Máy tính Linux + GPU ~$1,500+ NVIDIA GPU cho training
Camera USB (Logitech C920+) ~$70 Ghi hình observation

Nên có

Thiết bị Giá ước tính Ghi chú
Camera Intel RealSense D435 ~$350 Depth perception
Bàn chắc chắn + mount ~$200 Gắn cố định robot
Hộp carton đa kích thước ~$30 Đối tượng gắp
UPS (nguồn dự phòng) ~$150 Tránh mất data khi mất điện

Tổng chi phí tối thiểu: ~$7,600 (bimanual system + máy tính + phụ kiện)

So sánh: nếu bạn dùng Google ALOHA, chi phí sẽ vào khoảng $35,000+. OpenArm tiết kiệm hơn gần 5 lần mà vẫn đủ chức năng cho nghiên cứu.

6. Kết quả tham khảo: Piper trên robot thật

Để có kỳ vọng thực tế, hãy nhìn vào kết quả real-world của SimpleVLA-RL trên robot Piper (bài gốc):

Task Success Rate
Stack Bowls 70%
Click Bell 60%
Pick Bottle 14%

Đây là con số sau RL improvement. Trước RL (chỉ SFT), kết quả thấp hơn đáng kể. Điều này cho thấy:

  1. RL thực sự giúp cải thiện — nhưng không phải magic
  2. Task đơn giản (stack) dễ hơn task phức tạp (pick bottle)
  3. Sim-to-real gap vẫn là thách thức lớn — 14% cho pick bottle

Với OpenArm và task gắp hộp carton (tương tự Pick Bottle về độ khó), kỳ vọng thực tế cho PATH A (SFT only) là khoảng 30-50% success rate sau 100+ demos. PATH C (hybrid với RL) có thể đẩy lên 50-70%.

7. Bimanual: Mở rộng lên hai tay

OpenArm hỗ trợ bimanual setup thông qua LeRobot:

# Bimanual teleoperation
lerobot-teleoperate \
  --robot.type=bi_openarm_follower \
  --teleop.type=bi_openarm_leader

# Bimanual recording
lerobot-record \
  --robot.type=bi_openarm_follower \
  --teleop.type=bi_openarm_leader \
  --repo-id=your-username/openarm-bimanual-box \
  --fps=30 \
  --num-episodes=50

Bimanual mở ra nhiều task phức tạp hơn: mở nắp hộp, gấp hộp, di chuyển vật lớn. Tuy nhiên, đây là bước nâng cao — hãy master single-arm trước.

8. Series Roadmap — Tiếp theo

Lộ trình phát triển robot AI

Bài viết này là phân tích lộ trình tổng quan. Trong các bài tiếp theo của series, chúng ta sẽ đi sâu vào thực hành:

  • Part 7: Thu thập dữ liệu — Hướng dẫn step-by-step setup OpenArm + LeRobot, calibrate, và thu thập 50+ episodes gắp hộp carton
  • Part 8: Training & Deploy — Train SmolVLA/ACT trên dữ liệu thật, deploy lên robot, đánh giá kết quả và iteration

Kết luận

OpenArm là lựa chọn tuyệt vời cho ai muốn bắt đầu nghiên cứu robot manipulation với VLA/RL. Với giá hợp lý, LeRobot native support, và motor backdrivable cho teleoperation dễ dàng, nó giảm đáng kể rào cản gia nhập.

Lời khuyên thực tế: Hãy bắt đầu với PATH A (LeRobot native). Thu thập 50 demos, train ACT, xem kết quả. Chỉ chuyển sang PATH C khi bạn đã hiểu pipeline và muốn cải thiện thêm bằng RL. PATH B thuần simulation chỉ nên thử khi bạn có kinh nghiệm với Isaac Lab.

Đừng đợi setup hoàn hảo — robot manipulation là lĩnh vực mà bạn học nhiều nhất từ thất bại trên robot thật.


Bài viết liên quan

NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Bài viết liên quan

NEWTutorial
Hướng dẫn GigaBrain-0: VLA + World Model + RL
vlaworld-modelreinforcement-learninggigabrainroboticsmanipulation

Hướng dẫn GigaBrain-0: VLA + World Model + RL

Hướng dẫn chi tiết huấn luyện VLA bằng World Model và Reinforcement Learning với framework RAMP từ GigaBrain — open-source, 3.5B params.

12/4/202611 phút đọc
NEWTutorial
StarVLA: Xây dựng VLA Model mô-đun
vlastarvlarobot-manipulationaideep-learningqwen-vlflow-matchingiclr-2026

StarVLA: Xây dựng VLA Model mô-đun

Hướng dẫn chi tiết xây dựng Vision-Language-Action model với StarVLA — framework mô-đun kiểu Lego từ ICLR 2026, hỗ trợ 4 kiến trúc action head.

12/4/202611 phút đọc
NEWTutorial
Hướng dẫn fine-tune NVIDIA GR00T N1
vlahumanoidnvidiaisaac-labfine-tuningdeep-learninggrootsim2real

Hướng dẫn fine-tune NVIDIA GR00T N1

Hướng dẫn chi tiết fine-tune VLA model GR00T N1 cho humanoid robot với Isaac Lab và dữ liệu AGIBOT World — từ cài đặt đến inference.

12/4/202612 phút đọc