Skip to main content

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 ROS
  • ros-humble-octomap-mapping: Provides mapping capabilities using OctoMap
  • ros-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:

  1. Subscribe to the /octomap_binary topic
  2. Process incoming OctoMap messages
  3. Convert ROS messages to OcTree objects
  4. Iterate through occupied nodes in the OcTree
  5. 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)

Source distribution for octomap-ros 1.8.0.post16
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

Release history Release notifications | RSS feed

1.8.3

1 release file

1.8.2

1 release file

1.8.1

1 release file

This release

1.8.0.post16 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page