Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged tesseract at Robotics Stack Exchange
Package Summary
| Version | 0.35.0 |
| License | Apache 2.0 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/ros-industrial-consortium/tesseract.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-06-11 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Levi Armstrong
Authors
- Levi Armstrong
Tesseract
| Platform | CI Status |
|---|---|
| Linux | |
| Windows | |
| Lint (Clang-Format) | |
| Lint (CMake-Format) | |
| Lint (Clang-Tidy) | |
| Lint (CodeCov) |
The planning framework (Tesseract) was designed to be light weight, limiting the number of dependencies, mainly only using standard libraries like, eigen, boost, orocos and to the packages below. The core packages are ROS agnostic and have full python support.
Dependencies
Tesseract Monthly Meeting
We hold a monthly Google Meet for Tesseract project updates, coordination, and open discussion.
Schedule: Thursday, monthly
Time: 10:00 – 11:00 AM Central Time
Time zone: America/Chicago
Google Meet: https://meet.google.com/oyq-puvp-nyg
Dial-in
Phone: +1 337-346-2448
PIN: 452 223 087#
More phone numbers: https://tel.meet/oyq-puvp-nyg?pin=2663350273813
Access
This meeting uses Google Meet host controls. Attendees may need to request to join and be admitted by the host before entering.
Agenda
- Project updates
- Open issues or blockers
- Upcoming priorities
- General Q&A
Notes
Please join using a recognizable name so the host can admit you.
Tesseract Setup Wizard and Visualization Tools
Python Installation
A self contained Tesseract Python package is available on PyPI for Windows 10+, Ubuntu 20.04, and Ubuntu 22.04. This package contains Tesseract, Tesseract Planning, and all dependencies in the single package. Packages are available for Python 3.7 - 3.10.
To install on Windows:
python -m pip install tesseract-robotics tesseract-robotics-viewer
To install on Ubuntu 20.04 and Ubuntu 22.04:
sudo apt install python3-pip python3-numpy
# The supplied version of pip on Ubuntu 20.04 is too old for manylinux_2_31, upgrade pip
python3 -m pip install -U pip
python3 -m pip install --user tesseract_robotics tesseract_robotics_viewer
Tesseract Core Packages
- tesseract – This is the main class that manages the major component Environment, Forward Kinematics, Inverse Kinematics and loading from various data.
- tesseract_command_language – This package contains a generic command language to support motion and process planning similar to industrial teach pendants
- tesseract_collision – This package contains a common interface for collision checking prividing several implementation of a Bullet collision library and FCL collision library. It includes both continuous and discrete collision checking for convex-convex, convex-concave and concave-concave shapes.
- tesseract_common – This package contains common functionality needed by the majority of the packages.
- tesseract_environment – This package contains the Tesseract Environment which provides functionality to add,remove,move and modify links and joint. It also manages adding object to the contact managers and provides the ability.
- tesseract_geometry – This package contains geometry types used by Tesseract including primitive shapes, mesh, convex hull mesh, octomap and signed distance field.
- tesseract_kinematics – This package contains a common interface for Forward and Inverse kinematics for Chains, Trees and Graphs including implementation using KDL and OPW Kinematics.
- tesseract_scene_graph – This package contains the scene graph which is the data structure used to manage the connectivity of objects in the environment. It inherits from boost graph and provides addition functionality for adding,removing and modifying Links and Joints along with search implementation.
- tesseract_support – This package contains support data used for unit tests and examples throughout Tesseract.
- tesseract_visualization – This package contains visualization utilities and libraries.
Related Repositories
File truncated at 100 lines see the full file
Changelog for package tesseract
0.35.0 (2026-05-28)
-
Add yaml node and string parsing to srdf configs (#1302)
-
Add optional tolerances on calcJacobianTransformErrorDiff (#1299)
-
Bump conda-incubator/setup-miniconda from 3 to 4 (#1287)
-
Fix silently failing Windows Conda tests (#1301)
-
Upate conda build
-
Bump johnwason/vcpkg-action from 7 to 8 Bumps [johnwason/vcpkg-action](https://github.com/johnwason/vcpkg-action) from 7 to 8.
- [Release notes](https://github.com/johnwason/vcpkg-action/releases)
- [Commits](https://github.com/johnwason/vcpkg-action/compare/v7...v8) ---updated-dependencies:
- dependency-name: johnwason/vcpkg-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ...
-
Remove octomap from dependencies as deleteNodeChild issue when pruning octrees is fixed.
-
Forward pruned/binary_octree flags through Octree clone and URDF parse clone() only forwarded octree_ and sub_type_ to the copy constructor, silently dropping pruned_ and binary_octree_ — clones miscompared against their originals (operator== checks pruned_) and serialized the wrong values (cereal emits both fields, and binary_octree_ controls whether the OcTree payload is written via writeBinary or write). parseOctree applied prune="true" to the OcTree but constructed the Octree geometry without the flag (defaulted to false). This caused writeOctomap to emit prune="false", cereal to serialize the wrong value, and operator== to miscompare round-tripped trees. Tests: extend parse_octree and add OctreeClonePreservesPrunedFlag / OctreeCloneBinaryFlag. binary_octree_ has no public getter and is not checked by operator==, so the clone test for that field compares the cereal-XML output of the original vs clone, which differs in both the binary_octree NVP and the OcTree blob bytes (writeBinary vs write).
-
Fix Octree::pruneNode assertion failure on octomap >= 1.9 The custom pruneNode deleted children individually via deleteNodeChild() but never freed the children array itself. The array pointer (protected member) stayed non-null, triggering assert(children == NULL) in ~OcTreeDataNode on destruction. The assertion only fires under debug asserts (NDEBUG unset) with octomap >= 1.9, so default RelWithDebInfo builds silently leaked the children array instead of crashing. Equalize child values so octomap's own pruneNode() passes its stricter value-equality check, then delegate to it. Octomap's implementation has friend access to properly free the array. Tesseract's more aggressive collapsibility check (above occupancy threshold, not requiring equal values) still controls the decision.
-
Include cassert
-
Remove unused template-heavy serialization header from any_poly.h
-
test(tesseract_collision): fix data race on shared location map in parallel test loop collision_multi_threaded_unit.hpp's OpenMP parallel region declared the caller-mutable [location]{.title-ref} map as shared and iterated it via the non-const [begin()]{.title-ref}/[end()]{.title-ref} overloads on each thread. Per the C++ memory model, concurrent invocations of non-const member functions on the same object are a data race even when the operations don't actually mutate state. Bind a [const auto&]{.title-ref} alias to [location]{.title-ref} before the parallel region and iterate that alias instead, so all threads only invoke const member functions on the shared map. Co-Authored-By: Claude Opus 4.7 (1M context) <<noreply@anthropic.com>>
-
fix(scene_graph): kdl_sub_tree_builder crashed on non-empty floating joints The sub-tree builder constructor did data_.floating_joint_values.at(key) = value on a freshly-default-constructed KDLTreeData whose map is always empty, so any non-empty floating_joint_values argument threw std::out_of_range. Use operator[] (insert-or-assign) like the sibling full-tree builder. Production impact: JointGroup construction threw on any scene with a floating joint. No existing test covered the path, hence the bug escaped detection. Add KDLParserSubTreeFloatingJointUnit which feeds parseSceneGraph a non-empty TransformMap and asserts both that the constructor no longer throws and that the transform is propagated into KDLTreeData.
-
Fix typo in serialization key from 'iyz' to 'izz'
-
ci: include scene_graph and support in pull_request path filters PRs touching only scene_graph/ or support/ matched no path filter and
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ros_industrial_cmake_boilerplate | |
| boost_plugin_loader | |
| cereal | |
| fcl | |
| opw_kinematics |

