v1.10.0: 2024-03-19 =================== - CMake: Fix duplicate uninstall target (#406) - Fix errors with recent compilers and C++17/20 standard (#394) - Fix ScanGraph.h c++20 compilation error (#398) - Add smaller than operator for vectors (#330) - Add vcpkg installation instructions to Readme (#382) - Fix test dependencies in CMakeLists (#374) - replace deprecated std::iterator by defining required types (#373) - octovis: fix issue with saving not showing any dialog (#414) - octovis: Fix deprecated QString and glext redefinition warning (#375) - octovis: Declare missing dependency on opengl (#408) - ROS: Updates to compile cleanly on ROS 2 Rolling on Ubuntu 24.04 (#415) - ROS: Remove ccache for ROS-Industrial CI yml (#413) - ROS: Remove EOL ROS distros from CI actions v1.9.8: 2022-05-12 ================== - Also set lowercase octomap_* variables in CMake config (#369) - Fix float tests and overflow problem in binvox2bt - Fix to freespace update when bbx is set. (#360) - Update Doxygen & URLs (#354,#352) - make setBBXMin/Max parameters const (#348) - ROS: Remove unused ament_cmake dependency. - octovis: Implement volume selection features (#339) - octovis: Link dependencies in octovis-static library (#340) v1.9.7: 2021-05-03 ================== - Use explicit casting to prevent implicit sign conversion - REP-136 compliance and compatibility with ROS1 & ROS2 using single branch v1.9.6: 2021-01-23 ================== - Fixed ifstream >> byte with c++17 - strict warnings_as_errors compiler options and corresponding fixes - octovis: Fixed qmake command to build libQGLViewer with Qt5. - octovis: adapted to be compatible with libQGLViewer >= 2.7.0 - octovis: use -fPIC with all compilers v1.9.5: 2020-03-25 ================== - octovis: Update ROS dependencies to Qt5 v1.9.4: 2020-03-15 ================== - octovis: Enable Qt5 by default - Support added for configurable libdir for packaging - Increased minimum CMake version to 3.0.2 v1.9.3: 2019-12-26 ================== - Fixed Wpedantic warnings - Removed problematic INSTALL_NAME_DIR (maxOS workaround) v1.9.2: 2019-11-28 ================== - Fixed ROS buildfarm failures for octovis v1.9.1: 2019-11-23 ================== - Improved compatibility with modern compilers and ROS2 v1.9.0: 2017-04-28 ================== - Fixed getUnknownLeafCenters to return true leaf centers (thx to A. Ecins) - dynamicEDT3D templated over OctoMap type (thx to J.V. Gomez) - Added optimized rendering option and command line option for tree cutoff in octovis (thx to F. Endres) - Added optional Qt5 support in octovis (thx to K. Stepanas) - Improved the generation of config.cmake and version.cmake files, make them relocatable via CONFIGURE_PACKAGE_CONFIG_FILE (thx to J.V. Gomez) - Enable rpath on OS X when the CMake version supports it (thx to J. Snape) - Added version information to *-config.cmake files and exported targets to CMakeLists.txt (thx to J. Snape) - Improved CMake build by specifically targeting local includes (thx to C.-E. Hrabia) v1.8.1: 2017-01-13 ================== - Disambiguated isnan (C++11) - Fixed #123: Set root=NULL in clear() - Fixed #131: Portable binary read/write of Pointcloud and ScanGraph (uint32_t) v1.8.0: 2016-04-20 ================== - Fixed #98: The tree structure in memory is now maintained in OcTreeBaseImpl to enable safely deriving custom node classes. The following functions were moved from OcTreeDataNode into OcTreeBaseImpl: createChild(...) -> OcTreeBaseImpl::createNodeChild(...) getChild(...) -> OcTreeBaseImpl::getNodeChild(...) expandNode() -> OcTreeBaseImpl::expandNode(...) pruneNode() -> OcTreeBaseImpl::pruneNode(...) hasChildren() -> OcTreeBaseImpl::nodeHasChildren(...) childExists(...) -> OcTreeBaseImpl::nodeChildExist(...) collapsible() -> OcTreeBaseImpl::isNodeCollapsible(...) If you use custom derived node classes, you need to adjust your code to the new API (have a look at ColorOcTree.h as an example). In particular, you should no longer use the above node member functions in your nodes. - Extended unit tests for the new memory management - Added valgrind memcheck suppression file with known ("wanted") leaks due to StaticMemberInitializer. - Replaced `unsigned short int` for key values with octomap::key_type (=uint16_t) and unsigned char with uint8_t in API. - Cleaned up OcTreeKey and KeyRay API (used internally) - Reduced unneeded memory for StaticMemberInitializer - Cleaned up const refs to primitive types in ColorOcTree interface - Removed deprecated insertScan functions (replaced by insertPointCloud) - Removed no longer used ROS logging macros and unmaintained OcTreeLUT, OcTreeBaseSE classes - octovis: Internal version of libQGLViewer updated to 2.6.3 v1.7.2: 2016-03-26 ================== - BBX iterators fixed for empty trees (point3d version) - Removed qglviewer.h from some public octovis headers - Fixed QGLViewer library names for Ubuntu wily and xenial - Fixed install path in CMakeConfigs v1.7.1: 2016-01-31 ================== - Fixed #82: Enable uninstall target for complete project - Fixed #47: Exported CMake library paths for Windows no longer have the Release/Debug prefix and correctly contain the .lib file - Fixed #51: IO factory class registry with MSVC. Calling a dummy function from an OcTree class c'tor enables reading general .ot files when compiling with MSVC - Fixed #100: Explicit casts to avoid warnings with MSVC v1.7.0: 2015-11-27 ================== - BBX iterators fixed for empty trees (thx to F. Boniardi) - graph2tree tool option for nodes in global frame - New octree2pointcloud PCL conversion tool (thx to F. Ferri) - Improved change detection / diff calculation (thx to C. Brew) - getUnknownLeafCenters now allows queries at a specified depth (thx to A. Ecins) - Fixed hashing overflow with clang (thx to L. Riano) v1.6.9: 2016-01-13 ================== - Maintenance release for ROS: Added function to determine state of change detection v1.6.7: 2014-08-31 ================== - FSF address in octovis license header for OctoMap package in Fedora - Separate build options for octovis and dynamicEDT3D. Thanks to C. Reist! v1.6.6: 2014-05-26 ================== - Support for SOVERSION in the libraries for better packaging - Warning for unknown space in castRay() removed (needs to be inferred by calling code depending on return value and endpoint voxel) - Marching cubes for ray surface intersection extended - Fixed QGLViewer include paths - ScanGraph read error no longer exits the process v1.6.5: 2014-03-14 ================== - Fix octovis includes for QGLViewer > 2.5 v1.6.4: 2014-01-20 ================== - Fix for raycasting termination condition in computeRayKeys() (affects insertScan / insertRay). Thanks to C. Sprunk! v1.6.3: 2014-01-13 ================== - New function setNodeValue(...) to directly set a node's value (#31) - New approximate point cloud insertion as fast variant (#39, see flag for insertPointCloud(...) / new function computeDiscreteUpdate(...) v1.6.2: 2013-11-26 ================== - Improved OSX 10.9 compatibility (thx to B. Jensen) - Improved VC++ compatibility (thx to tmdiv) - New fct. getRayIntersection to get real intersection of raycasting on voxel (thanks to F-M. de Rainville) - Fix #54: Quote paths in CMake configs to avoid problems with spaces - Fix #53: Auto-pruning after updateNode - Fix #44: CMAKE_SHARED_LIBRARY_SUFFIX in CMakeConfig (Win / Mac compatibility) - octovis now includes QGLViewer 2.4 (Qt5 support) - octovis now looks for the octomap version of the same number v1.6.1: 2013-06-19 ================== - New function swapContent to exchange the contents of two octrees (issue #32) - New normal estimation based on marching cubes (thanks to F-M. de Rainville) - Fixed octovis edit box affecting small selection ranges - Fixed compilation with gcc 4.8 and OSX (issues #23 #28) v1.6.0: 2013-04-05 ================== - Speedup: Pruning is now done only on affected nodes on each call to updateNode(). You no longer have to call prune(), except when you manually change nodes or use lazy_update. - insertScan() renamed to insertPointCloud(), removed parameter "pruning" - insertScanNaive() renamed to insertScanRays(), removed parameter "pruning" - insertScan() / insertPointCloud() / insertScanRays() can now be parallelized with OpenMP, currently disabled by default. Enable with CMake flag OCTOMAP_OMP - Empty octrees no longer contain a root node (#11) - Library names in CMake configs are now absolute paths, you should no longer use OCTOMAP_LIBRARY_DIRS with FIND_PACKAGE (#14) - graph2tree: pointcloud is transformed in batch before insertion, small changes in command line options - octovis: more map editing options, fixed setting nodes to free/occupied (thx to C. Dornhege) - Sample data is now in octomap/share v1.5.7: 2014-01-20 ================== - Fix for raycasting termination condition in computeRayKeys() (affects insertScan / insertRay). Thanks to C. Sprunk! v1.5.6: 2013-06-10 ================== - Fixed compilation with OSX 10.8 (issue #23) v1.5.5: 2013-05-05 ================== - Fixed compilation of external code against OctoMap with gcc4.8 (issue #28) v1.5.4: 2013-02-27 ================== - Removed binvox binaries from sources for improved packaging compatibility (ticket #18). Download from www.cs.princeton.edu/~min/binvox/ instead. v1.5.3: 2012-12-18 ================== - CMakeConfig now installs into share/octomap instead of lib/cmake/octomap for better compatibility with ROS - ROS package.xml removed, will be added in the release process - added sensor model parameters to graph2tree - new octree evaluation tool: eval_octree_accuracy and compare_octrees v1.5.2: 2012-11-02 ================== - Fixed compilation with gcc 4.7 (Ubuntu Quantal) v1.5.1: 2012-10-16 =================== - Fixed raycasting corner cases, expanded unit tests - added double precision 3D coordinate conversions (ticket #13) - Fixed compatibility with MSVC v1.5.0: 2012-08-28 =================== - dynamicEDT3D, a library for dynamically updatable distance maps by C. Sprunk, B. Lau, and W. Burgard is now available as part of the OctoMap distribution - added AbstractOccupancyOcTree interface class, moved binary file IO - delete functionality added to octrees and nodes - octovis can now delete nodes inside or outside of a selection box - operator== and copy constructor for octree nodes and octrees - key / coordinate conversion functions are now clearly named and documented. genPos/genKey deprecated in favor of coordToKey, keyToCoord - added limited-depth search - deep-copy constructor for octrees and nodes, assignment op. is private - improved compatibility with MSVC (thx to J. Aguado) - internal QGLViewer version increased to 2.3.17 - cleanup: functions removed /deprecated in favor or iterator-base node traversal - cleanup: private members renamed (tree root / node children) v1.4.3: 2012-10-07 ================== - Fixed raycasting corner cases, expanded unit tests - iterator_base derives public for boost::filter v1.4.2: 2012-04-24 =================== - extended graph2tree with more verbose logging / statistics - fixed conversion from color .ot to .bt in convert_octree - minor fixes in octovis with color rendering - fixed octovis compilation with Qt 4.8 (Ubuntu 12.04) - experimental editing functionality in octovis to clear and fill volumes v1.4.1: 2012-03-12 =================== - added stack.yaml for release in ROS with catkin v1.4: 2012-02-22 =================== - New generalized file IO for all kinds of OcTrees to .ot files. The updated file format requires a conversion of your old bt and ot files with the "convert_octree" tool. bt files are read and written as before. To write the general .ot file format use tree.write(...) and read it with AbstractOcTree::read(...) as factory (dynamic_cast to the correct class afterwards). - New ColorOcTree class to store color in addition to occupancy (e.g. from Kinect), with visualization in octovis - New map collections of octrees (hierarchical octree maps, experimental) - Support for Linux, Mac OSX, and Windows - enhancements and fixes in changeDetection - minor fixes and unit tests added v1.2: 2011-08-17 =================== - divided code into a library (octomap) and visualization part (octvis) to remove dependencies on Qt / OpenGL from library. Both can be built independently or as a complete package. - iterators for fast and flexible tree access (check doxygen of OcTreeBase:: iterator) are the preferred way to traverse tree nodes now - improved speed of map update / scan insertion. A further speedup is possible when using the "lazy evaluation" flag for batch insertion - unit tests based on CTest ("make test") - CMake improvements: new targets "dist" (build package) and "uninstall", dynamic and static libs are built. CMake package config to ease integration into other CMake-based systems (install octomap globally, or set the environment variable octomap_DIR to your OctoMap location - occupancy and sensor parameters are now a property of the tree and not the nodes. Use e.g. tree->isNodeOccupied(node) instead of node->isOccupied() - cleanup of OcTree and OccupancyOcTree: the latter now holds most of the implementation to ease deriving own tree and node types. See OcTreeStamped for an example. - debug output is now muted when not compiling as "Debug", ROS logging levels are used when compiled in ROS - experimental change detection in occupancy octrees - bugfixes and general compatibility improvements v1.0: 2011-03-15 =================== - cleanup of insertScan methods - key-based raycasting with pre-allocated KeyRay - speedup and cleanup of math, inlining v0.8: 2010-11-16 =================== - improved speed of map update / scan insertion - improved speed of map queries (isOccupied / castRay) - key-based computations to improve numerical stability and efficiency