I'm interested in doing the following things with Octomap. I'm not sure whether they can be accomplished by using the templated classes, or by rewriting the Octomap source. What is the best solution, and which parts of the code do I need to look into?
Adding additional information to the nodes in the Octomap tree - for example, color.
Being able to query the value at different resolution levels. So I'd need a function which returns which returns the mean (or mode, or min/max etc) of the value from all the children nodes.
Visualizing the voxels based on their value - preferably in rviz
Thanks for the help!
Because both the octrees and nodes are templated, that should be really easy to do as dornhege wrote. You would need to derive your own OcTreeNode (for data) and OcTree (for implementation). In the last versions, we moved more and more of the actual occupancy implementation into OccupancyOcTreeBase, so you can directly derive from that. For examples, have a look at the OcTreeNodeStamped and OcTreeStamped.
See the answer by dornhege. For that to work with the max depth, you would need to keep the inner tree values consistent with the max or mean of their children, as it's done in OcTreeNode after each update.
Check octomap_server in octomap_mapping, it sends out a visualization as MarkerArray for RViz that you can easily adapt to your needs. It's not the most efficient way to display all the voxels in RViz (and they're not shaded properly), so for much data you might need to extend our own viewer octovis to your needs.
Note: I didn't look in the current version's source. For the 0.8 I am working with:
You probably need to write your own code (given you want occupany mapping) as the default OcTreeNode is already a OcTreeDataNote<float>. It is quite simple though, as you can just derive the classes and make sure the new node class is instantiated in the tree.
That's definitely possible as you pass a max_depth to the querying function and then the inner node's value will be returned.
Asked: 2011-05-31 17:01:42 -0500
Seen: 234 times
Last updated: Jun 01 '11
How to use RGBD-6D-SLAM for path planning and navigation with Kinect
pcl_to_octree cannot compile. Octomap bug?
How to get octomap to store data sent by rgbdslam
How to use a saved Octomap for Path Planning with Kinect
Replacing wrapper ROS package for external library - best practices?
Failed to build octomap_server
Initializing and manipulating OctoMaps with more than just occupancy
ROS Answers is licensed under Creative Commons Attribution 3.0 Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.