VnRoboVnRobo
AboutPricingBlogContact
🇻🇳VISign InStart Free Trial
🇻🇳VI
VnRobo logoVnRobo 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
VnRoboVnRobo
AboutPricingBlogContact
🇻🇳VISign InStart Free Trial
🇻🇳VI
  1. Home
  2. Blog
  3. G1 arm-only planning with cuRobo: keeping balance
humanoidcurobounitree-g1humanoidarm-controltutorial

G1 arm-only planning with cuRobo: keeping 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: Oct 9, 2026
G1 arm-only planning with cuRobo: keeping 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:

yaml
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:

python
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.

Explore VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions
curobo-jetson-g1 — Part 8/10
← Scene mapping for cuRobo: depth cameras, TSDF/ESDFG1 whole-body with cuRobo: floating base and retargeting →

Related Posts

Tutorial
G1 whole-body with cuRobo: floating base and retargeting
curobounitree-g1whole-bodyPart 9
humanoid

G1 whole-body with cuRobo: floating base and retargeting

A deployment-oriented guide to Unitree G1 whole-body workflows with cuRobo extra_links, tool frames, MotionRetargeter, IK/MPC, and BVH/SOMA data.

6/16/20264 min read
NT
Tutorial
Deploying cuRobo on real robots: checklist and rollback
curobodeploymentjetsonPart 10
humanoid

Deploying cuRobo on real robots: checklist and rollback

The final guide in the series: current cuRobo issues, Jetson deployment risks, and safety checklists for robot arms and Unitree G1.

6/20/20265 min read
NT
Tutorial
PlotJuggler + G1: ROS2 Setup & Live Topic Streaming
plotjugglerros2unitree-g1Part 1
humanoid

PlotJuggler + G1: ROS2 Setup & Live Topic Streaming

Install ros-humble-plotjuggler-ros, configure CycloneDDS for Unitree G1, and stream /lowstate and /sportmodestate live in under 15 minutes.

6/15/202613 min read
NT
VnRobo logoVnRobo 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