octomap-ros
Python binding of the OctoMap library for ROS (Robot Operating System).
Installation
ROS Humble Integration
To use OctoMap with ROS Humble, install the following ROS packages:
sudo apt-get install ros-humble-octomap ros-humble-octomap-mapping ros-humble-octomap-server
These packages provide the necessary ROS integration for OctoMap:
ros-humble-octomap: Core OctoMap library for ROSros-humble-octomap-mapping: Provides mapping capabilities using OctoMapros-humble-octomap-server: Offers a ROS server for OctoMap, allowing you to save, load, and publish OctoMaps
Python Package
Install octomap-ros directly from PyPI:
pip install octomap-ros
Prerequisites:
- Python development headers:
sudo apt-get install python3-dev - C++ compiler:
sudo apt-get install build-essential - CMake:
sudo apt-get install cmake
ROS Humble Usage
Here's a basic example of how to use OctoMap with ROS Humble:
import rclpy
from rclpy.node import Node
from octomap_msgs.msg import Octomap
import octomap
class OctomapProcessor(Node):
def __init__(self):
super().__init__('octomap_processor')
self.subscription = self.create_subscription(
Octomap,
'/octomap_binary',
self.octomap_callback,
10)
self.octree = octomap.OcTree(0.1) # 0.1 is the resolution
def octomap_callback(self, msg):
# Convert ROS message to OcTree
tree = octomap.OcTree.from_msg(msg)
# Process the OcTree
for node in tree.iterator():
if tree.isNodeOccupied(node):
# Process occupied nodes
coord = node.getCoordinate()
print(f"Occupied node at {coord.x()}, {coord.y()}, {coord.z()}")
# You can also update your own OcTree
self.octree.insertPointCloud(tree.getPointCloud(), octomap.point3d(0, 0, 0))
def main(args=None):
rclpy.init(args=args)
octomap_processor = OctomapProcessor()
rclpy.spin(octomap_processor)
octomap_processor.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
This example demonstrates how to:
- Subscribe to the
/octomap_binarytopic - Process incoming OctoMap messages
- Convert ROS messages to OcTree objects
- Iterate through occupied nodes in the OcTree
- Update a local OcTree with new data
To run the OctoMap server and visualize the data:
# Run the octomap server
ros2 run octomap_server octomap_server_node
# In another terminal, run your OctoMap processor
python3 your_octomap_processor.py
# View the OctoMap in RViz
ros2 run rviz2 rviz2
Configure RViz to display the OctoMap by adding an OccupancyGrid or MarkerArray display and setting the appropriate topic (usually /octomap_binary or /octomap_full).
Acknowledgement
This package is based on wkentaro/octomap-python and neka-nat/python-octomap, adapted for ROS integration.
License
octomap-ros is licensed under the BSD License. See the LICENSE file for details.
Metadata
Release files for octomap-ros 1.8.0.post16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| octomap_ros-1.8.0.post16.tar.gz | 2.5 MB | Details |
Release files / octomap_ros-1.8.0.post16.tar.gz
| Download URL | octomap_ros-1.8.0.post16.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
319876e8665ec7f6877d34290ac99fb6798ed4ee4ca39ae9163687587587b3b7
|
|
BLAKE2b-256 checksum How to use checksums |
82b3b6f23f033cfb67a67bca005570dee54b8c893a879d188e37ee9a82b78884
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|