Release 1.3.0: Merging and morphing

Online grasp planning based on pointclouds of in-hand-cameraGPU Voxels at a Cleanroom3D Replanning scenarioReplanning3D View of Lab Environment3D Replanning scenario

Release 1.3.0: Merging and morphing

Dear GPU-Voxels users, we just released the 1.3.0 version!
As always you find the new release at GitHub.

This release adds a lot of functionality and fixes many compatiblilty issues on newer systems:

  • Adds CUDA 10.0 and Ubuntu 18.04 compatibility.
  • Compilation with C++11 is now enabled by default.
  • The new ROS-connected DistanceROSDemo example shows how to connect GPU-Voxels with any ROS point-cloud publisher
  • Improved Visualizer Shared Memory error handling to avoid visualizer start-up issues
  • Adds two rosbags with rosbags with ROS point-clouds

To use the new rosbags with DistanceROSDemo:

# source ROS
source /opt/ros/kinetic/setup.bash

# after starting a roscore and distance_ros_demo:
rosbag play packages/gpu_voxels/models/rs2_d435_848x480_one_cloud.bag
# or
rosbag play packages/gpu_voxels/models/rs2_d435_848x480_hand.bag

Full Changelog:

Release 1.3.0: CUDA 10.0 and Ubuntu 18.04 compatibility. Uses C++11 by default. Adds ROS-connected DistanceROSDemo example. Improved Visualizer Shared Memory error handling.

Major changes:

  • Added DistanceROSDemo to show-case a ROS node subscribing to PCL point-clouds.
  • Implemented additional merge functions
  • Added TemplateVoxelMap.merge(TemplateVoxelList)
  • Added functions to merge TemplateVoxelList into BitVoxelList and CountingVoxelList;
  • Added TemplateVoxelMap::clone and TemplateVoxelList::clone, was previously
    only available in DistanceVoxelMap
  • Added functions that implement the morphological operations Closing, Dilation and Erosion
  • Added function getCenterOfMass to TemplateVoxelList and TemplateVoxelMap
  • Added BitVoxelList::copyCoordsToHostBvmBounded: allows the selective copy of voxels with BitVoxelMeanings in a given range
  • Updated icmaker and icl_core to fix issues with new Boost and CMake versions

Possibly breaking changes:

  • C++11 support is active by default. The new “indigo” branch has C++11 deactivated by default, is identical otherwise
  • changed BitVoxelList::findMatchingVoxels signature:
  • Implicitly set argument list1 to ‘this’.
  • Add option omit_coords: if true, output VoxelLists will only contain voxel IDs and data but the coord_list will be empty (default). If set to false, voxel coordinates will also be copied to the output lists.

Additional changes:

  • gvl_ompl_planner:
  • fixed collision check threshold value
  • updated comments and logging output
  • gvl_ompl_planner: added comment regarding LD_LIBRARY_PATH
  • fix MetaPointCloud name unknown for robot links without geometry
  • updated stb_image.h to version 2.19
  • fix ROS&Urdf CMake discovery issue
  • add tests for TemplateVoxelList and TemplateVoxelMap clone
  • add hollie_from_pointcloud2.pcd for example DistanceVoxelTest.cpp
  • fix a CountingVoxelList visualization issue

Known Issues:

  • Eigen 3 issues: can be fixed by cloning a more current unstable Eigen version and placing it in CMAKE_PREFIX_PATH
    • on Ubuntu 18.04 with CUDA 10.0: “math_functions.hpp not found”
    • Eigen 3.3.4 and 3.3.5 with CUDA 9.0, 9.1, 9.2: Error: class “Eigen::half” has no member “x”
    • see
  • If the ROS dependency was found, but the GPU-Voxels URDF features are still unabailable, run source /opt/ros/YOUR_ROS_DISTRO/setup.bash before running cmake.
  • Cuda 8.0: Code compiled with Cuda 8.0 works fine with older GPU drivers such as 375.66, but there are runtime errors with driver 384.111 and newer (“PTX JIT compilation failed”).
    • Easy fix: use Cuda 10 with a current 410 or newer driver version. Cuda 10 is also available for Ubuntu 14.04 and 16.04.
  • The GLM headers provided by Ubuntu 16.04 have to be patched to allow usage of the visualizer.
    • see
    • patch for /usr/include/glm/detail/func_common.inl in packages/gpu_voxels/doc/glm_fix_issu530.patch
  • The constant cMAX_NR_OF_BLOCKS is currently limited to 65535, while current CUDA devices support over 2 billion blocks
    • relevant during computeLinearLoad calls and collision checking
Read more | Comments Off on Release 1.3.0: Merging and morphing | Jan 11, 2019