Skip to main content

Unified High-Throughput Robotics Library

Project description

RoboCore

Unified robotics toolkit for robot modeling, kinematics, dynamics, transforms, planning, analysis, simulation bridges, and distance-field utilities.

PyPI Python Build And Publish Wheels License: MIT Release Candidate

RoboCore is currently prepared as a 2.5.0rc4 release candidate. The core package is designed to import cleanly without optional GPU, MuJoCo, WDF, or robot-description assets installed.

What It Includes

Area Current support
Modeling URDF and MJCF parsing, robot model abstraction, chain and multi-chain helpers
Kinematics FK, analytic/numeric Jacobian, DLS/pinv/transpose IK, batch APIs
Backends C++/Eigen pybind11 backend (recommended), NumPy, PyTorch CPU/CUDA
Dynamics Inverse dynamics, forward dynamics, mass matrix, gravity, nonlinear effects
Transform SO(3), SE(3), RPY, quaternion, axis-angle conversions
Planning Joint-space and Cartesian path utilities, velocity profiles
Analysis Workspace sampling, reachability, singularity metrics
Bridge MuJoCo simulation bridge and trajectory utilities
WDF SDF/RDF utilities behind the optional wdf extra
Config YAML configs, schemas, robot-description URI resolution

Installation

RoboCore requires Python 3.11+.

git clone https://github.com/Synria-Robotics/RoboCore.git
cd RoboCore

python -m venv .venv
source .venv/bin/activate
pip install -e .

The C++ backend is built from source when installing the package. It requires a C++17 compiler, pybind11, and Eigen3 headers. pybind11 is installed by the build system; Eigen3 must be installed on the system or provided via EIGEN3_INCLUDE_DIR.

# Ubuntu / Debian
sudo apt update
sudo apt install build-essential libeigen3-dev

# macOS
xcode-select --install
brew install eigen

# Custom Eigen location
export EIGEN3_INCLUDE_DIR=/path/to/include/eigen3

Optional extras:

pip install -e ".[torch]"         # PyTorch backend
pip install -e ".[descriptions]"  # synriard robot assets used by examples/tests
pip install -e ".[benchmark]"     # pytorch_kinematics + Pinocchio comparison scripts
pip install -e ".[mujoco]"        # MuJoCo runtime bridge
pip install -e ".[sim]"           # MuJoCo + mujoco-py compatibility
pip install -e ".[wdf]"           # mesh SDF/RDF utilities
pip install -e ".[all]"           # all packaged extras

From PyPI:

pip install synria-robocore
pip install "synria-robocore[torch,descriptions,benchmark]"

synriard is only required for examples and tests that load published Synria robot assets. Humanoid examples using openrd://... need the OpenRD package separately when it is available.

Quick Start

import robocore as rc
from robocore.configs import resolve_description_path
from robocore.modeling import RobotModel
from robocore.kinematics import forward_kinematics, jacobian, inverse_kinematics

urdf = resolve_description_path("synriard://Alicia_D/v5_6/gripper_100mm/urdf")
model = RobotModel(urdf, base_link="base_link", end_link="tool0")

q = model.random_q(seed=0)

rc.set_backend("cpp")
T = forward_kinematics(model, q, return_end=True)
J = jacobian(model, q, method="analytic")
ik = inverse_kinematics(model, T, q, method="dls")

print(T.shape)          # (4, 4)
print(J.shape)          # (6, model.num_chain_dof)
print(ik["success"])    # True for this reachable target

Benchmark Results

Representative rc4 CPU benchmark: Python 3.11.13, Intel Xeon Gold 5320, Alicia-D v5.6 6-DOF arm chain, end_link=link6.

RoboCore provides three kinematics backends: C++/Eigen, NumPy, and PyTorch. Pinocchio and pytorch_kinematics are external comparison libraries, not RoboCore backends. Speedup is normalized to RoboCore C++/Eigen: speedup = backend_time / cpp_time. Larger speedup means C++ is faster.

FK/Jacobian results match the NumPy reference within 1e-9. IK targets are reachable; RoboCore C++/Eigen, NumPy, and PyTorch CPU all solved 50/50 targets.

Forward Kinematics

Backend Type batch=1 ms C++ speedup batch=100 ms C++ speedup
RoboCore C++/Eigen RoboCore backend 0.003 1.0x 0.055 1.0x
RoboCore NumPy RoboCore backend 0.459 144.2x 0.866 15.6x
RoboCore PyTorch CPU RoboCore backend 2.497 783.8x 3.017 54.5x
Pinocchio External comparison 0.005 1.5x 0.523 9.5x
pytorch_kinematics CPU External comparison 0.547 171.5x 1.063 19.2x

Analytic Jacobian

