Skip to content

Commit

Permalink
Release 0.9: Restructuring, stability increase and feature upgrades
Browse files Browse the repository at this point in the history
API breaking changes:
- GpuVoxels is now a singleton and has to be initialized
- BitVoxelMeaning enum changed! 0 = Free, 1 = Occupied. More SV IDs.
- Added as() operator to cast general maps into specific maps
- Map-Offsets may now be negative, so Voxel-pointers changed datatype.
- Shifted main API from general map type to specific implementations:
  Many functions can no longer be called on basic map types but only on
  specific maps. As not all map types offer all interfaces, this allowed
  us to remove unimplemented function stubs (thanks to Herbert Pietrzyk)
- RPY rotation order changed to ROS standards:
  First rotated around roll, then pitch, then yaw

Major changes:
- Unified map-locking for all map types to guarantee thread-safety
- Added new Pointcloud class for single clouds (thanks to Herbert Pietrzyk)
- Added Octree-API function: insertPointCloudWithFreespaceCalculation
  to trigger raycasting
- Added option to interpret unknown cells of an octree as obstacles
  when checking collisions
- Added tfHelper class to interact easily with ROS tf
- New Math functions:
  - Added host function to invert matrices.
    Code thankfully copied from Maxim Singer
  - Function to convert Mat4 to Roll, Pitch, Yaw
    together with Boost tests
  - Vector3f now offers: apprx_equal, length, normalize, dot, cross
  - angleBetween two vectors, orientationMatrixDiff between two matrices
  - Matrix4f now offers: equality, approximate equality and subtract
    together with Boost tests

Minor changes:
- Added visualizer config file and a python generator for random swept
  volume colors (this time for real)
- New Boost testcases for Pointclouds and MetaPointClouds
- Simplified sensor code for Raycasting in Octree
- Restructured keyboard shortcuts in visualizer:
  - Added "command mode" to switch between data types so
    all Function keys can toggle maps of the selected kind.
  - Using ALT+digit to set decimal preposition of SweptVol IDs
- Right-Click available for more datatypes in Visualizer to
  print voxel information
- Fixed updates of subclouds in MetaPointClouds
- Added sanity check in computeLinearLoad
- Added Getter functions for GVL parameters
- Added some general HTML pages to Doxygen docu (thanks to Darius Pietsch)
- Unified probability type in all maps
- Fixed memory leaks in MetaPointCloud
- Added Kernel for GPU memory comparison
- Unified geometric transformation kernels
- Clarified singed and unsigned voxel indices (thanks to Christian Juelg)
- GPU Voxels main class now checks for Compute Capability at init
- Added PointCloud constructor to load file

Other changes:
- Compiles with Ubuntu 16.04
  - Added CMake macro to remove VTK defines
  - Required lib glm fix: g-truc/glm#530
- Added enlarged UR5 model
- Updated list of contributors
  • Loading branch information
Andreas Hermann committed Aug 21, 2016
1 parent dbac817 commit 5497ed9
Show file tree
Hide file tree
Showing 209 changed files with 17,305 additions and 1,951 deletions.
30 changes: 23 additions & 7 deletions README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ and post to gpu-voxels@listserv.fzi.de
The library is developed and maintained by:
Andreas Hermann

Contributors are:
Contributors are (in temporal order):
Sebastian Klemm
Florian Drews
Matthias Wagner
Felix Mauch
Christian Jülg
Herbert Pietrzyk


We would be grateful if scientific publications resulting from projects that make use of GPU-Voxels would cite our overview paper:
Expand All @@ -26,12 +27,27 @@ in Intelligent Robots and Systems (IROS 2014, Chicago, September 2014)
The research leading to the results has received funding from the German Federal Ministry of Education and Research (BMBF) under grant agreement no. 01IM12006C (ISABEL).


COMPILATION:

mkdir build
cd build
cmake ..
make
BUILDING:

Install dependencies:
Core:
CUDA > 5.5,
PCL,
OpenNI,
Boost
Visualizer:
GLEW (libglew, libglew-dev)
GLM (libglm-dev)
OpenGL
GLUT (freeglut3, freeglut3-dev)
Examples:
Some examples require ROS (Robot Operation System) for parsing Robot Descriptions (URDF) and to interface 3D cameras

Compiling:
mkdir build
cd build
cmake ..
make

==> This will also generate example programs and a visualization tool to see some live demos.

Expand Down
62 changes: 62 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -167,3 +167,65 @@ V 0.82 (2016-02-12):
- Added Boost testcase for shifted collision checks.
- Added script to generate Visualizer configuration with random colors for SweptVolume IDs.
- Refined the models of the SVH with 0.4 mm resolution.

V 0.9 (2016-08-21):
====================
API breaking changes:
- GpuVoxels is now a singleton and has to be initialized
- BitVoxelMeaning enum changed! 0 = Free, 1 = Occupied. More SV IDs.
- Added as() operator to cast general maps into specific maps
- Map-Offsets may now be negative, so Voxel-pointers changed datatype.
- Shifted main API from general map type to specific implementations:
Many functions can no longer be called on basic map types but only on
specific maps. As not all map types offer all interfaces, this allowed
us to remove unimplemented function stubs (thanks to Herbert Pietrzyk)
- RPY rotation order changed to ROS standards:
First rotated around roll, then pitch, then yaw

Major changes:
- Unified map-locking for all map types to guarantee thread-safety
- Added new Pointcloud class for single clouds (thanks to Herbert Pietrzyk)
- Added Octree-API function: insertPointCloudWithFreespaceCalculation
to trigger raycasting
- Added option to interpret unknown cells of an octree as obstacles
when checking collisions
- Added tfHelper class to interact easily with ROS tf
- New Math functions:
- Added host function to invert matrices.
Code thankfully copied from Maxim Singer
- Function to convert Mat4 to Roll, Pitch, Yaw
together with Boost tests
- Vector3f now offers: apprx_equal, length, normalize, dot, cross
- angleBetween two vectors, orientationMatrixDiff between two matrices
- Matrix4f now offers: equality, approximate equality and subtract
together with Boost tests

