Skip to main content

Animal models and animations for robotics simulators (esmini, MuJoCo, Isaac Sim, CARLA).

Project description

AnimaSim

A standard set of animal models and animations for robotics/AV simulators (esmini, MuJoCo, Isaac Sim, and CARLA) which today ship almost no animal assets. When animals are missing from the asset libraries, they tend to be left out of the algorithms engineers build and the scenarios regulators design, even though real-world deer-on-highway and dog-in-driveway interactions are common. AnimaSim ports an open animal pack into these platforms with a small, dockerized conversion pipeline plus a runnable example per platform.

All 12 animals are ported to every platform and spawn through each one's idiomatic mechanism (esmini catalog, MuJoCo include, Isaac USD, CARLA blueprint). Deer is the worked example with a runnable scene per platform; the rest are discoverable and render together as a menagerie (see the gallery).

Install

pip install animasim ships the asset-locator API and CLI, with every generated artifact bundled in the wheel — resolve a path and hand it to your simulator:

from animasim import get_mjcf, get_usd, get_osgb, get_glb, list_animals
import mujoco

model = mujoco.MjModel.from_xml_path(str(get_mjcf("deer")))   # MuJoCo
# get_usd("deer") -> Isaac Sim/USD   get_osgb("deer") -> esmini   get_glb("deer") -> Blender/glTF

From the shell: animasim path deer -f usd. The CARLA cooked package is distributed separately as a release asset (see platforms/carla).

Quickstart (from source)

git lfs install && git lfs pull     # fetch vendored + generated assets (Git LFS)
uv sync --extra pipeline            # environment + conversion/validation toolchain
uv run animasim list                # the 12 animals and their rigs
uv run animasim validate deer       # check the generated artifacts

Regenerate the assets (needs Docker for the osgconv step):

uv run animasim convert deer        # -> assets/generated/{glb,osgb,mjcf,metadata}/deer.*

Platform support

Platform Status How it runs Example
MuJoCo ✅ verified (runs + renders) uv (Python lib) deer on a ground plane; all 12 as <include> models — platforms/mujoco
esmini ✅ verified (headless run + offscreen recording) esmini container deer crosses a highway, ego brakes (OpenSCENARIO); all 12 in the catalog — platforms/esmini
Isaac Sim ✅ verified (GPU: convert + spawn + pilot) Isaac Sim container (NGC) spawn + pilot the deer; all 12 as UsdSkel — platforms/isaacsim
CARLA ✅ verified (GPU: drop-in cooked package + spawn) prebuilt CARLA container all 12 as static.prop.<animal>platforms/carla

Sim engines run in Docker (esmini, Isaac, CARLA); Python (the animasim CLI, validators, MuJoCo) runs in the uv environment.

Gallery

Simulator Menagerie
Isaac Sim 12 animals marching in Isaac Sim
CARLA 12 animals in CARLA
MuJoCo 12 animals in MuJoCo
esmini Deer crossing in esmini

Isaac Sim and MuJoCo show all 12 animals together; esmini shows the deer crossing a road. Each platform's README has the commands to reproduce its clip.

Animation fidelity

The source models share one skeleton and carry ~13 animation clips each (Idle, Walk, Gallop, Eating, …). Clips are preserved where the target supports skeletal animation:

Target Skinned animation Clips
glb (interchange) yes all (native)
Isaac Sim / USD yes (UsdSkel) all — one SkelAnimation prim per clip, CI-validated
esmini (.osgb) no (static scene-graph model) n/a
MuJoCo (mesh) no (physics engine) n/a
CARLA (.fbx prop) no (static prop) n/a

How it fits together

assets/source/      vendored source (glTF/OBJ/FBX, Git LFS)
assets/generated/   derived artifacts grouped by format (glb, osgb, usd, mjcf, fbx, carla, metadata)
src/animasim/       CLI + animal registry (config.py) + pipeline + validators
platforms/<name>/   per-platform assets, example scene, and runner
docker/             pipeline (osgconv) and esmini images

Adding an animal

The pipeline is data-driven: add an entry to the registry in src/animasim/config.py (name, source file, height, bbox, rig variant) and run uv run animasim convert <animal>. No code changes required. All 12 animals ship with their source files vendored; importing a new animal beyond them is the only step that needs the original pack — point ANIMASIM_SOURCE_PACK at it (or pass --source) and convert vendors its source on the way.

License & assets

Project code: MIT (see LICENSE). The bundled animal models are from the Quaternius "Ultimate Animated Animals" pack, released under CC0 (public domain); they are vendored and redistributed here under those terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

animasim-0.2.0.tar.gz (13.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

animasim-0.2.0-py3-none-any.whl (13.9 MB view details)

Uploaded Python 3

File details

Details for the file animasim-0.2.0.tar.gz.

File metadata

  • Download URL: animasim-0.2.0.tar.gz
  • Upload date:
  • Size: 13.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for animasim-0.2.0.tar.gz
Algorithm Hash digest
SHA256 147717710be20a7b1ce21dbff672937b86e49e272e3c789d1c07abf95a00d74a
MD5 e077039172fd07b9953d976b46c4f039
BLAKE2b-256 c9bf6c2e3490e52a2c843c753e9004c0d9648ab1a9ea16def5bd99231cbe6e1c

See more details on using hashes here.

File details

Details for the file animasim-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: animasim-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for animasim-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77112c10e3bb06826fc1fd99eba174352ede18eefba39d3e7902c665c81b45ec
MD5 17341672965c177958eb5d9305410cdd
BLAKE2b-256 4e7b0cb42a84e7235f43b52d2d3a68a984d7523f03d26c046d492af59960972c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page