Backend Type batch=1 ms C++ speedup batch=100 ms C++ speedup
RoboCore C++/Eigen RoboCore backend 0.003 1.0x 0.063 1.0x
RoboCore NumPy RoboCore backend 0.389 140.6x 29.591 466.5x
RoboCore PyTorch CPU RoboCore backend 2.535 917.2x 6.393 100.8x
Pinocchio External comparison 0.008 2.9x 0.829 13.1x
pytorch_kinematics CPU External comparison 0.560 202.6x 0.969 15.3x

Inverse Kinematics

Backend Type batch=1 ms C++ speedup batch=50 ms C++ speedup Validation
RoboCore C++/Eigen DLS RoboCore backend 0.016 1.0x 0.400 1.0x 50/50
RoboCore NumPy DLS RoboCore backend 3.715 230.8x 83.483 208.9x 50/50
RoboCore PyTorch CPU DLS RoboCore backend 18.952 1177.4x 251.934 630.6x 50/50
Pinocchio CLIK External comparison 2.566 159.4x 643.515 1610.6x sanity
pytorch_kinematics PseudoInverseIK CPU External comparison 310.299 19278.0x 509.076 1274.1x timing only

For low-latency FK/Jacobian/IK, use rc.set_backend("cpp") by default. The PyTorch backend remains useful for tensor workflows and larger batched pipelines. Pinocchio and pytorch_kinematics are included only as external references.

Run the same benchmark locally:

python examples/kinematics/benchmark_fk_alicia_d_backends.py \
  --device cpu --repeats 5 --inner-single 1000 --inner-batch 100

python examples/kinematics/benchmark_jacobian_alicia_d_backends.py \
  --device cpu --repeats 5 --inner-single 1000 --inner-batch 100

python examples/kinematics/benchmark_ik_alicia_d_backends.py \
  --device cpu --batch 50 --repeats 3 --inner-single 40 --inner-batch 4

Add --no-pk-pin to skip the optional pytorch_kinematics/Pinocchio comparison.

Examples

# Kinematics
python examples/kinematics/01a_demo_fk.py
python examples/kinematics/02a_demo_jacobian.py
python examples/kinematics/03a_demo_ik.py
python examples/kinematics/04_benchmark.py

# Dynamics
python examples/dynamics/01a_demo_id.py
python examples/dynamics/02a_demo_fd.py
python examples/dynamics/03a_demo_mass_matrix.py
python examples/dynamics/05_benchmark.py

# Configs and analysis
python examples/configs/demo_with_config.py
python examples/analysis/demo_workspace.py --samples 10000
python examples/analysis/demo_singularity.py

# MuJoCo bridge, requires the mujoco extra
python examples/bridge/demo_mujoco_trajectory.py

Verification

Recommended release checks:

