Tesseract robotics Python bindings (nanobind)
Project description
Tesseract Python (nanobind)
Note: This is a friendly fork of tesseract_python that replaces SWIG bindings with modern nanobind bindings.
Status: Pre-release - Building and testing on Linux and macOS. Windows CI coming soon. Contributions welcome!
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
Coming soon to PyPI - Once CI/CD is finalized, install via:
pip install tesseract-robotics-nanobind
For now, build from source (see below).
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 planningfreespace_ompl_example.py- OMPL freespace planningpick_and_place_example.py- Pick and place with TrajOptpuzzle_piece_example.py- Cartesian path following- And more...
Building from Source
# Clone
git clone https://github.com/tesseract-robotics/tesseract_nanobind.git
cd tesseract_nanobind
# Build C++ dependencies
source env.sh
cd ws && colcon build --merge-install
# Install Python package
cd ../tesseract_nanobind
pip install -e .
# Test
pytest tests/
Requirements
- Python 3.9+
- Tesseract C++ libraries
- CMake 3.15+
Architecture
- nanobind for Python bindings (modern, fast, small binaries)
- scikit-build-core for Python packaging
- Native Eigen/numpy integration
- Stable ABI support
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 85.6 MB
- Tags: CPython 3.12+, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49cfd7ffe28408ebc9579104998a2d28e9016f34570527663c11e2aa44d053fa
|
|
| MD5 |
4ee274f7e9787081d61a08288d077697
|
|
| BLAKE2b-256 |
b0eccefa5e08565eb915308d10feb6f517bb232696804ddf34c78d2e3ab730ad
|
Provenance
The following attestation bundles were made for tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl:
Publisher:
wheels.yml on tesseract-robotics/tesseract_nanobind
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl -
Subject digest:
49cfd7ffe28408ebc9579104998a2d28e9016f34570527663c11e2aa44d053fa - Sigstore transparency entry: 753255496
- Sigstore integration time:
-
Permalink:
tesseract-robotics/tesseract_nanobind@8065587e1dcf71ecfc0c420a1de032825b5f979f -
Branch / Tag:
refs/tags/0.6.2 - Owner: https://github.com/tesseract-robotics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@8065587e1dcf71ecfc0c420a1de032825b5f979f -
Trigger Event:
push
-
Statement type: