VnRobo
AboutPricingBlogContact
🇻🇳VISign InStart Free Trial
🇻🇳VI
VnRobo logo

AI infrastructure for next-generation industrial robots.

Product

  • Features
  • Pricing
  • Knowledge Base
  • Services

Company

  • About Us
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 VnRobo. All rights reserved.

Made with♥in Vietnam
VnRobo
AboutPricingBlogContact
🇻🇳VISign InStart Free Trial
🇻🇳VI
  1. Home
  2. Blog
  3. Unitree G1 arm-only planning with cuRobo: moving arms without breaking balance
humanoidcurobounitree-g1humanoidarm-controltutorial

Unitree G1 arm-only planning with cuRobo: moving arms without breaking balance

Using cuRobo for Unitree G1 arm-only workflows with locked legs/waist, joint maps, wrist tool frames, self-collision, and command gates.

Nguyen Anh TuanJune 13, 20263 min readUpdated: Jun 19, 2026
Unitree G1 arm-only planning with cuRobo: moving arms without breaking balance

How arm-only humanoid control differs from a fixed arm

A bolted robot arm has a fixed base. Unitree G1 has a body that must stay balanced. If arm planning moves the center of mass too aggressively, the low-level locomotion controller may be forced beyond its stable region. Arm-only does not mean ignoring the whole body; it means another controller stabilizes the legs and waist while cuRobo plans safe arm targets.

1. Choose the joint subset

Split joints into groups:

locked_joints:
  - left_hip_pitch_joint
  - left_knee_joint
  - right_hip_pitch_joint
  - right_knee_joint
  - waist_yaw_joint

planned_joints:
  - left_shoulder_pitch_joint
  - left_shoulder_roll_joint
  - left_shoulder_yaw_joint
  - left_elbow_joint
  - left_wrist_roll_joint
  - left_wrist_pitch_joint
  - left_wrist_yaw_joint

Keep locked_joints at the current posture or a nominal posture. Current open issue #668 requests a per-call lock_joints override for a shared multi-arm MotionPlanner; this matters for G1 because different tasks may lock legs and waist differently. Until that exists, use explicit planner configs per mode instead of mutating one shared planner.

2. Tool frame for the wrist

G1 arm tasks usually target the wrist or palm, not the elbow. Check:

  • left_wrist_yaw_link for wrist orientation;
  • a custom palm/gripper frame if an end-effector is attached;
  • a versioned fixed transform from wrist to TCP.

3. Safe workspace

Start with a small workspace:

Region Recommendation
in front of chest safest for testing
shoulder height limit roll/yaw
far in front can pull COM
behind the back forbid in arm-only mode

Do not allow the planner to stretch the arm far away from the torso unless the locomotion controller is aware of the task.

4. Command gate

Before sending targets:

if max_abs_delta(q_target - q_current) > delta_limit:
    reject("joint jump")
if estimated_hand_distance_from_torso > reach_limit:
    reject("reach limit")
if base_state.pitch_abs > pitch_limit:
    reject("base unstable")

The arm-only bridge should subscribe to base IMU/state. If the robot is leaning or stepping, slow down or reject arm targets.

5. Test sequence

  1. Replay in simulation with legs locked.
  2. Hardware gravity compensation, no object.
  3. Move the wrist inside a small 20 cm box.
  4. Add self-collision checks against the torso.
  5. Try a light object with low speed limits.

Conclusion

cuRobo is useful for G1 arm-only planning, but the balance controller remains an external constraint. Do not send large arm trajectories while the base is unstable. Next we extend this to whole-body retargeting with a floating base and multi-tool-frame IK/MPC.

NT

Nguyễn Anh Tuấn

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

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions

Related Posts

NEWTutorial
Unitree G1 whole-body với cuRobo: floating base, tool frames và retargeting
curobounitree-g1whole-body
humanoid

Unitree G1 whole-body với cuRobo: floating base, tool frames và retargeting

Hướng dẫn triển khai hướng whole-body cho Unitree G1 bằng cuRobo: extra_links floating base, tool frames, MotionRetargeter, IK/MPC và dữ liệu BVH/SOMA.

6/16/20263 min read
NT
NEWTutorial
PlotJuggler + G1: Cài đặt ROS2 và kết nối live
plotjugglerros2unitree-g1Part 1
humanoid

PlotJuggler + G1: Cài đặt ROS2 và kết nối live

Cài ros-humble-plotjuggler-ros, cấu hình CycloneDDS cho Unitree G1, rồi stream live /lowstate và /sportmodestate trong 15 phút.

6/15/202614 min read
NT
Tutorial
unifolm-vla + Unitree G1 (Bài 5): deploy inference server, SSH tunnel, và locomotion song song
humanoidvladeployPart 5
humanoid

unifolm-vla + Unitree G1 (Bài 5): deploy inference server, SSH tunnel, và locomotion song song

Bài cuối series: khởi động FastAPI inference server, kết nối G1 qua SSH tunnel, gửi action commands, chạy arm VLA và locomotion đồng thời — kèm safety checklist và debug guide cho các lỗi thường gặp trên phần cứng thật.

6/7/20269 min read
NT
VnRobo logo

AI infrastructure for next-generation industrial robots.

Product

  • Features
  • Pricing
  • Knowledge Base
  • Services

Company

  • About Us
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service

© 2026 VnRobo. All rights reserved.

Made with♥in Vietnam