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.

See CHANGELOG.md for release notes.

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.4-cp312-abi3-manylinux_2_35_x86_64.whl (101.1 MB view details)

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

tesseract_robotics_nanobind-0.34.1.4-cp312-abi3-macosx_14_0_arm64.whl (111.5 MB view details)

Uploaded CPython 3.12+macOS 14.0+ ARM64

tesseract_robotics_nanobind-0.34.1.4-cp311-cp311-manylinux_2_35_x86_64.whl (101.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.4-cp311-cp311-macosx_14_0_arm64.whl (111.5 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

tesseract_robotics_nanobind-0.34.1.4-cp310-cp310-manylinux_2_35_x86_64.whl (101.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.4-cp310-cp310-macosx_14_0_arm64.whl (111.6 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

tesseract_robotics_nanobind-0.34.1.4-cp39-cp39-manylinux_2_35_x86_64.whl (101.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.35+ x86-64

tesseract_robotics_nanobind-0.34.1.4-cp39-cp39-macosx_14_0_arm64.whl (111.6 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

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

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp312-abi3-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 f56fe4adc85f1b2166d3edc770a7f6c077811054971378a55bf8bbcdb702f81e
MD5 7e749c3b30f116faaad1310864818b1b
BLAKE2b-256 be360aa849e25744495e646decb881bf087ae1f8749c94b1b144b5be9d8bb27a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp312-abi3-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp312-abi3-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 a324f142702d877e000da40f98ed4b6c3d6852c218930c8ee847404a09b9a54d
MD5 b51aa4eb18805a92a71a57ef902bddf7
BLAKE2b-256 f6a773b62f6317273a4586feac0a32c279cb61de89d7166f069433337fc75a39

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp311-cp311-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp311-cp311-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6be5882ce9474c5362d69fe8b9e25443f3bf6350123f6e4b94f759593afbe27c
MD5 bd597dd6a105d412da091aca066db90d
BLAKE2b-256 51b0c077d7f6fbb08295b8dfc6115104c8f3cab4abf3f6615a8b1105522a3976

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6fcdff55d3ad0f7864f51094f642c5c65fe3f13a7de8820dd29064d13843c2cd
MD5 cb6d21b52cd76124795b34a7d9c19152
BLAKE2b-256 44aa90b52d6c656790b39eed0863b38da8c463039033baaf2d54d75183ae439d

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp310-cp310-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp310-cp310-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a5f8a2ea7395fb239fa7cb8ec543c73d5618d97606d0a082244902a42490c795
MD5 bea51b3665f4614a161aae49a5f9f8b2
BLAKE2b-256 96423c7ed7c2b81eabad340d3d9b3940f1b7f45efabaebaf4f0099f2b9bb22e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 394354d3740cd1d941b789bf7649df199ebf592c33075dab466132ef9c16c2f0
MD5 0b8663b3348680b845c36962b9fdbb7a
BLAKE2b-256 0d53aa751689dcbb20af1aceaca7b403dd994fe14ad72b337b61e0d38dcfdfa3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp39-cp39-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp39-cp39-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 01c37096ac5aac531095e2ea483983659abaa857338f1572a4d748dfbe7c4ad2
MD5 48b311f7b7bed03945c8ae2a9c03b034
BLAKE2b-256 517bdcff22b05442b0f3e588e5b667065809a7ad3895a3762cbb1d9207252246

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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.4-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.34.1.4-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4d516e50152d06cf2f51b32b3be49eaf5c512baa13703a3eed2d2c5081a37825
MD5 c420327d6246913c5793787612e76097
BLAKE2b-256 e57e23a592b14cbcfe31450669a34f4513121a0fd8068495cfb8fcea6c7548f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tesseract_robotics_nanobind-0.34.1.4-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