Minor changes:
- Added visualizer config file and a python generator for random swept
volume colors (this time for real)
- New Boost testcases for Pointclouds and MetaPointClouds
- Simplified sensor code for Raycasting in Octree
- Restructured keyboard shortcuts in visualizer:
- Added "command mode" to switch between data types so
all Function keys can toggle maps of the selected kind.
- Using ALT+digit to set decimal preposition of SweptVol IDs
- Right-Click available for more datatypes in Visualizer to
print voxel information
- Fixed updates of subclouds in MetaPointClouds
- Added sanity check in computeLinearLoad
- Added Getter functions for GVL parameters
- Added some general HTML pages to Doxygen docu (thanks to Darius Pietsch)
- Unified probability type in all maps
- Fixed memory leaks in MetaPointCloud
- Added Kernel for GPU memory comparison
- Unified geometric transformation kernels
- Clarified singed and unsigned voxel indices (thanks to Christian Juelg)
- GPU Voxels main class now checks for Compute Capability at init
- Added PointCloud constructor to load file

Other changes:
- Added enlarged UR5 model
- Updated list of contributors
- Compiles with Ubuntu 16.04
- Added CMake macro to remove VTK defines
- Required lib glm fix: https://github.com/g-truc/glm/issues/530
43 changes: 35 additions & 8 deletions packages/gpu_voxels/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ FIND_PACKAGE(PCL)

# Dependencies for ROS interconnect
FIND_PACKAGE(ROS)
FIND_PACKAGE(pcl_ros)

# Dependencies for Kinect support
FIND_PACKAGE(OpenNi)
Expand Down Expand Up @@ -95,23 +96,49 @@ MESSAGE(STATUS "-------------------- END of GPU Voxels configuration -----------
MESSAGE(STATUS "--------------------------------------------------------------------------")



###############################################################################
# Enable position independent code
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")

# require GPU CUDA capabilities >= 2.0
SET(ICMAKER_CUDA_CPPDEFINES -arch=sm_20)
# Change these lines to increase performance if your GPU's compute capability is higher
# GPU-Voxels requires GPU CUDA capabilities >= 2.0


# --- Package management ---
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
SET(ICMAKER_CUDA_CPPDEFINES "-gencode=arch=compute_20,code=compute_20")

IF( (CMAKE_BUILD_TYPE STREQUAL "Debug") OR (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") )
MESSAGE(WARNING "Building with THRUST_DEBUG option!")
SET(ICMAKER_CUDA_CPPDEFINES "-gencode=arch=compute_20,code=compute_20 -DTHRUST_DEBUG")
ENDIF()


###############################################################################
# Remove vtk definitions (Macro copied from PCL)
# This is used for CUDA targets, because nvcc does not like VTK 6+ definitions
# style.
macro(REMOVE_VTK_DEFINITIONS)
get_directory_property(_dir_defs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS)
set(_vtk_definitions)
foreach(_item ${_dir_defs})
if(_item MATCHES "vtk*")
list(APPEND _vtk_definitions -D${_item})
endif()
endforeach()
remove_definitions(${_vtk_definitions})
endmacro(REMOVE_VTK_DEFINITIONS)


###############################################################################
# ICL Package management
ICMAKER_REGISTER_PACKAGE(gpu_voxels)

REMOVE_VTK_DEFINITIONS()
ADD_SUBDIRECTORY(src/gpu_voxels)
ADD_SUBDIRECTORY(src/gpu_visualization)
ADD_SUBDIRECTORY(src/gpu_classification)

ICMAKER_CONFIGURE_PACKAGE()

# --- Additional stuff ---
###############################################################################
# Build examples
ADD_SUBDIRECTORY(src/examples)

IF(BUILD_TESTS)
Expand Down
34 changes: 27 additions & 7 deletions packages/gpu_voxels/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,17 @@ If you have questions or experience any problems with the software, please subsc
mailinglist at https://listserv.fzi.de/mailman/listinfo/gpu-voxels
and post to gpu-voxels@listserv.fzi.de

The team behind this code consists of
The library is developed and maintained by:
Andreas Hermann

Contributors are (in temporal order):
Sebastian Klemm
Florian Drews
Matthias Wagner
Felix Mauch
Christian Jülg
Herbert Pietrzyk


We would be grateful if scientific publications resulting from projects that make use of GPU-Voxels would cite our overview paper:
A. Hermann, F. Drews, J. Bauer, S. Klemm, A. Roennau and R. Dillmann:
Expand All @@ -22,12 +27,27 @@ in Intelligent Robots and Systems (IROS 2014, Chicago, September 2014)
The research leading to the results has received funding from the German Federal Ministry of Education and Research (BMBF) under grant agreement no. 01IM12006C (ISABEL).


COMPILATION:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
BUILDING:

Install dependencies:
Core:
CUDA > 5.5,
PCL,
OpenNI,
Boost
Visualizer:
GLEW (libglew, libglew-dev)
GLM (libglm-dev)
OpenGL
GLUT (freeglut3, freeglut3-dev)
Examples:
Some examples require ROS (Robot Operation System) for parsing Robot Descriptions (URDF) and to interface 3D cameras

Compiling:
mkdir build
cd build
cmake ..
make

==> This will also generate example programs and a visualization tool to see some live demos.

Expand Down
Loading

0 comments on commit 5497ed9

Please sign in to comment.