← Quay lại Blog
humanoidhumanoidloco-manipulationteleoperationimitation-learning

Loco-Manipulation: Robot vừa đi vừa thao tác

Kỹ thuật điều khiển humanoid đồng thời di chuyển và thao tác vật -- decoupled control, teleoperation và imitation learning.

Nguyen Anh Tuan23 tháng 2, 20268 phút đọc
Loco-Manipulation: Robot vừa đi vừa thao tác

Loco-Manipulation là gì?

Hầu hết các research về humanoid tập trung vào locomotion (đi, chạy, leo) HOẶC manipulation (cầm, nâng, thao tác). Nhưng ứng dụng thực tế đòi hỏi cả hai cùng lúc: robot phải vừa đi vừa mang đồ, vừa di chuyển vừa mở cửa, vừa bước lên cầu thang vừa giữ thăng bằng vật trên tay.

Đây là loco-manipulation -- một trong những bài toán khó nhất của humanoid robotics hiện nay.

Tại sao khó?

  1. Coupling: Khi tay nâng vật nặng, trọng tâm (CoM) thay đổi -> ảnh hưởng balance
  2. Competing objectives: Locomotion cần chân ổn định, manipulation cần tay linh hoạt -- cả hai dùng chung cơ thể (skeleton)
  3. High-dimensional: Humanoid có 30-75 DOF, điều khiển toàn bộ cùng lúc rất phức tạp
  4. Contact-rich: Cả chân (tiếp xúc mặt đất) và tay (tiếp xúc vật) đều có contact dynamics

Humanoid robot thực hiện loco-manipulation trong môi trường thực tế

Phương pháp 1: Decoupled Upper/Lower Body

Ý tưởng đơn giản nhất: tách riêng điều khiển thân trên (manipulation) và thân dưới (locomotion). Mỗi phần có controller riêng, giao tiếp qua interface nhẹ.

Mobile-TeleVision (arXiv:2412.07773)

Paper "Mobile-TeleVision: Predictive Motion Priors for Humanoid Whole-Body Control" (arXiv:2412.07773) là ví dụ điển hình của decoupled approach.

Kiến trúc:

  1. Upper body: IK + motion retargeting từ người điều khiển (teleoperation)
  2. Lower body: RL policy cho locomotion, conditioned trên upper body motion
  3. PMP (Predictive Motion Priors): CVAE model dự đoán upper body motion tương lai, giúp locomotion policy "biết trước" tay sẽ làm gì

Tại sao cần PMP? Nếu locomotion policy chỉ nhìn trạng thái hiện tại của tay, nó sẽ reactive -- phản ứng chậm khi tay thay đổi đột ngột (ví dụ nâng vật nặng lên). PMP cho phép policy anticipate -- biết tay sắp nâng vật -> điều chỉnh tư thế trước.

# Simplified decoupled control architecture
class DecoupledController:
    def __init__(self):
        self.upper_body_ik = InverseKinematics(arm_joints)
        self.lower_body_rl = load_policy("locomotion_policy.pt")
        self.pmp = load_model("predictive_motion_prior.pt")
    
    def step(self, upper_body_target, velocity_command):
        # 1. Upper body: IK cho tay
        arm_targets = self.upper_body_ik.solve(upper_body_target)
        
        # 2. Predict upper body motion tương lai
        motion_prior = self.pmp.predict(
            current_arm_state=arm_targets,
            history=self.arm_history
        )
        
        # 3. Lower body: RL conditioned trên motion prior
        obs = concat([
            proprioception,       # Joint states
            velocity_command,     # Di chuyển command  
            motion_prior,         # Dự đoán chuyển động tay
        ])
        leg_actions = self.lower_body_rl(obs)
        
        return concat([arm_targets, leg_actions])

Kết quả: Tested trên Fourier GR-1 và Unitree H1 trong simulation, và Unitree H1 trong thực tế. Robot có thể vừa đi vừa cầm vật, vừa đi vừa mở cửa.

Ưu điểm của Decoupled

Nhược điểm

Phương pháp 2: Teleoperation + Imitation Learning

Thay vì thiết kế controller thủ công, học từ người:

  1. Teleoperate humanoid: Người điều khiển robot làm task (cầm vật, dọn dẹp, ...)
  2. Thu thập data: Ghi lại observations và actions
  3. Train policy: Dùng Imitation Learning (Behavior Cloning, ACT, Diffusion Policy) để học policy

Hệ thống Teleoperation cho Humanoid

TWIST (Teleoperated Whole-Body Imitation System) và Open-TeleVision là 2 hệ thống teleoperation nổi bật:

# Teleoperation data collection pipeline
class TeleoperationCollector:
    def __init__(self, robot, vr_interface):
        self.robot = robot
        self.vr = vr_interface
        self.dataset = []
    
    def collect_episode(self, task_name):
        """Thu thập 1 episode teleoperation."""
        episode_data = []
        
        while not task_complete:
            # Đọc VR input
            head_pose = self.vr.get_head_pose()
            hand_poses = self.vr.get_hand_poses()  # Left + Right
            body_pose = self.vr.get_body_pose()
            
            # Retarget sang robot
            robot_targets = retarget(
                human_pose={
                    'head': head_pose,
                    'hands': hand_poses,
                    'body': body_pose
                },
                robot_model=self.robot.model
            )
            
            # Thực hiện trên robot
            observation = self.robot.get_observation()
            self.robot.set_targets(robot_targets)
            action = self.robot.get_applied_action()
            
            # Lưu data
            episode_data.append({
                'observation': observation,
                'action': action,
                'image': self.robot.get_camera_images()
            })
        
        self.dataset.append(episode_data)