python -c "import robocore, robocore.kinematics, robocore.transform, robocore.dynamics, robocore.configs; print(robocore.__version__)"
pytest test/unit -q
pytest test/integration -q
python -m build
python -m twine check dist/*

Current rc4 local validation covers Python 3.11, 3.12, and 3.13; build, twine check, core unit tests, integration smoke tests, C++ backend smoke tests, and optional CUDA torch subset have passed. Skipped tests require optional robot-description assets, visualization runtimes, or extra simulation packages.

Project Layout

robocore/
  modeling/      RobotModel, chain views, URDF/MJCF parsers
  kinematics/    FK, IK, Jacobian, NumPy/Torch/C++ solvers
  dynamics/      inverse/forward dynamics
  transform/     SO(3), SE(3), rotation conversions
  planning/      path and velocity-profile utilities
  analysis/      workspace and singularity analysis
  bridge/        real/simulation bridges
  configs/       YAML configs and robot-description URI helpers
  wdf/           optional SDF/RDF utilities

License

RoboCore is released under the MIT License. See LICENSE.

Files under robocore/modeling/parser/mjcf_parser preserve upstream Apache-2.0 copyright and license notices where applicable.

Citation

@software{robocore2025,
  title = {RoboCore: Unified High-Throughput Robotics Library},
  author = {Synria Robotics Team},
  year = {2025},
  publisher = {Synria Robotics Co., Ltd.},
  url = {https://github.com/Synria-Robotics/RoboCore},
  version = {2.5.0rc4}
}

Contact

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

synria_robocore-2.5.0rc4.tar.gz (284.7 kB view details)

Uploaded Source

Built Distributions

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

synria_robocore-2.5.0rc4-cp313-cp313-win_amd64.whl (792.5 kB view details)

Uploaded CPython 3.13Windows x86-64

synria_robocore-2.5.0rc4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (884.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

synria_robocore-2.5.0rc4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (845.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

synria_robocore-2.5.0rc4-cp313-cp313-macosx_11_0_arm64.whl (794.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

synria_robocore-2.5.0rc4-cp312-cp312-win_amd64.whl (792.4 kB view details)

Uploaded CPython 3.12Windows x86-64

synria_robocore-2.5.0rc4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (884.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

synria_robocore-2.5.0rc4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (846.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

synria_robocore-2.5.0rc4-cp312-cp312-macosx_11_0_arm64.whl (794.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

synria_robocore-2.5.0rc4-cp311-cp311-win_amd64.whl (785.8 kB view details)

Uploaded CPython 3.11Windows x86-64

synria_robocore-2.5.0rc4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (877.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

synria_robocore-2.5.0rc4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (838.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

synria_robocore-2.5.0rc4-cp311-cp311-macosx_11_0_arm64.whl (785.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file synria_robocore-2.5.0rc4.tar.gz.

File metadata

  • Download URL: synria_robocore-2.5.0rc4.tar.gz
  • Upload date:
  • Size: 284.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for synria_robocore-2.5.0rc4.tar.gz
Algorithm Hash digest
SHA256 9997489f0e0e48b834759870b0a1130fbf87ff3a19daba89d15d13ee63053292
MD5 6803dc94f534a452673f4a29fc242d47
BLAKE2b-256 e9df8fbfd56edc8f699e893bafacde3c6349cf15762c8827681f65701754eefc

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b0bbc5f16dff023fc91f08298a0dc68ad2f8df46eddd2534cae98d2919fda716
MD5 07af624ddb80f273f6bef8657af5e572
BLAKE2b-256 841ee6891ca4ca1af104fd0936eb00c60b205eb6baf03f675c290b334388c4ab

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e37cd66441af4767e3657f70b1c582be278a5b65842ef3bc4d656e1249bd3a20
MD5 a07fb40c4f4fb5b7e31d4a40b265d674
BLAKE2b-256 157a6c445bcaa6833abaa13e63be1a3cccc05a7eba72b513c2c81aba9af6ca23

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d03d451f4845707ced9531456d64f242f75eb1967047cf2c0c9b81ccb9b142a6
MD5 5b62bc460a0884c201e0c74084efa8e7
BLAKE2b-256 6554ab028d8cfede0951b0a6707897e27bad3bbd4386729ddd683fd9ca4551f1

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2ec413254e84d3c95b78fc757520557ad6e91672a5b23a62ad38c2cccf6b6dc
MD5 eec512f4304989237cb64ef3a168ee50
BLAKE2b-256 0c0f7c9d78237f9effecc423008bc17e1658d6acd156df687e7a6a2f7ac4f7a0

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 61dba8c6a97ace922e8e4b0541a6c020c91577ed95cd4958517ef1fb35501c2a
MD5 4366b446c7e08d78b5ffeabba1c0de43
BLAKE2b-256 7e8c8dda80b4d8b2303a6e58fb8b604db322ff407adc81c5dc732de460bef359

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3a8b8550b6653771dfcaecda1541eb4665281b9e3d0fefa611673056661f9c48
MD5 7d6272b620f7d46f8967e0b6fa792376
BLAKE2b-256 281e71a3d38d2c08a91fb72d48b41e45d9d97b0a7d4dfdd63ec9716e78306db8

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4fc94d230af7aaa20e28ddeffe93f09774ad5a7152d4c07988deee4bd8f0bafc
MD5 877b0bcc8462225d483d3a51b557f401
BLAKE2b-256 09c4a32f695b32847c4b67cca8b9c31babdb21405e79b8133b6e90cf57d92073

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 55678ff1937316e389aaf8c504e16e3e611669680b1f2eb3ef4683a90853f404
MD5 29e5c37753803d53573036d3dca79360
BLAKE2b-256 f3f9e60660a9f54d397d781eac577f0fd717c1827b8715e0c267b2615e02bfd0

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5eb1e8faf110e1ba9f570d26c8ce23e58029f92fe9429c1eb11715dfb28acaea
MD5 4627234bd71fd9723e6dd24e9532551a
BLAKE2b-256 d05acf3329bee206073c5f3668bd91453ad143955d2c18870d48e2f4ef8c3676

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bee73a3e6b1e2aa1485a828b26a813d6f94f660ab293249623482485255d80b
MD5 8f628ad3d727148534cd9d23b03f1cda
BLAKE2b-256 3d1509fdbfaae6690d4a8b002b337d00fd339b522e657754f0bb11dec68049e9

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 abb6cd140dcf50fd4c8fafd069777a0e868aab476c099e4e093d4f0ed82b3692
MD5 6c3c2bca060392898ee729810d776b89
BLAKE2b-256 0ee9aebe65b0abe1816c8a2e9cdafdc087da016f5078868cf9c1591d751c07bc

See more details on using hashes here.

File details

Details for the file synria_robocore-2.5.0rc4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 457c15150ebacc255fae66c04de0366ebdb9b7033b139ce48cedced1f56453bd
MD5 c9c02168018d791839ccc62cb42e65db
BLAKE2b-256 30f86702b7e8586a836bb7637bd9cacd4a50233f90d0f759c0a235afa25f098c

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