Skip to content

Conversation

@sourinkrpal
Copy link

@sourinkrpal sourinkrpal commented Nov 9, 2025

Summary

This PR introduces a new example showcasing the integration of the Unitree G1 humanoid robot with PyCRAM.
It adds the necessary robot description and a minimal pick-and-place demo in the BulletWorld simulation environment.


Added / Modified Files

  • demos/pycram_bullet_world_demo/g1_demo.py

    • New demo for the Unitree G1 robot.
    • Demonstrates basic motion control, object attachment/detachment, and environment interaction using standard PyCRAM.
  • resources/robots/g1/g1.urdf

    • URDF model for the Unitree G1 humanoid robot.
    • Used for visualization and joint kinematics in the PyBullet-based world.
  • robot_descriptions/g1_description.py

    • Robot description file defining joints, links, and relevant PyCRAM interfaces for the G1.

Usage

The demo runs identically to the existing PyCRAM examples.

1. Install PyCRAM (from the main README)

Follow the official installation guide:
👉 https://pycram.readthedocs.io/en/latest/installation.html

2. Activate the virtual environment

3. Run the Unitree G1 Demo

cd src/pycram/demos/pycram_bullet_world_demo
python g1_demo.py
Screenshot from 2025-11-04 17-04-24 Screenshot from 2025-11-04 17-06-23

Copy link
Collaborator

@Tigul Tigul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these images used somewhere?

obj.set_pose(PoseStamped.from_list([x, y, z], [0, 0, 0, 1]))
pause(wait)

def pick_and_place(robot, obj, pick_base, place_base, final_xyz, wrist_link):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a designator that does exactly that please try to stick to the designators.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't add these robot specific files directly

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't add the robot meshes instead link to the ROS package that contains these

left_gripper = EndEffectorDescription(
"left_gripper",
"left_wrist_roll_rubber_hand", # palm
"left_wrist_roll_rubber_hand", # tool frame (temporary TCP)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These shouldn't be the same

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants