Skip to content

GitHub Import

Canard can import robots and discover environments directly from GitHub repos. Connect your GitHub account for private repo access, or paste a public repo URL.

Importing a Robot

Your repo must contain a .urdf file. Canard finds the shallowest URDF automatically.

Required structure

my-robot/
├── robot/
│   ├── my_robot.urdf        # Required — at least one .urdf file
│   └── meshes/              # Mesh files referenced by the URDF
│       ├── base.dae
│       ├── link1.stl
│       └── ...
└── ...

URDF mesh paths

Mesh paths in your URDF must be relative — not package:// paths:

<!-- Good -->
<mesh filename="meshes/base.dae"/>

<!-- Bad — Canard can't resolve ROS packages -->
<mesh filename="package://my_robot_description/meshes/base.dae"/>

If your URDF uses package:// paths, rename them to relative paths from the URDF file's directory.

Common errors

Error Fix
"No .urdf file found in repository" Add a .urdf file to your repo
"Repo or ref not found" Check the URL and branch name. For private repos, connect GitHub in Settings
"Repository too large (>200MB)" Reduce mesh file sizes or remove unnecessary files

Discovering Environments

For training runs, Canard scans your repo for gym.register() calls.

Required structure

my-env/
├── my_env/
│   ├── __init__.py           # Must contain gym.register(id="My-Env-v0", ...)
│   ├── my_env.py
│   └── my_env_cfg.py
├── setup.py or pyproject.toml
└── ...

The key requirement is a gym.register() call with a string id parameter somewhere in a .py file.

Connecting GitHub

  1. Go to Settings in the dashboard
  2. Click Connect GitHub under Connected Accounts
  3. Authorize Canard in the GitHub popup
  4. Your repos now appear in the dropdown on Add Robot and New Run pages

Private repos require a GitHub connection. Public repos work without connecting.

Example repos

Repo Type Description
go2-standing-env Robot + Environment Unitree Go2 with URDF and standing balance env