Vượt qua Parallel-Jaw Gripper
Trong 4 bài trước của series này, mình chủ yếu nói về parallel-jaw gripper -- 2 ngón tay đóng/mở. Đây là gripper phổ biến nhất vì đơn giản, rẻ, và đủ dùng cho nhiều tasks (pick-and-place, bin picking).
Nhưng con người có 5 ngón tay với 20+ DoF, cho phép thao tác tinh tế: xoay bóng, sử dụng công cụ, mở nắp chai bằng một tay. Dexterous manipulation với multi-finger robot hands là frontier tiếp theo -- và cũng là một trong những bài toán khó nhất trong robotics.
Bài này sẽ cover: hardware (Allegro, LEAP, Shadow Hand), bài toán core (in-hand manipulation, tool use), datasets (DexGraspNet), tactile sensing, và state-of-the-art methods.
Xem thêm Tactile Sensing cho Manipulation để hiểu sâu về cảm biến xúc giác.
Hardware: Các Robot Hands phổ biến
Allegro Hand
Allegro Hand từ Wonik Robotics là robot hand phổ biến nhất trong research:
- 16 DoF: 4 ngón x 4 joints
- Torque-controlled: cho phép force control chính xác
- Giá: ~15,000 USD
- Ecosystem: ROS 2 driver, MuJoCo/Isaac Sim models có sẵn
- Dùng bởi: Stanford IRIS, CMU, UC Berkeley
LEAP Hand
LEAP Hand từ Carnegie Mellon là low-cost alternative:
- 16 DoF: tương tự Allegro nhưng dùng Dynamixel servos
- Giá: ~2,000 USD (rẻ gấp 7x Allegro)
- Open-source: CAD files, firmware, software đều public
- Anthropomorphic: thiết kế giống bàn tay người hơn Allegro
- Hạn chế: torque thấp hơn, không có torque sensing built-in
Shadow Dexterous Hand
Shadow Hand là gold standard -- gần giống bàn tay người nhất:
- 24 DoF: 5 ngón + thumb opposition
- Tactile sensors: BioTac fingertips (optional)
- Giá: ~100,000+ USD
- Dùng bởi: OpenAI (Rubik's Cube), Google DeepMind
So sánh
| Tiêu chí | Allegro | LEAP | Shadow |
|---|---|---|---|
| DoF | 16 | 16 | 24 |
| Giá | ~15K USD | ~2K USD | ~100K+ USD |
| Torque sensing | Có | Không | Có |
| Tactile | Không (add-on) | Không | BioTac (optional) |
| Open-source | Không | Có | Không |
| Sim models | MuJoCo, Isaac | MuJoCo | MuJoCo, Isaac |
| Best for | Research (balance cost/quality) | Education, low-budget | Top-tier research |
Bài toán Core: In-Hand Manipulation
In-Hand Object Rotation
In-hand rotation là benchmark kinh điển: robot hand cầm một vật thể (cube, sphere) và xoay nó đến target orientation mà không rơi. Nghe đơn giản nhưng cực khó:
- High-dimensional action space: 16+ joints đồng thời
- Unstable contacts: vật thể có thể trượt hoặc rơi bất kỳ lúc nào
- Sim-to-real gap: friction, deformation khác nhau giữa simulation và thực tế
OpenAI's Rubik's Cube (2019) là milestone: Shadow Hand giải Rubik's Cube sau khi train RL trong simulation với Automatic Domain Randomization (ADR). 13,000+ năm simulated experience, transfer zero-shot sang robot thật.
Phương pháp hiện đại (2024-2026): RL trong Isaac Lab với 4,096+ parallel environments. Unitree đang dùng cách này cho dexterous hands của họ, và Google DeepMind dùng nó cho in-hand manipulation research.
Tool Use
Khả năng sử dụng công cụ là đặc trưng của bàn tay người. Robot dexterous manipulation hướng tới:
- Hammer grasping và striking: cầm búa, đánh vào mục tiêu
- Screwdriver: cầm và xoay tool
- Scissors: coordination giữa 2 ngón để cắt
Các phương pháp hiện tại dùng keypoint-based representations: định nghĩa các điểm quan trọng trên tool và tay, học policy để align chúng. Stanford và UC Berkeley đang dẫn đầu ở lĩnh vực này.
DexGraspNet: Large-Scale Dexterous Grasp Dataset
DexGraspNet (Wang et al., 2023) là dataset lớn nhất cho dexterous grasping:
- 1.32 triệu grasps cho 5,355 objects từ 133+ categories
- Generate bằng differentiable force closure optimization trong Isaac Gym
- Validate từng grasp bằng physics simulation
- Cho Shadow Hand (cũng có version cho LEAP hand)
Sử dụng DexGraspNet
# Load DexGraspNet data (simplified)
import numpy as np
# Mỗi object có ~200+ diverse grasps
grasp_data = np.load("dexgraspnet/core-bottle-1a7ba1f4c892e2da30711cdbdbc73e71.npy",
allow_pickle=True).item()
# Mỗi grasp gồm:
# - hand_pose: (22,) -- wrist 6D + 16 joint angles
# - hand_qpos: (16,) -- joint positions
# - target_qpos: (16,) -- target joint positions for grasping
# - score: float -- grasp quality (force closure based)
print(f"Số grasps: {len(grasp_data['grasps'])}")
print(f"Object category: {grasp_data['category']}")
DexGraspNet 2.0
DexGraspNet 2.0 (2024) mở rộng sang:
- Cluttered scenes: 8,270 scenes với nhiều objects
- 427 triệu grasp labels cho LEAP hand
- Generative model để synthesize grasps cho unseen objects
Tactile Sensing: "Xúc giác" cho Robot
Vì sao tactile quan trọng cho dexterous manipulation?
Vision cho biết ở đâu vật thể, nhưng tactile cho biết cảm như thế nào: lực bao nhiêu, đang trượt không, bề mặt như nào. Đối với dexterous manipulation, tactile là thiết yếu:
- Detect slip trước khi vật thể rơi
- Estimate lực để không làm vỡ vật thể mỏng manh
- Xác định texture và material (kim loại vs nhựa vs vải)
Các loại tactile sensor
Vision-based tactile (GelSight, DIGIT):
- Camera + elastomer: biến dạng trên bề mặt -> image -> contact geometry
- Độ phân giải cao (sub-mm), giá rẻ (~300 USD/sensor)
- Độ phân giải lực trung bình
Capacitive/resistive (BioTac):
- Đo lực chính xác, response nhanh
- Đắt (~1,000+ USD/fingertip)
- Độ phân giải spatial thấp
Piezoelectric (tuxedo-labs):
- Response cực nhanh (microsecond)
- Phù hợp cho vibration/slip detection
- Hạn chế spatial resolution
DIGIT Sensor cho Research
DIGIT từ Meta AI là tactile sensor phổ biến nhất trong research:
# Đọc DIGIT sensor data
import digit_interface
digit = digit_interface.Digit("D00123", resolution=(320, 240))
digit.connect()
# Thu image từ sensor (contact geometry)
frame = digit.get_frame() # (240, 320, 3) RGB image
# Contact detection
is_contact = detect_contact(frame, baseline_frame)
# Force estimation (nếu đã calibrate)
force_estimate = estimate_force(frame, calibration_model)
State-of-the-Art Methods
RL + Sim-to-Real (Dominant approach)
Phương pháp phổ biến nhất cho dexterous manipulation hiện nay:
- Setup trong Isaac Lab: robot hand + object, reward function cho task
- Train PPO/SAC với 4,096+ parallel environments
- Domain randomization: friction, mass, sensor noise, hand dimensions
- Deploy zero-shot lên robot thật
# Reward function cho in-hand rotation (simplified)
def reward_function(env):
# Orientation error giữa current và target
rot_error = quaternion_distance(
env.object_quat, env.target_quat
)
# Bonus khi đạt target
success_bonus = 10.0 if rot_error < 0.1 else 0.0
# Penalty khi drop
drop_penalty = -5.0 if env.object_pos[2] < 0.3 else 0.0
# Finger tip distance to object (encourage contact)
fingertip_reward = -0.1 * fingertip_to_object_distance(env)
return -rot_error + success_bonus + drop_penalty + fingertip_reward
Diffusion Policy cho Dexterous
Xu hướng 2025-2026: dùng Diffusion Policy thay vì RL cho dexterous tasks. Ưu điểm: thu data từ human teleoperation (tự nhiên hơn), không cần reward engineering.
Stanford IRIS đã chứng minh Diffusion Policy có thể học in-hand reorientation từ 100 human demos, đạt comparable performance với RL sau hàng nghìn giờ sim training.
Teacher-Student Framework
Approach hiệu quả: train teacher policy trong sim với privileged information (ground truth object pose, contact forces), rồi distill sang student policy chỉ dùng thông tin có trên robot thật (images, joint positions, tactile).
Teacher (sim, privileged):
Input: object pose + contact forces + joint pos
Output: action
Method: RL (PPO) với full state
Student (real-world compatible):
Input: images + joint pos + tactile
Output: action
Method: BC từ teacher demonstrations
Challenges và Hướng đi
Sim-to-real vẫn là vấn đề lớn nhất
Contact physics trong simulation vẫn không chính xác 100% so với thực tế. MuJoCo 3.x với convex optimization contact solver đã tốt hơn nhiều, nhưng deformable objects (vải, dây) vẫn là open challenge.
Hardware còn là bottleneck
Các robot hands hiện tại vẫn:
- Đắt: Shadow Hand giá 100K+ USD
- Fragile: dễ hỏng khi va chạm
- Chậm: response time chưa bằng tay người
- Thiếu tactile: hầu hết không có tactile sensors tích hợp
LEAP Hand ($2K, open-source) đang giảm barriers, nhưng cần cải thiện durability và torque.
Bi-manual dexterous
Khi kết hợp 2 robot hands (mỗi tay 16 DoF = 32 DoF total), độ phức tạp tăng gấp bội. Đây là frontier của frontier -- xem Part 6 để biết thêm.
Resources
- DexGraspNet paper: arXiv:2210.02697
- DexGraspNet 2.0: arXiv:2410.23004
- LEAP Hand: https://leaphand.com/
- DIGIT sensor: https://digit.ml/
- Isaac Lab dexterous examples: github.com/isaac-sim/IsaacLab
Tiếp theo trong series
- Part 6: Bimanual Manipulation: Dạy robot dùng 2 tay -- ALOHA, Mobile ALOHA, ACT for bimanual
- Part 7: Xây dựng hệ thống manipulation với LeRobot -- End-to-end deployment
Bài viết liên quan
- VLA cho Manipulation: RT-2, Octo, pi0 -- Part 4 series này
- Tactile Sensing cho Manipulation -- Deep dive về tactile sensors
- Robot Grasping 101: Analytical đến learning-based -- Part 1 series này
- Sim-to-Real Transfer: Train simulation, chạy thực tế -- Domain randomization cho dexterous