trainnr
Copyright 2026 Prakhar Aggarwal

This product is licensed under the Functional Source License, Version 1.1,
ALv2 Future License (FSL-1.1-ALv2; see LICENSE): any use other than a
competing product or service is allowed, and each version is also licensed
under the Apache License, Version 2.0 from the second anniversary of the
day it is made available. The third-party material below keeps its own
licence; the text of the Apache License, Version 2.0 is in
LICENSES/Apache-2.0.txt.

It includes or builds on the third-party material below. Each vendored
directory carries the upstream licence text and a README naming the
repository, commit and date it was taken from. The names below are their
owners' trademarks; no endorsement is implied.

Robot models redistributed under robots/

- ALOHA 2 (Trossen Robotics; BSD-3-Clause, "Copyright (c) 2023, Trossen
  Robotics"), taken from MuJoCo Menagerie (Google DeepMind,
  https://github.com/google-deepmind/mujoco_menagerie, commit da76818e):
  robots/aloha2-nominal/. Upstream files byte-identical; our wrapper
  aloha2.xml adds sensors only.
- SO-101 / SO-ARM100 (TheRobotStudio and Hugging Face; Apache-2.0), from
  MuJoCo Menagerie: robots/so101-nominal/. Our wrapper so101.xml adds
  sensors only.
- microduck (Pollen Robotics, https://github.com/pollen-robotics/microduck_rl,
  branch develop at d424a0c8; Apache-2.0): robot_walk.xml, under
  robots/microduck/. The 38 meshes it references are not redistributed:
  Pollen Robotics' README says "3D model files are licensed under Creative
  Commons BY-SA-NC", terms that forbid commercial use and are not an
  Apache-2.0 grant. robots/microduck/FETCH.json names each mesh by its
  git blob id at that commit, and trainnr fetches them from Pollen
  Robotics' repository the first time the robot is used, under those
  terms (robots/microduck/LICENSES/MESHES.md). The microduck in the
  README's robots image (docs/figures/readme/robots.png) is rendered from
  those meshes: credit Pollen Robotics, and that part of the image is under
  their Creative Commons BY-SA-NC terms, not this product's licence. The
  reward and randomization constants in
  trainnr-mjlab/src/trainnr_mjlab/microduck_walk.py and the PPO recipe in
  trainnr-mjlab/src/trainnr_mjlab/walk_train.py (`--agent g3`) are quoted
  from src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py at the same
  commit (Apache-2.0).
- Robotiq 2F-85 (from https://github.com/robotiq/isaacsim_assets at 6d992b6),
  imported from USD into robots/robotiq-2f85-isaac/. Dual-licensed as its
  source is:
  - Robotiq's own content, including the CAD visual meshes
    (assets/*_visual.obj): BSD-3-Clause, Copyright (c) 2026, ROBOTIQ.
  - The portions Robotiq adapted from NVIDIA's Isaac Sim asset: CC BY 4.0
    (https://creativecommons.org/licenses/by/4.0/). Original author: NVIDIA
    Corporation; modified by Robotiq; converted to MJCF by trainnr (Newton's
    USD importer; prim paths renamed, hulls moved to files, sensors, a home
    keyframe and control ranges added).
  The texts and the attribution are in robots/robotiq-2f85-isaac/LICENSES/.
  The renders of the gripper (the README's robots image,
  docs/figures/gripper-pick/ and docs/figures/usd-import/) are adapted
  material under the same terms and the same attribution.
- Unitree Go2 (Unitree Robotics, https://github.com/unitreerobotics/unitree_rl_mjlab;
  Apache-2.0): the declared actuator constants in
  trainnr-mjlab/src/trainnr_mjlab/go2_walk.py are read from
  src/assets/robots/unitree_go2/ at 1425b15, and its gait clock
  (`gait_phase`) is transcribed from the reference's `mdp.phase`. The Go2 model itself is not
  distributed; onboarding reads it from the user's own copy. The images of
  the Go2 in README.md and under docs/figures/ (the Studio's screenshots in
  docs/figures/readme/) are rendered from that model.

Actuator models under robots/actuators/ and robots/actuator-bundles/

- BAM (Rhoban; Duclusaud, Passault, Padois, Ly, ICRA 2025;
  https://github.com/Rhoban/bam; Apache-2.0): the fitted actuator
  parameters for the Dynamixel MX-64, MX-106, XL-320, XL-330, the Feetech
  STS3215, the Waveshare ST3025 and the eRob 80 series, each with a
  PROVENANCE.json naming the source, the citation and the licence; and
  BAM's actuator model itself, whose equations
  trainnr-mjlab/src/trainnr_mjlab/kernel.py and actuator.py port and
  trainnr/trainnr/robot/friction_budget.py transcribes from bam/model.py. The
  xl330-refit bundle carries parameters fitted by this project on BAM's
  published bench logs, whose licence is not stated; the logs are not
  redistributed.

Public telemetry the tools can fetch (not distributed here; the licence
state is shown before download and recorded on every recording made)

- leg-odometry (Yibin Wu et al., https://github.com/YibinWu/leg-odometry,
  release test_v1.0): a real Go2's /lowstate bag. The repository is MIT;
  the bag states no licence of its own.
- "Unitree Go2 Quadruped State Estimation" by Mihaela Popescu, Franek
  Stark, Hannah Isermann, Rohit Kumar, Jonas Haack and Shubham Vyas (DFKI
  Robotics Innovation Center; Zenodo, 2026, DOI 10.5281/zenodo.19336009,
  https://zenodo.org/records/19336009), licensed under CC BY 4.0
  (https://creativecommons.org/licenses/by/4.0/): the field201 bag, a real
  Go2 on Vulcano Island. Changes: joint parameters fitted from it and
  plotted; the figures under docs/figures/go2-sysid/dfki-field201/ are
  derived from it.
- sim2real-robot-identification (Dynamic Legged Systems Lab, Istituto
  Italiano di Tecnologia,
  https://github.com/iit-DLSLab/sim2real-robot-identification at b73d6a2;
  BSD-3-Clause, "Copyright (c) 2025, DLS Lab at Istituto Italiano di
  Tecnologia, Italy"): the Go2 chirp datasets/go2/traj_0.pt. The figures
  under docs/figures/go2-sysid/iit-chirp/ are derived from it.

Interfaces and data restated here

- ROS 2 message definitions (Apache-2.0): trainnr/trainnr/robots/ros_layouts.py
  restates the field layouts of std_msgs, geometry_msgs and sensor_msgs
  (https://github.com/ros2/common_interfaces) and builtin_interfaces
  (https://github.com/ros2/rcl_interfaces) to decode recordings.
- Unitree's unitree_ros2 message definitions (BSD-3-Clause, "Copyright (c)
  2016-2024 HangZhou YuShu TECHNOLOGY CO.,LTD. ("Unitree Robotics")") and
  DFKI's dfki-quad interfaces (BSD-3-Clause, "Copyright (c) 2024 Shubham
  Vyas, Rohit Kumar, Franek Stark, Hannah Isermann, and Jakob Middelberg
  (DFKI GmbH, Robotics Innovation Center), and Mihaela Popescu, and Jonas
  Haack (Robotics Research Group, University of Bremen) and DFKI Quadruped
  contributors"): trainnr/trainnr/robots/adapters/rosbag2.py restates
  their message layouts to decode recordings.
- ArmnetBench v0.1 (armnet; arXiv:2607.24481; the Hugging Face datasets
  armnet/armnetbench_v01_robometer and armnet/armnetbench_v01_lerobot_so101,
  Apache-2.0): data/armnetbench-v01-so101-counts.json and
  data/armnetbench-checkpoint-census.json are counts and a census derived
  from them.

Scenes used in the recorded experiments (not distributed here)

- Mip-NeRF 360, "garden" (Barron et al., CVPR 2022; Google Research): taken
  from the nvs-bench/mipnerf360 mirror on Hugging Face, which is tagged MIT;
  the publisher states no licence. The repository keeps renders of the
  reconstructed scene (the README's simulator image,
  docs/figures/viewport-deploy/) and the evaluation rows, not the capture.
- Neverwhere Visual Parkour Benchmark (https://github.com/ziyc/neverwhere;
  MIT): the Go1 parkour scenes, imported from a zip the user supplies;
  only the measured numbers are kept here.

Software this product depends on

- MuJoCo and MuJoCo Warp (Google DeepMind, Apache-2.0); mjlab (mujocolab,
  Apache-2.0); rsl_rl (ETH Zurich Robotic Systems Lab, BSD-3-Clause);
  Gymnasium (Farama Foundation, MIT); LeRobot (Hugging Face, Apache-2.0;
  trainnr/trainnr/envs/lerobot_plugin.py implements its EnvConfig
  interface); gym-aloha / ACT (Tony Z. Zhao et al.; Apache-2.0 / MIT): the
  transfer-cube task in trainnr/trainnr/tasks/aloha2/ follows the original
  simulator's conventions, its box and contact constants copied, so
  released checkpoints see the scene they were trained on.
- Rerun (Rerun Technologies, MIT OR Apache-2.0): the Python SDK, and the
  viewer embedded in the Studio through the re_viewer and re_ui crates; the
  Studio's embedding follows Rerun's extend_viewer_ui example
  (rerun-io/rerun 0.36.3) and copies its allocator setup;
  egui and eframe (MIT OR Apache-2.0). The Studio's binary also statically
  links other Rust crates under permissive licences (MIT, Apache-2.0, BSD,
  ISC, Zlib, Unicode-3.0, MPL-2.0 and others), among them the zstd, LZ4 and
  mimalloc C libraries (BSD-3-Clause, Meta Platforms; BSD-2-Clause, Yann
  Collet; MIT, Microsoft Corporation and Daan Leijen) and
  Apache Arrow and DataFusion with their NOTICE files. It embeds five
  fonts: Inter (The Inter Project Authors; SIL Open Font Licence 1.1),
  through re_ui; and egui's defaults, Ubuntu Light (Canonical; Ubuntu Font
  Licence 1.0), Hack (Source Foundry Authors; MIT, with Bitstream Vera Sans
  Mono under the Bitstream Vera licence), emoji-icon-font (John Slegers;
  MIT) and Noto Emoji (Google; SIL Open Font Licence 1.1). Every Studio
  archive carries THIRD_PARTY_LICENSES.md with each crate's and font's
  licence text and those NOTICE files; the list is
  crates/trainnr-studio/Cargo.lock and the allow-list is
  crates/trainnr-studio/deny.toml.
- Newton (a Linux Foundation project, initiated by Disney Research, Google
  DeepMind and NVIDIA; Apache-2.0) and OpenUSD (Pixar, Apache-2.0 with the
  Tomorrow Open Source Technology notice): the USD import path.
- torchrunx (GPL-3.0): mjlab declares it as a dependency, so it is installed
  with trainnr-mjlab; mjlab imports it only to launch multi-GPU training.
  trainnr imports it nowhere, and no part of it is distributed here.
- gsplat (Apache-2.0), COLMAP (BSD-3-Clause, a system install) and Open3D
  (MIT): the scene capture chain.
