Skip to main content

Unified High-Throughput Robotics Library

Project description

RoboCore: Unified High-Throughput Robotics Library

License Python

Developed by Synria Robotics Co., Ltd. ๐Ÿค–


๐Ÿ”ฅ Features & Roadmap

Module Features Status
Kinematics Forward Kinematics (NumPy/PyTorch Batch) โœ…
Inverse Kinematics (NumPy/PyTorch Batch) โœ…
Jacobian (NumPy/PyTorch Batch) โœ…
Bimanual FK (indep/relative/mirror) โœ…
Bimanual IK (indep/relative/mirror) โœ…
Bimanual Jacobian (indep/relative) โœ…
Modeling URDF parsing โœ…
MJCF parsing โœ…
Robot model abstraction โœ…
Multi-chain support โœ…
Bimanual robot model โœ…
Workspace analysis โœ…
Transform SE(3) operations โœ…
SO(3) operations โœ…
Rotation conversions โœ…
Quaternion operations โœ…
Planning Joint space (polynomial/spline/multi-segment) โœ…
Cartesian space (linear/circular/spline) โœ…
Orientation planning (SLERP) โœ…
Velocity profiles (trapezoidal/S-curve) โœ…
Control Joint position controller (PD/PID) โœ…
Joint velocity controller โœ…
Joint trajectory tracking controller โœ…
Cartesian position controller โœ…
Cartesian velocity controller โœ…
Cartesian trajectory tracking controller โœ…
Computed torque controller โšช
Impedance controller โšช
MPC controller โšช
Analysis Workspace analysis โœ…
Singularity analysis ๐ŸŸก
WDF SDF (Signed Distance Field) โœ…
RDF (Relative Distance Field) โœ…
Visualization โœ…
Config YAML configuration โœ…
Config schemas โœ…
Bridge MuJoCo simulation bridge โœ…
Physics simulation & evaluation โœ…
Real robot bridge (partial) ๐ŸŸก
Dynamics Inverse dynamics โšช
Forward dynamics โšช
Mass matrix computation โšช
Coriolis & gravity computation โšช
Collision Mesh-based collision detection โšช
Distance computation โšช
Path Planning RRT/RRT* algorithms โšช
PRM algorithms โšช
Optimization-based planning โšช

Supported Robot Formats

  • โœ… URDF - Unified Robot Description Format
  • โœ… MJCF - MuJoCo XML

Backend Support

  • โœ… NumPy - CPU vectorized reference implementation; see Performance benchmarks below
  • โœ… PyTorch - Same API with optional CUDA for batched FK / Jacobian / IK (--device cuda in the benchmark scripts)
  • โœ… C++ / Eigen - Same FK, analytic Jacobian, and DLS IK API via pybind11 extensions (cpp / IKSolverCpp); see Installation

๐Ÿš€ Performance Benchmarks

Representative run (Apple Silicon laptop, CPU PyTorch for RoboCore and PK; C++ extensions built).

vs C++ columns: latency ratio t_backend / t_RoboCore C++ for the same batch shape (1ร— = same speed as C++; >1ร— = that many times slower than C++).

Forward kinematics (end-effector 4ร—4)

Backend batch=1 (ms/call) batch=100 (ms/call) vs C++ b=1 vs C++ b=100
pytorch_kinematics 0.209 0.331 ~209ร— ~39ร—
pinocchio 0.002 0.198 ~2.0ร— ~23ร—
RoboCore NumPy 0.134 0.353 ~134ร— ~42ร—
RoboCore PyTorch (CPU) 0.561 0.652 ~561ร— ~77ร—
RoboCore C++ / Eigen 0.0010 0.0085 1ร— 1ร—

Analytic Jacobian (6 ร— n)

Backend batch=1 (ms/call) batch=100 (ms/call) vs C++ b=1 vs C++ b=100
pytorch_kinematics 0.652 0.900 ~540ร— ~43ร—
pinocchio 0.0029 0.307 ~2.4ร— ~15ร—
RoboCore NumPy 0.116 11.68 ~97ร— ~560ร—
RoboCore PyTorch (CPU) 0.608 1.50 ~510ร— ~72ร—
RoboCore C++ / Eigen 0.0012 0.0209 1ร— 1ร—

Inverse kinematics (single chain)

Backend batch=1 (ms/call) batch=100 (ms/call) vs C++ b=1 vs C++ b=100
pytorch_kinematics (PseudoInverseIK) 195 259 ~24kร— ~340ร—
pinocchio (CLIK, Python) 0.68 410 ~85ร— ~530ร—
RoboCore NumPy (DLS) 2.195 62.03 ~270ร— ~81ร—
RoboCore PyTorch (CPU, DLS) 3.49 57.17 ~440ร— ~74ร—
RoboCore C++ / Eigen (DLS) 0.008 0.77 1ร— 1ร—

๐Ÿ“ฆ Installation

RoboCore is packaged as a light core with optional extras.

  • Core install: NumPy-based kinematics, transforms, planning, analysis, configs, URDF parsing, and native cpp backend support.
  • torch extra: PyTorch-based solvers and GPU execution.
  • mujoco extra: MJCF parsing and MuJoCo runtime support.
  • sim extra: MuJoCo simulation bridge support, including mujoco-py compatibility.
  • descriptions extra: Synria and Open robot-description packages (synriard, openrd) for examples and tests.

FK, Jacobian, and IK can run on NumPy, PyTorch, or cpp backends; only the cpp path uses native extensions, built with pybind11 + Eigen3 (headers only) + a C++17 compiler.

  • pybind11 โ€” installed automatically for the build via pyproject.toml ([build-system] requires) when you run pip install -e . (PEP 517 isolated environment).
  • Eigen โ€” not a pip package; install on the system (see below) or set EIGEN3_INCLUDE_DIR to the directory that contains the Eigen/ folder (so Eigen/Dense exists).
  • If Eigen or pybind11 is missing when the .cpp sources are present, the build fails with an error (extensions are required).

C++ compiler

Platform How to install
macOS xcode-select --install (Command Line Tools, includes clang++) or full Xcode from the App Store.
Debian / Ubuntu sudo apt update && sudo apt install build-essential
Fedora sudo dnf install gcc-c++ make
Windows Visual Studio Build Tools with โ€œDesktop development with C++โ€, or use WSL2 and follow the Linux steps above.

Eigen3

Platform Command / notes
macOS (Homebrew) brew install eigen โ€” headers are under /opt/homebrew/include/eigen3 (Apple Silicon) or /usr/local/include/eigen3 (Intel); setup.py checks these paths.
Debian / Ubuntu sudo apt install libeigen3-dev โ€” typically /usr/include/eigen3.
Fedora sudo dnf install eigen3-devel
Windows e.g. vcpkg install eigen3, or download Eigen and set EIGEN3_INCLUDE_DIR to the folder that directly contains the Eigen directory.

Custom location:

export EIGEN3_INCLUDE_DIR="/path/to/include/eigen3"   # must contain Eigen/Dense

Clone and install

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

conda create -n synria python=3.10 -y
conda activate synria

# Install core package in development mode
pip install -e .

# Optional extras
pip install -e ".[torch]"
pip install -e ".[mujoco]"
pip install -e ".[sim]"
pip install -e ".[descriptions]"

# Everything
pip install -e ".[all]"

PyPI installs

# Core package
pip install synria-robocore

# Typical feature sets
pip install "synria-robocore[torch]"
pip install "synria-robocore[mujoco]"
pip install "synria-robocore[sim]"
pip install "synria-robocore[descriptions]"

# Full environment
pip install "synria-robocore[all]"

synriard and openrd are only needed for bundled examples/tests that load published robot-description assets. They are not required for the RoboCore core library itself.


๐ŸŽฏ Quick Start

Basic Example

from robocore.modeling import RobotModel

# Load robot (auto-detects URDF/MJCF)
robot = RobotModel("path/to/robot.urdf")

# Display model info
robot.summary(show_chain=True)
robot.print_tree()

# Forward Kinematics
q = [0.0] * robot.num_dof
pose = robot.fk(q, return_end=True)

# Inverse Kinematics
result = robot.ik(pose, q_initial=q, method='pinv')
print(f"Solution: {result['q']}, Success: {result['success']}")

# Jacobian
J = robot.jacobian(q, method='analytic')  # Shape: (6, dof)

Batch Processing (GPU)

import torch
import robocore as rc

# Generate random configurations
q_batch = robot.random_q_batch(batch_size=1000)

# Set global backend for GPU
rc.set_backend('torch', device='cuda')

# Batch FK on GPU
poses = robot.fk(
    torch.tensor(q_batch), 
    device='cuda',
    return_end=True
)

๐Ÿ“š Examples

# Robot model loading and validation
python examples/modeling/demo_robot_model.py --validate --show-tree

# Forward/Inverse kinematics
python examples/kinematics/demo_fk.py
python examples/kinematics/demo_ik.py

# Jacobian computation
python examples/kinematics/demo_jacobian.py

# Workspace analysis
python examples/analysis/demo_workspace.py --samples 10000

# Performance benchmark
python examples/kinematics/benchmark.py

๐Ÿ—๏ธ Project Structure

RoboCore/
โ”œโ”€โ”€ robocore/
โ”‚   โ”œโ”€โ”€ modeling/          # Robot model abstraction & parsers
โ”‚   โ”œโ”€โ”€ kinematics/        # FK/IK/Jacobian solvers
โ”‚   โ”œโ”€โ”€ transform/         # SE(3)/SO(3) operations
โ”‚   โ”œโ”€โ”€ planning/          # Motion planning (WIP)
โ”‚   โ”œโ”€โ”€ analysis/          # Workspace/singularity analysis
โ”‚   โ”œโ”€โ”€ configs/           # Configuration management
โ”‚   โ””โ”€โ”€ utils/             # Backend abstraction, utilities
โ”œโ”€โ”€ examples/              # Demo scripts
โ”œโ”€โ”€ test/                  # Unit & integration tests
โ””โ”€โ”€ docs/                  # Documentation

๐Ÿ“„ License

MIT License
Copyright ยฉ 2025 Synria Robotics Co., Ltd.

RoboCore is released under the MIT License.

See LICENSE for the full text. Files under robocore/modeling/parser/mjcf_parser include preserved upstream Apache-2.0 copyright and license notices where applicable.


๐Ÿ“ง Contact


๐Ÿ“– Citation

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

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.0rc1.tar.gz (280.2 kB view details)

Uploaded Source

Built Distribution

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

synria_robocore-2.5.0rc1-cp313-cp313-macosx_11_0_arm64.whl (803.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for synria_robocore-2.5.0rc1.tar.gz
Algorithm Hash digest
SHA256 2018afd73dd3cd165a1ffa711ab2179934e7fd6e878b267af455e6e103997221
MD5 abc330b1b5da40f3862adc854986ec6c
BLAKE2b-256 b16d6ad881de38781b824374b15d5338b3cad540d1964d9a81c16799d5a45893

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for synria_robocore-2.5.0rc1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99113b4605e7ec3abd7a099265077228fdaca5a1e199a44808475aa08fc8d6a5
MD5 8deb1a4a52869e8d7ca75f47b9a38145
BLAKE2b-256 f80731ccd8ff127b0373efb4436a48c5ccbf294af1262845e4fbc26f6916e78c

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