Skip to main content

LeRobot + ugo Nova

License

This package connects the ugo Nova humanoid to Hugging Face's LeRobot. Once installed, the robot type ugo_nova is available to the LeRobot CLI tools. It reads Nova's joint states and cameras and sends joint position commands over ROS 2.

Installation

pip install lerobot_robot_ugo_nova

Requires Python 3.12. This installs lerobot==0.6.1; add the LeRobot extras your policy needs.

On the robot, install into an environment that can see ROS 2 Jazzy's rclpy, e.g. a venv created with python3 -m venv --system-site-packages after source /opt/ros/jazzy/setup.bash.

Check Installed Version

python -c "from importlib.metadata import version; print(version('lerobot_robot_ugo_nova'))"

Quick Start

Setup Variables

export REPO_ID="username/my_dataset"
export TASK_NAME="Pick up the cup"

Inference

lerobot-rollout \
  --strategy.type=base \
  --robot.type=ugo_nova \
  --policy.path=<checkpoint> \
  --inference.type=rtc \
  --task="$TASK_NAME" \
  --duration=60

Replay

lerobot-replay \
  --robot.type=ugo_nova \
  --dataset.repo_id=$REPO_ID \
  --dataset.episode=0

Dataset Viewer

lerobot-dataset-viz \
  --repo-id $REPO_ID \
  --episode-index 0

Policy Training

lerobot-train \
  --dataset.repo_id=$REPO_ID \
  --policy.type=act \
  --policy.device=cuda \
  --policy.push_to_hub=false \
  --output_dir=outputs/train/my_policy \
  --job_name=my_policy

Configuration

Override any field with --robot.<field>=..., e.g. --robot.exclude_joints='[waist_j1, waist_j2, waist_j3]'.

Field Default Description
joint_names 22 joints (waist, chest, neck, both arms and grippers) Names and order of the joints in observations and actions
exclude_joints [] Joints that receive no command (they keep their current target)
joint_states_topic /joint_states Joint state topic
camera_topics hand_left, hand_right, head (see below) Camera name → JPEG topic
camera_shapes hands (1200, 1920), head (720, 1280) (the cameras' own size) Camera name → (height, width) of the returned image. Smaller shapes are resized; exactly half is the fastest
command_topic /upper_body_position_controller/commands Command topic
connect_timeout_s 10.0 How long connect() waits for every topic
joint_max_age_s / camera_max_age_s 0.2 / 0.5 Older joint states / images raise an error instead of being used

See config_ugo_nova.py for the full joint list.


ROS 2 Interface

Topic Type
Joint states /joint_states sensor_msgs/JointState
Cameras /camL/image_raw/compressed, /camR/image_raw/compressed, /head/image_raw/compressed sensor_msgs/CompressedImage
Commands /upper_body_position_controller/commands std_msgs/Float64MultiArray
  • Observation: joint positions (rad) keyed by <joint>.pos (e.g. arm_r_j1.pos), and one RGB image per camera.
  • Action: target joint positions (rad) keyed by <joint>.pos, published as one array in joint_names order. Excluded joints are sent as NaN, which the controller treats as "keep the current target".

Development

git clone https://github.com/ugo-plus/lerobot-robot-ugo-nova.git
cd lerobot-robot-ugo-nova
pip install -e .

License

Apache-2.0. See LICENSE.

Metadata

Release files for lerobot-robot-ugo-nova 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lerobot-robot-ugo-nova 0.1.0
File Size Uploaded
lerobot_robot_ugo_nova-0.1.0.tar.gz 10.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lerobot-robot-ugo-nova 0.1.0
File Interpreter ABI Platform
lerobot_robot_ugo_nova-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.9 kB

Release files / lerobot_robot_ugo_nova-0.1.0.tar.gz

Download URL lerobot_robot_ugo_nova-0.1.0.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e64f1366965e49e4b1819bfca23d5074628f8212b951835f0de7965c7bf5c33c
BLAKE2b-256 checksum
How to use checksums
b1f03b5e7468404c54c1d6d431c8d45f41033c4532b92de26006a81c37cfe6f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / lerobot_robot_ugo_nova-0.1.0-py3-none-any.whl

Download URL lerobot_robot_ugo_nova-0.1.0-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
58f619d6be4372bbba8ddf68b28db089502d3f68272962cb26e8b3ef2a205385
BLAKE2b-256 checksum
How to use checksums
84293a141e332b04556bcc82455c9bda9beff6cd2c774063d9b32a50c0251af3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page