Design, simulate, and optimize industrial robot motions.
Choose your mode to get started.
Robodimm is a web application for robot motion programming, inverse dynamics, and automated actuator sizing for scalable industrial robots. It combines a physics-based backend with an interactive 3D frontend to provide an end-to-end toolchain: from trajectory specification to motor and gearbox selection.
Key features:
- DEMO mode β runs entirely in the browser, no server required.
- PRO mode β full physics backend via FastAPI + Pinocchio + Pink.
- CR4 4-DOF palletizer (parallelogram closed-loop) and CR6 6-DOF spherical-wrist robot models.
- Constrained inverse dynamics (KKT), actuator requirement analysis, and motor/gearbox selection.
- Geometric scaling laws for structural mass/inertia with configurable exponents.
Try it now at https://customrobotics.es/
DEMO mode β browser-only simulation: joint jogging, target programming, and trapezoidal motion profiles:
PRO mode demo β real-time inverse dynamics, IK solver, and actuator sizing (click to play):
demo_robodimm.mp4
Robodimm has two operating modes with different requirements:
| DEMO mode | PRO mode | |
|---|---|---|
| Physics backend (Pinocchio, Pink) | β browser only | β required |
| Inverse dynamics (KKT) | β | β |
| IK solver (Pink QP) | β | β |
| REST API (FastAPI) | β | β |
| Installation required | none | Docker / Conda |
All logic runs in the browser (JavaScript). No server or Python dependencies needed.
python3 -m http.server 8080 --directory frontendOpen http://localhost:8080/simulator.html?mode=demo
Docker (recommended) β single command, no dependency management:
cp .env.local .env
docker compose up --buildOpen http://localhost:8000/ or http://localhost:8000/simulator?mode=pro
Conda β for development:
conda env create -f environment.yml
conda activate robodimm_env
uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000pip β minimal setup:
pip install -r requirements.txt
uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000Default login: admin / robotics
The test suite requires Pinocchio and Pink (included in environment.yml and the Docker image).
Docker (recommended):
docker compose build
docker compose run --rm robodimm micromamba run -n base pytest tests/ -vConda:
conda activate robodimm_env
pytest tests/ -vThe suite contains 214 unit tests covering:
| Module | Tests | Coverage |
|---|---|---|
robot_core.interpolation |
22 | Trapezoidal/linear profiles, multi-DOF trajectories |
robot_core.inertial_params |
25 | Box/cylinder inertia, CR4 scaling laws |
robot_core.actuators |
23 | Trajectory requirements, motor/gearbox selection |
robot_core.kinematics |
22 | FK (forward kinematics), IK solver, build_robot |
robot_core.dynamics |
15 | KKT constrained ID, trajectory dynamics, method comparison |
robot_core conversions |
16 | Real β Pink β RobotStudio joint space round-trips |
backend.models |
43 | Pydantic schema validation for all API endpoints |
backend.utils |
22 | Coordinate conversions, demo targets, index mapping |
All tests pass in < 1 second on the Docker image (Python 3.10, Pinocchio 3.x, Pink 4.x).
robodimm-main/
βββ backend/ # FastAPI app and API routers
βββ frontend/ # Web UI and DEMO-side logic (Three.js)
βββ robot_core/ # Robot builders, kinematics, dynamics, actuators
β βββ builders/ # CR4 and CR6 Pinocchio model builders
β βββ dynamics/ # Constrained ID, trajectory dynamics
βββ tests/ # 214 unit tests (pytest)
βββ meshes/ # Robot mesh assets (GLTF/GLB)
βββ docs/ # Documentation and images
βββ environment.yml # Conda environment (Python 3.10 + Pinocchio + Pink)
βββ Dockerfile # Micromamba-based container
βββ actuators_library.json # Shared actuator catalog
- Joint and Cartesian jog with real-time IK
- Target and program editing with MoveJ / MoveL / MoveC instructions
- DEMO/PRO execution behind a common frontend workflow
- Trajectory inverse dynamics (RNEA + KKT constraints) and CSV export
- Actuator library management and motor/gearbox selection with safety factors
- Geometric scaling of structural mass and inertia (configurable exponents)
- Payload, friction, reflected inertia, and motor stator mass configuration
- PRO mode is expected on port
8000. - DEMO clears local storage on load unless
?keep_saved=trueis used. - The shared actuator library uses anonymized generic labels such as
AC_*andHD*. - Structural scaling parameters are configurable in the app; the paper case-study values are not hardcoded defaults.
Robodimm is described in the following paper:
J. L. Torres, M. Munoz, J. D. Alvarez, J. L. Blanco, and A. Gimenez, "Robodimm: A Physics-Grounded Framework for Automated Actuator Sizing in Scalable Modular Robots," arXiv:2603.06864, 2026.
@article{torres2026robodimm,
title = {Robodimm: A Physics-Grounded Framework for Automated Actuator Sizing in Scalable Modular Robots},
author = {Torres, J. L. and Munoz, M. and Alvarez, J. D. and Blanco, J. L. and Gimenez, A.},
journal = {arXiv preprint arXiv:2603.06864},
year = {2026},
doi = {10.48550/arXiv.2603.06864},
url = {https://arxiv.org/abs/2603.06864}
}This project is licensed under the MIT License.