Imitation Learning cho Loco-Manipulation

Sau khi có data, train policy bằng:

Behavior Cloning (BC) -- đơn giản nhất:

# policy(observation) -> action
loss = MSE(policy(obs), expert_action)

ACT (Action Chunking with Transformers) -- hiệu quả hơn:

Diffusion Policy -- mạnh nhất cho multi-modal:

Chi tiết về ACT và Diffusion Policy: xem Imitation Learning cho RoboticsACT: Action Chunking with Transformers.

Teleoperation system cho humanoid data collection

Phương pháp 3: End-to-End RL

Thay vì tách riêng, train 1 policy duy nhất cho toàn bộ loco-manipulation.

ALMI -- Adversarial Locomotion and Motion Imitation

ALMI sử dụng adversarial training giữa upper và lower body:

ResMimic -- Residual Learning

ResMimic dùng 2 stages:

  1. Stage 1: Train general motion tracking policy (biết đi, đứng, vẫy tay, ...)
  2. Stage 2: Train residual policy trên stage 1 cho specific task (cầm vật, mở cửa)

Residual policy chỉ cần học sự khác biệt giữa general motion và task-specific motion -- nhanh hơn và ổn định hơn train từ đầu.

class ResidualPolicy:
    def __init__(self):
        self.base_policy = load_pretrained("motion_tracking.pt")  # Frozen
        self.residual = nn.Sequential(                             # Trainable
            nn.Linear(obs_dim, 256),
            nn.ReLU(),
            nn.Linear(256, 256),
            nn.ReLU(),
            nn.Linear(256, action_dim)
        )
    
    def forward(self, obs):
        with torch.no_grad():
            base_action = self.base_policy(obs)
        
        residual_action = self.residual(obs)
        
        # Final action = base + residual (với scale nhỏ)
        return base_action + 0.1 * residual_action

WholeBodyVLA -- Vision-Language-Action

WholeBodyVLA (ICLR 2026) là framework mới nhất, kết hợp Vision-Language-Action model với humanoid loco-manipulation:

Đây là hướng đi hot nhất hiện nay -- kết hợp LLM/VLM với whole-body control.

So sánh các phương pháp

Phương pháp Ưu điểm Nhược điểm Papers
Decoupled Dễ debug, reusable Sub-optimal, limited Mobile-TeleVision
Teleop + IL Học từ demo, flexible Cần data, operator TWIST, Open-TeleVision
End-to-end RL Optimal, no human Khó train, reward design ALMI
Residual Nhanh, stable Cần base policy ResMimic
VLA Language grounding Cần compute, data WholeBodyVLA

Challenges còn lại

1. Dexterous manipulation trong khi đi

Hầu hết research chỉ demo power grasp (nắm chắc) trong khi đi. Dexterous manipulation (xoay vật, mở nắp, sử dụng công cụ) trong khi di chuyển vẫn rất khó.

2. Reactive balance

Khi robot đang cầm vật nặng và bị đẩy, nó cần đồng thời giữ vật và giữ thăng bằng. Priority nào cao hơn? Trade-off này chưa được giải quyết tốt.

3. Long-horizon tasks

Các task dài (ví dụ dọn phòng, nấu ăn) đòi hỏi kế hoạch dài hạn -- điều mà current policies chưa làm tốt. Cần kết hợp với task planning (LLM-based).

4. Multi-contact

Robot tương tác đồng thời với nhiều vật (ví dụ cầm 2 tay, dùng chân chèn khóa) -- số điểm tiếp xúc tăng, độ phức tạp tăng theo.

Hướng nghiên cứu 2026-2027

  1. VLA + Whole-body: Dùng language models để điều khiển toàn thân humanoid
  2. Teleoperation at scale: Thu thập data từ hàng trăm người, train general-purpose policy
  3. Sim-to-real cho manipulation: Hiện tại sim-to-real cho locomotion đã tốt, nhưng cho manipulation vẫn khó (contact-rich)
  4. Multi-robot loco-manipulation: 2 humanoid hợp tác nâng vật nặng

Tiếp theo trong series


Bài viết liên quan

Bài viết liên quan

Unitree G1 vs H1 vs Tesla Optimus: So sánh humanoid 2026
humanoidroboticsresearch

Unitree G1 vs H1 vs Tesla Optimus: So sánh humanoid 2026

Phân tích chi tiết 3 nền tảng humanoid robot phổ biến nhất — specs, giá thành, SDK và khả năng ứng dụng thực tế.

23/3/202612 phút đọc
Nghiên cứuTrung Quốc dẫn đầu cuộc đua Humanoid Robot 2026
humanoidresearch

Trung Quốc dẫn đầu cuộc đua Humanoid Robot 2026

Phân tích thị trường humanoid Trung Quốc -- Unitree, UBTECH, Fourier, Agibot và chiến lược quốc gia.

12/3/20269 phút đọc
Deep DiveImitation Learning: BC, DAgger và DAPG cho robot
ai-perceptionimitation-learningprogrammingPhần 2

Imitation Learning: BC, DAgger và DAPG cho robot

Tại sao imitation learning quan trọng hơn RL cho nhiều bài toán manipulation — cách thu thập data và train policy.

8/3/202611 phút đọc