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¶
- Go to Settings in the dashboard
- Click Connect GitHub under Connected Accounts
- Authorize Canard in the GitHub popup
- 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 |