Skip to main content

Tesseract robotics Python bindings (nanobind)

Project description

Tesseract Python (nanobind)

Python Build Status Documentation license - Apache 2.0

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 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...

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


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 Distribution

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

tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl (85.6 MB view details)

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

File details

Details for the file tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_robotics_nanobind-0.6.2-cp312-abi3-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 49cfd7ffe28408ebc9579104998a2d28e9016f34570527663c11e2aa44d053fa
MD5 4ee274f7e9787081d61a08288d077697
BLAKE2b-256 b0eccefa5e08565eb915308d10feb6f517bb232696804ddf34c78d2e3ab730ad

See more details on using hashes here.

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

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