Skip to main content

Tesseract robotics Python bindings (nanobind)

Project description

Tesseract Python (nanobind)

PyPI Python Linux macOS Documentation license - Apache 2.0

Note: This is a friendly fork of tesseract_python that replaces SWIG bindings with modern nanobind bindings.

Python bindings for Tesseract robotics motion planning using nanobind.

Features

  • Scene loading and management (URDF, SRDF, meshes)
  • Collision checking (Bullet, FCL)
  • Kinematics (KDL, OPW, UR)
  • Motion planning (OMPL, Descartes, TrajOpt)
  • Time parameterization (TOTG, ISP, Ruckig)
  • Task composition and pipelines
  • Pythonic high-level API

Installation

pip install tesseract-robotics-nanobind

Platform support: Linux x86_64. macOS arm64 coming soon.

Quick Start

from tesseract_robotics.planning import (
    Robot, MotionProgram, JointTarget, CartesianTarget,
    Pose, box, create_obstacle, TaskComposer,
)

# Load robot
robot = Robot.from_urdf(
    "package://tesseract_support/urdf/abb_irb2400.urdf",
    "package://tesseract_support/urdf/abb_irb2400.srdf"
)

# Add obstacle
create_obstacle(robot, "box", box(0.5, 0.5, 0.5), Pose.from_xyz(0.5, 0, 0.3))

# Build motion program
program = (MotionProgram("manipulator", tcp_frame="tool0")
    .set_joint_names(robot.get_joint_names("manipulator"))
    .move_to(JointTarget([0, 0, 0, 0, 0, 0]))
    .move_to(CartesianTarget(Pose.from_xyz(0.5, 0.3, 0.8)))
)

# Plan
composer = TaskComposer.from_config()
result = composer.plan(robot, program)

if result.successful:
    for pt in result.trajectory:
        print(pt.positions)

Low-Level API

For direct C++ API access:

from tesseract_robotics.tesseract_environment import Environment
from tesseract_robotics.tesseract_common import GeneralResourceLocator

env = Environment()
locator = GeneralResourceLocator()
env.init("/path/to/robot.urdf", "/path/to/robot.srdf", locator)

print(f"Joints: {env.getJointNames()}")
print(f"Links: {env.getLinkNames()}")

Examples

See the examples/ directory for:

  • basic_cartesian_example.py - Simple Cartesian planning
  • freespace_ompl_example.py - OMPL freespace planning
  • pick_and_place_example.py - Pick and place with TrajOpt
  • puzzle_piece_example.py - Cartesian path following
  • And more...

Versioning

Version follows 0.A.B.C where A.B tracks the upstream Tesseract release and C is the nanobind patch number. For example, 0.34.1.0 wraps Tesseract 0.34.1.

Development

This project uses pixi exclusively for dependency management and task running — no pip, conda, or venv needed. Pixi manages both the C++ toolchain (cmake, eigen, boost, bullet, ompl, ...) and Python deps in a single lockfile.

Prerequisites

Install pixi (docs):

curl -fsSL https://pixi.sh/install.sh | bash

First-time setup

git clone --recurse-submodules https://github.com/tesseract-robotics/tesseract_nanobind.git
cd tesseract_nanobind
pixi run build    # builds C++ libs + installs bindings (editable)

pixi run build chains two steps: build-cpp (compiles tesseract C++ via colcon) → install (editable pip install of the Python package). First build takes ~15 min; subsequent rebuilds are incremental.

Available tasks

Task Description
pixi run build Build C++ libs + install bindings
pixi run build-cpp Build only the C++ libs
pixi run install Editable install (assumes C++ already built)
pixi run test Run pytest with xdist parallelism
pixi run lint Lint with ruff
pixi run fmt Format with ruff
pixi run typecheck Type check with pyright
pixi run docs Live docs server (localhost:8000)
pixi run docs-build Build static docs to site/

Running tests

pixi run test                              # full suite, parallel
pixi shell && pytest tests -x --testmon    # incremental (only changed)

Pre-commit hooks

pixi shell
pre-commit install
pre-commit install --hook-type pre-push

This runs ruff + auto-staging on commit, and pyright + pytest on push (configured in .pre-commit-config.yaml).

Project layout

├── pyproject.toml            # package config + pixi workspace
├── CMakeLists.txt            # nanobind build
├── src/tesseract_robotics/   # Python package + C++ extension modules
├── tests/                    # pytest suite
├── examples/                 # usage examples
├── ws/                       # C++ workspace (colcon src/ + install/)
├── scripts/                  # build scripts (build_tesseract_cpp.sh, build_wheel.sh)
└── docs/                     # mkdocs-material documentation

