forked from fzi-forschungszentrum-informatik/gpu-voxels
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Release 1.1: Lots of fixes, new CountingVoxelList, new gvl_ompl_plann…
…ing example and better C++11, Ubuntu 16.04 support Known issues: - Octrees are broken on Pascal GPUs - confirmed on Titan Xp and GTX 1080 Ti - the GLM in Ubuntu 16.04 has to be patched to allow usage of the visualizer. - see g-truc/glm#530 - patch for /usr/include/glm/detail/func_common.inl in packages/gpu_voxels/doc/glm_fix_issu530.patch - Cuda 9.1 - many incompatibilities are fixed, but there are still failing tests in the voxellist and octree test-suites API breaking changes: - GpuVoxels - addMap returns null-initialized shared_ptr if map already exists - lockSelf, lockBoth & Co removed, replaced by exception-safe lock_guard constructs to improve debugging - TinyXML - use system version from APT package libtinyxml-dev Major changes: - Changes in CUDA CMake setup - uncomment SET(CMAKE_CXX_STANDARD 11) at the top of CMakeLists.txt to activate C++11 mode - set -maxrregcount=63 to avoid errors on desktop GPUs with 1024 threads per block - always use ICMAKER_CUDA_CPPDEFINES to pass parameters to nvcc - Added OMPL planning example gvl_ompl_planning (Thanks to Andreas Hermann) - requires C++11 - incompatible with GPU-Voxels built with PCL 1.7 - Added model "ur10_coarse" voxelized at 9mm - Added CountingVoxelList to offer pointcloud density filtering (Thanks to Herbert Pietrzyk) - Use remove_underpopulated(minimum_count) to remove outliers - Use subtractFromCountingVoxelList to remove the robot and static objects - Added BitVoxelMap collision with ProbVoxelmap - ProbVoxelMap - insert() parses BitVoxelMeaning to allow freeing single voxels - SVCollider checks for noneButEmpty instead of isZero - Fix CUDA 9 incompatibilities, issue 63 - version macro - cub namespace - __ballot vs __ballot_sync Minor changes: - DistanceVoxelTest uses double buffering of DistanceVoxelMap to avoid flickering - ProbVoxelMap: Speed up the clearing of ProbVoxelMap by using memset instead of ctor calls for every voxel - C++11 fixes - icl_core_logging operator<< stringstream bug - various fixes collected by dybedal in issue 55 - VoxelList collision - added test cases and examples - fixed memory leaks in TemplateVoxelList - fixed PCL dependency of examples and helpers, see issue 61 - fix computeLinearLoad returning grid and block size 0 - added many checks after kernel launches to improve error discovery Other changes: - Documentation updates
- Loading branch information
Showing
139 changed files
with
3,955 additions
and
1,775 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# this is for emacs file handling -*- mode: cmake; indent-tabs-mode: nil -*- | ||
|
||
# ====================================== | ||
# CMakeLists file to demonstrate how to use GPU Voxels as a collision checker in OMPL: | ||
# ====================================== | ||
|
||
cmake_minimum_required (VERSION 2.8) | ||
SET(CMAKE_CXX_STANDARD 11) | ||
|
||
project (gvl_ompl_planning) | ||
|
||
# First we have to find our dependencies: | ||
FIND_PACKAGE(icl_core REQUIRED ) | ||
FIND_PACKAGE(gpu_voxels REQUIRED) | ||
FIND_PACKAGE(Boost COMPONENTS system REQUIRED) | ||
FIND_PACKAGE(CUDA REQUIRED) | ||
FIND_PACKAGE(ompl REQUIRED) | ||
|
||
|
||
# This is a quirk and should be removed in upcoming versions | ||
# If you built GPU Voxels without ROS support, remove this. | ||
FIND_PACKAGE(orocos_kdl REQUIRED) | ||
|
||
# A little debug info: | ||
MESSAGE(STATUS "GVL include dirs are: ${gpu_voxels_INCLUDE_DIRS}") | ||
MESSAGE(STATUS "OMPL include dirs are: ${OMPL_INCLUDE_DIRS}") | ||
|
||
# Also we have to inherit some Environment definitions required for our base libs: | ||
add_definitions( | ||
${icl_core_DEFINITIONS} | ||
${gpu_voxels_DEFINITIONS} | ||
) | ||
|
||
|
||
# Create a library that uses GPU Voxels: | ||
add_library (gvl_ompl_planner_helper gvl_ompl_planner_helper.cpp) | ||
|
||
target_include_directories (gvl_ompl_planner_helper | ||
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} | ||
PUBLIC ${gpu_voxels_INCLUDE_DIRS} | ||
PUBLIC ${CUDA_INCLUDE_DIRS} | ||
PUBLIC ${OMPL_INCLUDE_DIRS} | ||
PUBLIC ${orocos_kdl_INCLUDE_DIRS} # this should be removed in upcoming versions. | ||
) | ||
|
||
# Add an executable that calls the lib: | ||
add_executable (gvl_ompl_planner gvl_ompl_planner.cpp) | ||
|
||
# Link the executable to the library. | ||
# We currently also have to link against Boost and icl_core... | ||
target_link_libraries (gvl_ompl_planner | ||
LINK_PUBLIC gvl_ompl_planner_helper | ||
LINK_PUBLIC ${Boost_SYSTEM_LIBRARY} | ||
LINK_PUBLIC ${icl_core_LIBRARIES} | ||
LINK_PUBLIC ${gpu_voxels_LIBRARIES} | ||
LINK_PUBLIC ${OMPL_LIBRARIES} | ||
) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
== Planning example combining OMPL and GPU-Voxels == | ||
|
||
This example uses GPU-Voxels data structures and collision checking to plan the movement of a 6DOF robot arm in OMPL. | ||
|
||
== Requirements == | ||
|
||
* OMPL from ROS Kinetic | ||
* GPU-Voxels built without PCL support, or linked against a C++11 compatible version like 1.8 | ||
* CUDA 8.0 | ||
|
||
== Setup == | ||
|
||
* build GPU-Voxels with C++11 enabled and install to gpu-voxels/export | ||
|
||
cd <gpu-voxels-path> | ||
mkdir build | ||
cd build | ||
cmake -DCMAKE_DISABLE_FIND_PACKAGE_PCL=TRUE .. | ||
make && make install | ||
|
||
* build planner | ||
|
||
cd <gpu-voxels-path>/gvl_ompl_planning | ||
mkdir build | ||
cd build | ||
cmake -DCMAKE_PREFIX_PATH=<gpu-voxels-path>/export .. | ||
make | ||
|
||
== Running the planner == | ||
|
||
* Launch planner | ||
export GPU_VOXELS_MODEL_PATH=<gpu-voxels-path>/packages/gpu_voxels/models/ | ||
./gvl_ompl_planner | ||
|
||
* Start Visualizer | ||
<gpu_voxels>/build/bin/gpu_voxels_visualizer | ||
|
||
|
||
== When building GPU-Voxels with PCL 1.8.1 == | ||
* build PCL 1.8.1 from source | ||
|
||
* build GPU-Voxels with PCL 1.8.1 | ||
cd build | ||
cmake .. -DCMAKE_PREFIX_PATH=~/pcl-1.8.1/build:$CMAKE_PREFIX_PATH # use pcl version 1.8.1 | ||
make && make install | ||
# run "bin/gpu_voxels_visualizer" after starting gvl_ompl_planning | ||
|
||
* build gvl_ompl_planning | ||
cd gvl_ompl_planning | ||
mkdir build | ||
cd build | ||
export LD_LIBRARY_PATH=~/pcl-1.8.1/build/lib:$LD_LIBRARY_PATH # if you still have pcl1.7 installed | ||
cmake -DCMAKE_PREFIX_PATH=<gpu-voxels-path>/export:~/pcl-1.8.1/build/lib/ .. | ||
make | ||
ldd gvl_ompl_planner | grep -F "libpcl" # make sure there are no pcl 1.7 libraries linked in | ||
./gvl_ompl_planner | ||
|
Oops, something went wrong.