Building portable wheels

Editable installs bake absolute paths — not portable. For distributable wheels:

./scripts/build_wheel.sh              # builds + delocates (bundles dylibs)
pip install wheelhouse/tesseract*.whl

Acknowledgments

This project builds upon the excellent work of John Wason and the Tesseract Robotics team. The original tesseract_python SWIG bindings laid the foundation for this nanobind implementation.

Special thanks to:

  • John Wason (Wason Technology, LLC) - Original tesseract_python author and Tesseract maintainer
  • Levi Armstrong - Tesseract core developer
  • Jelle Feringa (Terrestrial) - nanobind port developer
  • The ROS-Industrial consortium for supporting Tesseract development

License

Apache 2.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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-manylinux_2_35_x86_64.whl (100.8 MB view details)

Uploaded CPython 3.12+manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-macosx_14_0_arm64.whl (111.3 MB view details)

Uploaded CPython 3.12+macOS 14.0+ ARM64

tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-manylinux_2_35_x86_64.whl (100.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-macosx_14_0_arm64.whl (111.3 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-manylinux_2_35_x86_64.whl (100.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-macosx_14_0_arm64.whl (111.3 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-manylinux_2_35_x86_64.whl (100.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-macosx_14_0_arm64.whl (111.3 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 30205dc616e5f0178b821e75475cc61e1e7556d28ec5df210768563de9b5b9ef
MD5 f1dc51225f4cca1d1bb2c585618176c0
BLAKE2b-256 ee87fa7827231356c589022bd55e545dcb5b59120380d69639a9980f17240658

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-manylinux_2_35_x86_64.whl:

Publisher: wheels-linux.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 314bbccf538783638a73d98757ee1e8e8005f8a4fa98f14b79cb340946eeb59c
MD5 8b37011567e964ce74aa080221624e39
BLAKE2b-256 49b905ff9d859fb20453201069a357cd38db2d947f1ef43faa0d982a973c7565

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp312-abi3-macosx_14_0_arm64.whl:

Publisher: wheels-macos.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 db1fb84638d24de5376a2156eac8aa55f64c00c42f60155d4e2140abaa669aa5
MD5 0169cd2ddd71500ef2dd0bd745e8d1a3
BLAKE2b-256 edcbe77a9246022ef1715c606b0a10257e8c2c759fa4185ac1d70c8b074c972c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-manylinux_2_35_x86_64.whl:

Publisher: wheels-linux.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5bb24f86ca603a69b92d41408c9869bbeae80f6baf101ff90029f83e6151d194
MD5 5a9b73d9a58f9825296f90a356a5edb3
BLAKE2b-256 0b928a5e01d008ea48e2c24f2018d52bd0c61e601ccda8ef3a5cf5c3b39213d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: wheels-macos.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 97a884f799c39f12b74747bd80e76c48f8a8ec4ec73e4f58004bac38d161f291
MD5 661e469d08f78b65461a200b729dd1ae
BLAKE2b-256 4ef2475a4fca23cb5e2f2086851b2d2b0a9d2290bbf28e4347490a98088c4e2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-manylinux_2_35_x86_64.whl:

Publisher: wheels-linux.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b9fb528a2a7bea97437a2f8e52b496698c76537463c7ab66a9aaba7306c00d67
MD5 9409d99fea4b308e1a09a058c41ac990
BLAKE2b-256 70ce29a4855d460c6bb5becbc5da3d5a6f16167b3f686fb27999693bde7d7780

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp310-cp310-macosx_14_0_arm64.whl:

Publisher: wheels-macos.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 8fcf23f625ef595a79cc7f9246b0ca4b7d5f38b11b92153f907e5c803790197d
MD5 a18f672b4dd465d2ae979845dd7d98cf
BLAKE2b-256 c931468b2e2ae5b1ec15d009b3834aaf1361e95fa16ba8ffed5ac9888664f529

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-manylinux_2_35_x86_64.whl:

Publisher: wheels-linux.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 aed187ae21f97687e92ef15369d7b14f7ebc0beefc78e072cb88d10d0392104a
MD5 fc7800834a37acaa9b08281f531d07d7
BLAKE2b-256 96f3f0e68fc39af7ae62ab90f1a1fb81b5e643723ff3ae9a8e7df750dc8fcac1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.2-cp39-cp39-macosx_14_0_arm64.whl:

Publisher: wheels-macos.yml on tesseract-robotics/tesseract_nanobind

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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