Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gsaurel/hpp-fcl
  • coal-library/coal
2 results
Show changes
Commits on Source (2939)
Showing
with 1518 additions and 212 deletions
BasedOnStyle: Google
SortIncludes: false
0067c8aa66aac548601e2a3fd029aa264cc59f2a
76b68f785df31b00e153290b45ec290a9c5f7963
# ruff --fix . (Guilhem Saurel, 2023-10-25)
02cef56abfacee590c8444fd379c8837bf007fa1
# black . (Guilhem Saurel, 2023-10-25)
febfbcbe9c98cdb4e0c7bbf4554a6925b391834b
# ruff --fix . (Guilhem Saurel, 2023-10-24)
58dee5ae90eded5125825a2da0fe76a5031f3334
# black . (Guilhem Saurel, 2023-10-24)
889ff8d1ca00b9e317e1da4136e233bb49a049df
# SCM syntax highlighting
pixi.lock linguist-language=YAML linguist-generated=true
name: Check-changelog
on:
pull_request:
types: [assigned, opened, synchronize, reopened, labeled, unlabeled]
branches:
- devel
jobs:
check-changelog:
name: Check changelog action
runs-on: ubuntu-latest
steps:
- uses: tarides/changelog-check-action@v2
with:
changelog: CHANGELOG.md
name: CI - MacOS/Linux via pip
on:
push:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
pull_request:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CTEST_OUTPUT_ON_FAILURE: 1
CTEST_PARALLEL_LEVEL: 4
jobs:
coal-pip:
name: "CI on ${{ matrix.os }} / py ${{ matrix.python-version }} with pip"
runs-on: "${{ matrix.os }}-latest"
strategy:
fail-fast: false
matrix:
os: ["ubuntu", "macos"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
exclude:
- os: "macos"
python-version: "3.8" # Not available on arm64
steps:
- uses: actions/checkout@v4
with:
submodules: 'true'
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- run: python -m pip install -U pip
- run: python -m pip install cmeel-assimp cmeel-octomap cmeel-qhull eigenpy[build]
- run: echo "CMAKE_PREFIX_PATH=$(cmeel cmake)" >> $GITHUB_ENV
- run: cmake -B build -S . -DCOAL_HAS_QHULL=ON
- run: cmake --build build -j 4
- run: cmake --build build -t test
name: CI - MacOS/Linux/Windows via Pixi
on:
push:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
pull_request:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
coal-pixi:
name: ${{ matrix.os }} - Env ${{ matrix.environment }} ${{ matrix.build_type }} ${{ matrix.cxx_options }}
runs-on: ${{ matrix.os }}
env:
CCACHE_BASEDIR: "${GITHUB_WORKSPACE}"
CCACHE_DIR: "${GITHUB_WORKSPACE}/.ccache"
CCACHE_COMPRESS: true
CCACHE_COMPRESSLEVEL: 6
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, macos-13]
environment: [all, all-python-oldest]
build_type: [Release, Debug]
cxx_options: ['', '-mavx2']
exclude:
- os: macos-latest
cxx_options: '-mavx2'
- os: macos-13
cxx_options: '-mavx2'
include:
- os: windows-latest
environment: all
cxx_options: ''
build_type: Release
- os: windows-latest
environment: all-clang-cl
cxx_options: ''
build_type: Release
- os: windows-latest
environment: default
cxx_options: ''
build_type: Debug
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/cache@v4
with:
path: .ccache
key: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-${{ github.sha }}
restore-keys: ccache-macos-linux-windows-pixi-${{ matrix.os }}-${{ matrix.build_type }}-${{ matrix.cxx_options }}-${{ matrix.environment }}-
- uses: prefix-dev/setup-pixi@v0.8.1
with:
cache: true
environments: ${{ matrix.environment }}
- name: Build Coal [MacOS/Linux/Windows]
env:
CMAKE_BUILD_PARALLEL_LEVEL: 2
COAL_BUILD_TYPE: ${{ matrix.build_type }}
COAL_CXX_FLAGS: ${{ matrix.cxx_options }}
run: |
pixi run -e ${{ matrix.environment }} build
- name: Test Coal [MacOS/Linux/Windows]
if: ${{ ! (contains(matrix.os, 'windows') && matrix.build_type == 'Debug') }}
run: |
pixi run -e ${{ matrix.environment }} ctest --test-dir build --output-on-failure
check:
if: always()
name: check-macos-linux-windows-pixi
needs:
- coal-pixi
runs-on: Ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
name: "CI - Nix"
on:
push:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- colcon.pkg
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
nix:
runs-on: "${{ matrix.os }}-latest"
strategy:
matrix:
os: [ubuntu, macos]
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v27
- uses: cachix/cachix-action@v15
with:
name: gepetto
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: nix build -L
# This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git).
# For troubleshooting, see readme (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst)
name: ROS-CI
# This determines when this workflow is run
on:
push:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
pull_request:
paths-ignore:
- .gitlab-ci.yml
- .gitignore
- '*.md'
- CITATION.*
- LICENSE
- .pre-commit-config.yaml
- CHANGELOG.md
- development/*.md
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
CI:
strategy:
matrix:
env:
- {ROS_DISTRO: noetic}
- {ROS_DISTRO: iron}
- {ROS_DISTRO: humble}
#- {ROS_DISTRO: rolling}
env:
#CCACHE_DIR: /github/home/.ccache # Enable ccache
BUILDER: colcon
PRERELEASE: true
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
# This step will fetch/store the directory used by ccache before/after the ci run
#- uses: actions/cache@v3
# with:
# path: ${{ env.CCACHE_DIR }}
# key: ccache-${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}
# Run industrial_ci
- uses: 'ros-industrial/industrial_ci@9f963f67ebb889792175776c5ee00134d7bb569b'
env: ${{ matrix.env }}
check:
if: always()
name: check-ros-ci
needs:
- CI
runs-on: Ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
name: update-flake-lock
on:
workflow_dispatch:
schedule:
- cron: '0 11 12 * *'
jobs:
lockfile:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@main
with:
pr-labels: "no changelog"
token: ${{ secrets.GH_TOKEN_FOR_UPDATES }}
name: CI - Update Pixi lockfile
permissions:
contents: write
pull-requests: write
on:
workflow_dispatch:
schedule:
- cron: 0 5 1 * *
jobs:
pixi-update:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: generate-token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
token: ${{ steps.generate-token.outputs.token }}
ref: devel
# Make sure the value of GITHUB_TOKEN will not be persisted in repo's config
persist-credentials: false
- name: Set up pixi
uses: prefix-dev/setup-pixi@v0.8.1
with:
run-install: false
- name: Update lockfile
run: |
set -o pipefail
pixi update --json | pixi exec pixi-diff-to-markdown >> diff.md
- name: Create pull request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ steps.generate-token.outputs.token }}
commit-message: 'pixi: Update pixi lockfile'
title: Update pixi lockfile
body-path: diff.md
branch: topic/update-pixi
base: devel
labels: |
pixi
no changelog
delete-branch: true
add-paths: pixi.lock
build*/
Xcode/*
*~
*.pyc
# pixi environments
.pixi
*.egg-info
include: https://rainboard.laas.fr/project/coal/.gitlab-ci.yml
[submodule "cmake"]
path = cmake
url = https://github.com/jrl-umi3218/jrl-cmakemodules.git
[submodule "third-parties/qhull"]
path = third-parties/qhull
url = https://github.com/qhull/qhull.git
ci:
autoupdate_branch: devel
autofix_prs: false
autoupdate_schedule: quarterly
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.6
hooks:
- id: ruff
args:
- --fix
- --exit-non-zero-on-fix
- id: ruff-format
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v19.1.6
hooks:
- id: clang-format
args:
- '--style={BasedOnStyle: Google, SortIncludes: false}'
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
language: cpp
os:
- linux
- osx
compiler:
- gcc
- clang
env:
- BUILD_TYPE=Debug
- BUILD_TYPE=Release
matrix:
exclude:
- os: osx
compiler: gcc
install:
# Install dependencies for FCL
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then 'ci/install_linux.sh' ; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then 'ci/install_osx.sh' ; fi
script:
# Create build directory
- mkdir build
- cd build
# Configure
- cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE ..
# Build
- make -j4
# Run unit tests
- make test
# Make sure we can install with no issues
- sudo make -j4 install
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
## [3.0.1] - 2025-02-12
### Fixed
- Remove CMake CMP0167 warnings ([#630](https://github.com/coal-library/coal/pull/630))
- Allow to run test in the build directory on Windows ([#630](https://github.com/coal-library/coal/pull/630))
- Updated nix flake from `hpp-fcl` to `coal` ([#632](https://github.com/coal-library/coal/pull/632)
- Fix hpp-fclConfig.cmake on Windows ([#633](https://github.com/coal-library/coal/pull/633))
- Fix install version ([#651](https://github.com/coal-library/coal/pull/651))
### Added
- Add Pixi support ([#629](https://github.com/coal-library/coal/pull/629))
### Changed
- Set NOMINMAX as a public definitions on Windows ([#640](https://github.com/coal-library/coal/pull/640))
## [3.0.0] - 2024-11-20
### Added
- Renaming the library from `hpp-fcl` to `coal`. Created a `COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL` CMake option for retro compatibility. This allows to still do `find_package(hpp-fcl)` and `#include <hpp/fcl/...>` in C++ and it allows to still do `import hppfcl` in python ([#596](https://github.com/humanoid-path-planner/hpp-fcl/pull/596)).
- Added `Transform3f::Random` and `Transform3f::setRandom` ([#584](https://github.com/humanoid-path-planner/hpp-fcl/pull/584))
- New feature: computation of contact surfaces for any pair of primitive shapes (triangle, sphere, ellipsoid, plane, halfspace, cone, capsule, cylinder, convex) ([#574](https://github.com/humanoid-path-planner/hpp-fcl/pull/574)).
- Enhance Broadphase DynamicAABBTree to better handle planes and halfspace ([#570](https://github.com/humanoid-path-planner/hpp-fcl/pull/570))
- [#558](https://github.com/humanoid-path-planner/hpp-fcl/pull/558):
- [internal] Removed dead code in `narrowphase/details.h` ([#558](https://github.com/humanoid-path-planner/hpp-fcl/pull/558))
- [internal] Removed specializations of methods of `GJKSolver`. Now the specializations are all handled by `ShapeShapeDistance` in `shape_shape_func.h`.
- [new feature] Added support for Swept-Sphere primitives (sphere, box, capsule, cone, ellipsoid, triangle, halfspace, plane, convex mesh).
- [API change] Renamed default convergence criterion from `VDB` to `Default` ([#556](https://github.com/humanoid-path-planner/hpp-fcl/pull/556))
- Fixed EPA returning nans on cases where it could return an estimate of the normal and penetration depth. ([#556](https://github.com/humanoid-path-planner/hpp-fcl/pull/556))
- Fixed too low tolerance in GJK/EPA asserts ([#554](https://github.com/humanoid-path-planner/hpp-fcl/pull/554))
- Fixed `normal_and_nearest_points` test (no need to have Eigen 3.4) ([#553](https://github.com/humanoid-path-planner/hpp-fcl/pull/553))
- [#549](https://github.com/humanoid-path-planner/hpp-fcl/pull/549)
- Optimize EPA: ignore useless faces in EPA's polytope; warm-start support computation for `Convex`; fix edge-cases witness points computation.
- Add `Serializable` trait to transform, collision data, collision geometries, bounding volumes, bvh models, hfields. Collision problems can now be serialized from C++ and sent to python and vice versa.
- CMake: allow use of installed jrl-cmakemodules ([#564](https://github.com/humanoid-path-planner/hpp-fcl/pull/564))
- CMake: Add compatibility with jrl-cmakemodules workspace ([#610](https://github.com/humanoid-path-planner/hpp-fcl/pull/610))
- Python: add id() support for geometries ([#618](https://github.com/humanoid-path-planner/hpp-fcl/pull/618)).
### Fixed
- Fix Fix serialization unit test when running without Qhull support ([#611](https://github.com/humanoid-path-planner/hpp-fcl/pull/611))
- Compiler warnings ([#601](https://github.com/humanoid-path-planner/hpp-fcl/pull/601), [#605](https://github.com/humanoid-path-planner/hpp-fcl/pull/605))
- CMake: fix assimp finder
- Don't define GCC7 Boost serialization hack when `HPP_FCL_SKIP_EIGEN_BOOST_SERIALIZATION` is defined ([#530](https://github.com/humanoid-path-planner/hpp-fcl/pull/530))
- Default parameters for narrowphase algorithms (GJK and EPA); fixed assertion checks that were sometimes failing in GJK simplex projection and BVH `collide` ([#531](https://github.com/humanoid-path-planner/hpp-fcl/pull/531)).
- Created a new macro `HPP_FCL_ASSERT` which behaves as an assert by default. When the option `HPP_FCL_TURN_ASSERT_INTO_EXCEPTION` is turned on, it replaces the macro by an exception ([#533](https://github.com/humanoid-path-planner/hpp-fcl/pull/533)). Also fixed an EPA assert in `GJKSolver`.
- Simplify internals of hpp-fcl ([#535](https://github.com/humanoid-path-planner/hpp-fcl/pull/535)):
- Computing distance between 2 primitives shapes does not use a traversal node anymore.
- Removed successive mallocs in GJK/EPA when using an instance of `GJKSolver` multiple times.
- `GJKSolver` now deals with **all** statuses of GJK/EPA. Some of these statuses represent a bad behavior of GJK/EPA and now trigger an assertion in Debug mode. Usefull for debugging these algos.
- Logging was added with macros like `HPP_FCL_LOG_(INFO/DEBUG/WARNING/ERROR)`; hpp-fcl can now log usefull info when the preprocessor option `HPP_FCL_ENABLE_LOGGING` is enabled.
- Deprecated `enable_distance_lower_bound` in `CollisionRequest`; a lower bound on distance is always computed.
- Deprecated `enable_nearest_points` in `DistanceRequest`; they are always computed and are the points of the shapes that achieve a distance of `DistanceResult::min_distance`.
- Added `enable_signed_distance` flag in `DistanceRequest` (default `true`). Turn this of for better performance if only the distance when objects are disjoint is needed.
- The internal collision and distance functions of hpp-fcl now use `CollisionRequest::enable_contact` and `DistanceRequest::enable_signed_distance` to control whether or not penetration information should be computed. There are many scenarios where we don't need the penetration information and only want to know if objects are colliding and compute their distance only if they are disjoint. These flags allow the user to control the trade-off between performance vs. information of the library.
- Fix convergence criterion of EPA; made GJK and EPA convergence criterion absolute + relative to scale to the shapes' dimensions; remove max face/vertices fields from EPA (these can be deduced from the max number of iterations)
- Account for lateral borders in Height Fields model.
- Fix compilation error on recent APPLE compilers ([#539](https://github.com/humanoid-path-planner/hpp-fcl/pull/539)).
- Fix printing of deprecated message ([#540](https://github.com/humanoid-path-planner/hpp-fcl/pull/540)).
- Fix compilation with earlier Eigen version
- Fix compilation warning message
- Fix issue in Octomap.computeLocalAABB
- Fix unsupported function for contact_patch_matrix
- Fix Octomap dependency on ROS
## [2.4.5] - 2024-07-28
### Fixed
- Fix Octomap dependency on ROS
## [2.4.4] - 2024-03-06
## [2.4.3] - 2024-03-06
### Fixed
- updated cmake module to fix documentation generation
- test documentation in conda ci
## [2.4.2] - 2024-03-06
### Fixed
- Fix CMAKE_INSTALL_{} path for installation ([#543](https://github.com/humanoid-path-planner/hpp-fcl/pull/543))
## [2.4.1] - 2024-01-23
### Fixed
- CachedMeshLoader checks file last modification time.
- Fix call to clear methods for {Collision,Distance}Data inside init function ([#509](https://github.com/humanoid-path-planner/hpp-fcl/pull/509))
- CMake: fix submodule use in bindings in ([#512](https://github.com/humanoid-path-planner/hpp-fcl/pull/512))
- Fix bug in DynamicAABBTreeCollisionManager (see [#514](https://github.com/humanoid-path-planner/hpp-fcl/issues/514)) in ([#515](https://github.com/humanoid-path-planner/hpp-fcl/pull/515))
### Added
- In struct Contact
- Documentation of the members,
- initialization of normal, closest points and contact point in constructors
- method getDistanceToCollision
- New variant of GJK (PolyakAcceleration).
- Specialization of distance computation between
- Sphere and Capsule,
- Ellipsoid and Halfspace,
- Ellipsoid and Plane.
- Collision computation between Octree and HeightField.
### Changed
- Matrixx3f and Matrixx3i become row major.
- Use shared pointers to vectors instead of arrays for vertices and triangles in class BVHModelBase.
### Removed
- members related epa in class QueryRequest
## [2.4.0] - 2023-11-27
### Added
- Add method to `CollisionObject` to get `CollisionGeometry` raw pointer
### Fixed
- Fix RPATH computation on OSX
- Fix Python stubs generation on Windows
## [2.3.7] - 2023-11-15
### What's Changed
- Add Python 3.12 support by [@jorisv](https://github.com/jorisv) ([#471](https://github.com/humanoid-path-planner/hpp-fcl/pull/471))
- Enable ruff linting by [@nim65s](https://github.com/nim65s) ([#464](https://github.com/humanoid-path-planner/hpp-fcl/pull/464))
## [2.3.6] - 2023-09-30
### What's Changed
- Update ROS_DISTRO by [@jcarpent](https://github.com/jcarpent) ([#442](https://github.com/humanoid-path-planner/hpp-fcl/pull/442))
- Add citations by [@jcarpent](https://github.com/jcarpent) ([#449](https://github.com/humanoid-path-planner/hpp-fcl/pull/449))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#444](https://github.com/humanoid-path-planner/hpp-fcl/pull/444))
- [WIP] Debug by [@jcarpent](https://github.com/jcarpent) ([#455](https://github.com/humanoid-path-planner/hpp-fcl/pull/455))
- CMake: require >= 3.10 by [@nim65s](https://github.com/nim65s) ([#453](https://github.com/humanoid-path-planner/hpp-fcl/pull/453))
- core: fix SaPCollisionManager::empty() by [@rujialiu](https://github.com/rujialiu) ([#454](https://github.com/humanoid-path-planner/hpp-fcl/pull/454))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#452](https://github.com/humanoid-path-planner/hpp-fcl/pull/452))
### New Contributors
- [@rujialiu](https://github.com/rujialiu) made their first contribution ([#454](https://github.com/humanoid-path-planner/hpp-fcl/pull/454))
## [2.3.5] - 2023-07-11
### What's Changed
- Fix compilation warning by [@jcarpent](https://github.com/jcarpent) ([#434](https://github.com/humanoid-path-planner/hpp-fcl/pull/434))
- Fix parsing of doxygen doc by [@jcarpent](https://github.com/jcarpent) ([#439](https://github.com/humanoid-path-planner/hpp-fcl/pull/439))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#438](https://github.com/humanoid-path-planner/hpp-fcl/pull/438))
## [2.3.4] - 2023-06-01
### What's Changed
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#414](https://github.com/humanoid-path-planner/hpp-fcl/pull/414))
- Fix conversion warning by [@wxmerkt](https://github.com/wxmerkt) ([#417](https://github.com/humanoid-path-planner/hpp-fcl/pull/417))
- Add missing boost include by [@nim65s](https://github.com/nim65s) ([#418](https://github.com/humanoid-path-planner/hpp-fcl/pull/418))
- ci: update macos-linux-pip by [@nim65s](https://github.com/nim65s) ([#419](https://github.com/humanoid-path-planner/hpp-fcl/pull/419))
- Modernize Cmake use by [@nim65s](https://github.com/nim65s) ([#420](https://github.com/humanoid-path-planner/hpp-fcl/pull/420))
- tests: use boost::filesystem by [@nim65s](https://github.com/nim65s) ([#424](https://github.com/humanoid-path-planner/hpp-fcl/pull/424))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#425](https://github.com/humanoid-path-planner/hpp-fcl/pull/425))
- Update minimal Python version by [@jcarpent](https://github.com/jcarpent) ([#427](https://github.com/humanoid-path-planner/hpp-fcl/pull/427))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#430](https://github.com/humanoid-path-planner/hpp-fcl/pull/430))
- Sync submodule CMake by [@jcarpent](https://github.com/jcarpent) ([#431](https://github.com/humanoid-path-planner/hpp-fcl/pull/431))
## [2.3.3] - 2023-05-09
### What's Changed
- update default C++ to 14 by [@nim65s](https://github.com/nim65s) ([#410](https://github.com/humanoid-path-planner/hpp-fcl/pull/410))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#413](https://github.com/humanoid-path-planner/hpp-fcl/pull/413))
## [2.3.2] - 2023-04-27
### What's Changed
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#391](https://github.com/humanoid-path-planner/hpp-fcl/pull/391))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#393](https://github.com/humanoid-path-planner/hpp-fcl/pull/393))
- Topic/rpath by [@nim65s](https://github.com/nim65s) ([#394](https://github.com/humanoid-path-planner/hpp-fcl/pull/394))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#396](https://github.com/humanoid-path-planner/hpp-fcl/pull/396))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#399](https://github.com/humanoid-path-planner/hpp-fcl/pull/399))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#402](https://github.com/humanoid-path-planner/hpp-fcl/pull/402))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#406](https://github.com/humanoid-path-planner/hpp-fcl/pull/406))
## [2.3.1] - 2023-03-25
### What's Changed
- Remove useless call to /proc/cpuinfo by [@jcarpent](https://github.com/jcarpent) ([#385](https://github.com/humanoid-path-planner/hpp-fcl/pull/385))
- Add pip CI by [@nim65s](https://github.com/nim65s) ([#386](https://github.com/humanoid-path-planner/hpp-fcl/pull/386))
- [GJKSolver] Fix missing switch case in result status of GJK by [@lmontaut](https://github.com/lmontaut) ([#387](https://github.com/humanoid-path-planner/hpp-fcl/pull/387))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#388](https://github.com/humanoid-path-planner/hpp-fcl/pull/388))
## [2.3.0] - 2023-03-17
### What's Changed
- [CI] Remove EOL Galactic by [@wxmerkt](https://github.com/wxmerkt) ([#366](https://github.com/humanoid-path-planner/hpp-fcl/pull/366))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#367](https://github.com/humanoid-path-planner/hpp-fcl/pull/367))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#368](https://github.com/humanoid-path-planner/hpp-fcl/pull/368))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#369](https://github.com/humanoid-path-planner/hpp-fcl/pull/369))
- Adding EarlyStopped flag in GJK by [@lmontaut](https://github.com/lmontaut) ([#371](https://github.com/humanoid-path-planner/hpp-fcl/pull/371))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#373](https://github.com/humanoid-path-planner/hpp-fcl/pull/373))
- Update CI by [@jcarpent](https://github.com/jcarpent) ([#374](https://github.com/humanoid-path-planner/hpp-fcl/pull/374))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#375](https://github.com/humanoid-path-planner/hpp-fcl/pull/375))
- Skip test if BUILD_TESTING is OFF by [@jcarpent](https://github.com/jcarpent) ([#378](https://github.com/humanoid-path-planner/hpp-fcl/pull/378))
## [2.2.0] - 2022-12-12
### What's Changed
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#358](https://github.com/humanoid-path-planner/hpp-fcl/pull/358))
- Extract checks if AABB overlap by [@jmirabel](https://github.com/jmirabel) ([#360](https://github.com/humanoid-path-planner/hpp-fcl/pull/360))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#361](https://github.com/humanoid-path-planner/hpp-fcl/pull/361))
- Sync submodule CMake by [@jcarpent](https://github.com/jcarpent) ([#362](https://github.com/humanoid-path-planner/hpp-fcl/pull/362))
- Add support of Pickling by [@jcarpent](https://github.com/jcarpent) ([#363](https://github.com/humanoid-path-planner/hpp-fcl/pull/363))
## [2.1.4] - 2022-10-24
### What's Changed
- Sync submodule CMake by [@jcarpent](https://github.com/jcarpent) ([#352](https://github.com/humanoid-path-planner/hpp-fcl/pull/352))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#353](https://github.com/humanoid-path-planner/hpp-fcl/pull/353))
## [2.1.3] - 2022-09-13
### What's Changed
- Minor boost cleanup by [@pantor](https://github.com/pantor) ([#331](https://github.com/humanoid-path-planner/hpp-fcl/pull/331))
- [CI] Activate ROS2 configurations by [@wxmerkt](https://github.com/wxmerkt) ([#332](https://github.com/humanoid-path-planner/hpp-fcl/pull/332))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#337](https://github.com/humanoid-path-planner/hpp-fcl/pull/337))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#341](https://github.com/humanoid-path-planner/hpp-fcl/pull/341))
- Fix shapeIntersect when for EPA FallBack by [@jcarpent](https://github.com/jcarpent) ([#342](https://github.com/humanoid-path-planner/hpp-fcl/pull/342))
- Fix findAssimp on Windows by [@jcarpent](https://github.com/jcarpent) ([#345](https://github.com/humanoid-path-planner/hpp-fcl/pull/345))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#347](https://github.com/humanoid-path-planner/hpp-fcl/pull/347))
### New Contributors
- [@pantor](https://github.com/pantor) made their first contribution ([#331](https://github.com/humanoid-path-planner/hpp-fcl/pull/331))
## [2.1.2] - 2022-08-01
### What's Changed
- core: add EPA::FallBack condition to shapeDistance computation by [@lmontaut](https://github.com/lmontaut) ([#325](https://github.com/humanoid-path-planner/hpp-fcl/pull/325))
- CMake: update to eigenpy 2.7.10 by [@nim65s](https://github.com/nim65s) ([#327](https://github.com/humanoid-path-planner/hpp-fcl/pull/327))
## [2.1.1] - 2022-07-25
### What's Changed
- cmake: relocatable package for recent CMake versions by [@nim65s](https://github.com/nim65s) ([#319](https://github.com/humanoid-path-planner/hpp-fcl/pull/319))
- ROS2/Colcon integration by [@wxmerkt](https://github.com/wxmerkt) ([#321](https://github.com/humanoid-path-planner/hpp-fcl/pull/321))
## [2.1.0] - 2022-07-13
### What's Changed
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#288](https://github.com/humanoid-path-planner/hpp-fcl/pull/288))
- Add enum helpers by [@jcarpent](https://github.com/jcarpent) ([#290](https://github.com/humanoid-path-planner/hpp-fcl/pull/290))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#294](https://github.com/humanoid-path-planner/hpp-fcl/pull/294))
- Ellipsoids in collision & distance matrices by [@lmontaut](https://github.com/lmontaut) ([#295](https://github.com/humanoid-path-planner/hpp-fcl/pull/295))
- doc: simplex projection in GJK class. by [@lmontaut](https://github.com/lmontaut) ([#296](https://github.com/humanoid-path-planner/hpp-fcl/pull/296))
- Feature: Nesterov acceleration for GJK by [@lmontaut](https://github.com/lmontaut) ([#289](https://github.com/humanoid-path-planner/hpp-fcl/pull/289))
- Add more testing to broadphase by [@jcarpent](https://github.com/jcarpent) ([#298](https://github.com/humanoid-path-planner/hpp-fcl/pull/298))
- Feature: adding convergence criterions for GJK algorithm by [@lmontaut](https://github.com/lmontaut) ([#299](https://github.com/humanoid-path-planner/hpp-fcl/pull/299))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#300](https://github.com/humanoid-path-planner/hpp-fcl/pull/300))
- Reorder triangles when computing convex hulls by [@lmontaut](https://github.com/lmontaut) ([#301](https://github.com/humanoid-path-planner/hpp-fcl/pull/301))
- Exposing gjk utils by [@lmontaut](https://github.com/lmontaut) ([#302](https://github.com/humanoid-path-planner/hpp-fcl/pull/302))
- Fix assert precision in GJK by [@jcarpent](https://github.com/jcarpent) ([#304](https://github.com/humanoid-path-planner/hpp-fcl/pull/304))
- Simplify GJKSolver settings by [@jcarpent](https://github.com/jcarpent) ([#305](https://github.com/humanoid-path-planner/hpp-fcl/pull/305))
- Add CollisionResult::nearest_points by [@jcarpent](https://github.com/jcarpent) ([#303](https://github.com/humanoid-path-planner/hpp-fcl/pull/303))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#306](https://github.com/humanoid-path-planner/hpp-fcl/pull/306))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#309](https://github.com/humanoid-path-planner/hpp-fcl/pull/309))
- Fix minimal value for GJK::distance_upper_bound by [@jcarpent](https://github.com/jcarpent) ([#310](https://github.com/humanoid-path-planner/hpp-fcl/pull/310))
- Fix incoherent overlap by [@jcarpent](https://github.com/jcarpent) ([#311](https://github.com/humanoid-path-planner/hpp-fcl/pull/311))
- Expose shared_ptr<OcTree> by [@Jiayuan-Gu](https://github.com/Jiayuan-Gu) ([#314](https://github.com/humanoid-path-planner/hpp-fcl/pull/314))
- test/gjk_convergence_criterion: Add check on GJK::Status by [@wxmerkt](https://github.com/wxmerkt) ([#315](https://github.com/humanoid-path-planner/hpp-fcl/pull/315))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#316](https://github.com/humanoid-path-planner/hpp-fcl/pull/316))
- Handle negative security margin by [@jcarpent](https://github.com/jcarpent) ([#312](https://github.com/humanoid-path-planner/hpp-fcl/pull/312))
### New Contributors
- [@Jiayuan-Gu](https://github.com/Jiayuan-Gu) made their first contribution ([#314](https://github.com/humanoid-path-planner/hpp-fcl/pull/314))
## [2.0.1] - 2022-04-15
This PR mainly fixes packaging issues and removes compilation warnings.
### What's Changed
- Zero warnings by [@wxmerkt](https://github.com/wxmerkt) ([#282](https://github.com/humanoid-path-planner/hpp-fcl/pull/282))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#283](https://github.com/humanoid-path-planner/hpp-fcl/pull/283))
- [pre-commit.ci] pre-commit autoupdate by [@pre-commit-ci](https://github.com/pre-commit-ci) ([#284](https://github.com/humanoid-path-planner/hpp-fcl/pull/284))
- Activate python3-pylatexenc dependency by [@wxmerkt](https://github.com/wxmerkt) ([#286](https://github.com/humanoid-path-planner/hpp-fcl/pull/286))
- Comment pylatexenc again since it's not available on the buildfarm by [@wxmerkt](https://github.com/wxmerkt) ([#287](https://github.com/humanoid-path-planner/hpp-fcl/pull/287))
### New Contributors
- [@pre-commit-ci](https://github.com/pre-commit-ci) made their first contribution ([#284](https://github.com/humanoid-path-planner/hpp-fcl/pull/284))
## [2.0.0] - 2022-04-06
This new release reintroduces the full support of Broad phase within hpp-fcl while also enforcing C++11 as minimal standard.
### What's Changed
- Add Ellipsoid by [@jcarpent](https://github.com/jcarpent) ([#259](https://github.com/humanoid-path-planner/hpp-fcl/pull/259))
- Removing comment about inflation. by [@lmontaut](https://github.com/lmontaut) ([#261](https://github.com/humanoid-path-planner/hpp-fcl/pull/261))
- Reintroduce broadphase by [@jcarpent](https://github.com/jcarpent) ([#260](https://github.com/humanoid-path-planner/hpp-fcl/pull/260))
- Simplify CollisionObject by removing cgeom_const by [@jcarpent](https://github.com/jcarpent) ([#263](https://github.com/humanoid-path-planner/hpp-fcl/pull/263))
- Address some warnings by [@wxmerkt](https://github.com/wxmerkt) ([#262](https://github.com/humanoid-path-planner/hpp-fcl/pull/262))
- Fix missing copy of aabb_local in CollisionGeometry by [@jcarpent](https://github.com/jcarpent) ([#264](https://github.com/humanoid-path-planner/hpp-fcl/pull/264))
- use std::shared_ptr, fix #218 by [@nim65s](https://github.com/nim65s) ([#266](https://github.com/humanoid-path-planner/hpp-fcl/pull/266))
- Fix broadphase warnings for clang (some conversion remain for g++) by [@wxmerkt](https://github.com/wxmerkt) ([#268](https://github.com/humanoid-path-planner/hpp-fcl/pull/268))
- [ComputeCollision] Return no collision if security_margin is set to -inf by [@florent-lamiraux](https://github.com/florent-lamiraux) ([#271](https://github.com/humanoid-path-planner/hpp-fcl/pull/271))
- tests: remove link to boost unit test framework by [@nim65s](https://github.com/nim65s) ([#270](https://github.com/humanoid-path-planner/hpp-fcl/pull/270))
- Fix computation of aabb_center by [@jcarpent](https://github.com/jcarpent) ([#273](https://github.com/humanoid-path-planner/hpp-fcl/pull/273))
- Add operator== and operator!= to CollisionGeometry by [@jcarpent](https://github.com/jcarpent) ([#274](https://github.com/humanoid-path-planner/hpp-fcl/pull/274))
- Merge pull request #276 from humanoid-path-planner/patch-release-1.8.1 by [@jcarpent](https://github.com/jcarpent) ([#277](https://github.com/humanoid-path-planner/hpp-fcl/pull/277))
- Fix some missing features in base classes by [@jcarpent](https://github.com/jcarpent) ([#275](https://github.com/humanoid-path-planner/hpp-fcl/pull/275))
- Add operator{==,!=} to CollisionObject by [@jcarpent](https://github.com/jcarpent) ([#278](https://github.com/humanoid-path-planner/hpp-fcl/pull/278))
- Configure and apply pre-commit by [@jcarpent](https://github.com/jcarpent) ([#280](https://github.com/humanoid-path-planner/hpp-fcl/pull/280))
- Fix DistanceCallBackBaseWrapper by [@jcarpent](https://github.com/jcarpent) ([#281](https://github.com/humanoid-path-planner/hpp-fcl/pull/281))
### New Contributors
- [@lmontaut](https://github.com/lmontaut) made their first contribution ([#261](https://github.com/humanoid-path-planner/hpp-fcl/pull/261))
## [1.8.1] - 2022-03-20
### What's Changed
- Preparing for ROS1 and ROS2 release by [@wxmerkt](https://github.com/wxmerkt) ([#255](https://github.com/humanoid-path-planner/hpp-fcl/pull/255))
- Patch release 1.8.1 by [@wxmerkt](https://github.com/wxmerkt) ([#276](https://github.com/humanoid-path-planner/hpp-fcl/pull/276))
## [1.8.0] - 2022-02-08
### What's Changed
- [CMake] Qhull is a private dependency by [@nim65s](https://github.com/nim65s) ([#247](https://github.com/humanoid-path-planner/hpp-fcl/pull/247))
- Remove useless warnings by [@jcarpent](https://github.com/jcarpent) ([#248](https://github.com/humanoid-path-planner/hpp-fcl/pull/248))
- fix submodule url by [@nim65s](https://github.com/nim65s) ([#246](https://github.com/humanoid-path-planner/hpp-fcl/pull/246))
- Remove warnings and add missing noalias by [@jcarpent](https://github.com/jcarpent) ([#249](https://github.com/humanoid-path-planner/hpp-fcl/pull/249))
- Function makeOctree returns a shared pointer by [@florent-lamiraux](https://github.com/florent-lamiraux) ([#254](https://github.com/humanoid-path-planner/hpp-fcl/pull/254))
- Add support of HeightField by [@jcarpent](https://github.com/jcarpent) ([#251](https://github.com/humanoid-path-planner/hpp-fcl/pull/251))
- [OcTree] Add method to save octree in obj file. by [@florent-lamiraux](https://github.com/florent-lamiraux) ([#256](https://github.com/humanoid-path-planner/hpp-fcl/pull/256))
- Fix C++98 compatibility by [@jcarpent](https://github.com/jcarpent) ([#258](https://github.com/humanoid-path-planner/hpp-fcl/pull/258))
## [1.7.8] - 2021-10-30
### What's Changed
- Fix conversion by [@jcarpent](https://github.com/jcarpent) ([#242](https://github.com/humanoid-path-planner/hpp-fcl/pull/242))
- Fix exposition of vertices by [@jcarpent](https://github.com/jcarpent) ([#243](https://github.com/humanoid-path-planner/hpp-fcl/pull/243))
- Enhance Convex exposition by [@jcarpent](https://github.com/jcarpent) ([#244](https://github.com/humanoid-path-planner/hpp-fcl/pull/244))
- Sync submodule cmake by [@jcarpent](https://github.com/jcarpent) ([#245](https://github.com/humanoid-path-planner/hpp-fcl/pull/245))
## [1.7.7] - 2021-09-13
This new release fixes several bugs within the framework.
## [1.7.6] - 2021-09-08
This new release improves the packaging of the project and integrates the Stub generation of Python bindings.
## [1.7.5] - 2021-07-30
This new release provides extended API exposition in Python, removes some code related to CDD while also trying to rely on the QHULL version present on the system.
## [1.7.4] - 2021-06-11
This release fixes several bugs:
- correct update of the distance lower bound
- fix memory footprint computation
while also removing the support of Travis CI.
## [1.7.3] - 2021-05-26
This new release provides:
- fixes of LINE and POINTS when loading meshes with assimp
- removing of various warnings
- computation of memory footprint for geometries
## [1.7.2] - 2021-04-19
This new release improves the loading of meshes using Assimp by automatically removing degenerated LINES and POINTS.
## [1.7.1] - 2021-04-02
This new release reduces the impact of timers on the computations.
This should be used with care and can be enabled by setting the correct flag to true in the QueryRequest.
## [1.7.0] - 2021-03-31
This new release provides:
- extended support for serialization
- timing of the collision/distance computations
- helpers to build octree
- various bug fixes and interface improvements
## [1.6.0] - 2020-10-06
This new release provides:
- functors for evaluating Collision and Distances (faster call)
- extended support of v142 compiler
- support of collision check between HalfSpace and Convex shapes
- improvement of GJK solver
- fixes on Python bindings
## [1.5.4] - 2020-09-22
In this new release, the support of collision checking between Convex objects and HalfSpace have been enhanced and some minor fixes have been provided.
## [1.5.3] - 2020-08-31
This new release provides better CMake packaging and improved GJK algorithms.
## [1.5.2] - 2020-08-15
This release improves the packaging of the project and provides fixes for the GJK solver.
## [1.5.1] - 2020-08-06
This new release fixes packaging issues with precedent release 1.5.0. It also provides additional fixes in main collision/distance algorithms.
## [1.4.6] - 2020-06-10
This new release enhances the packaging of the project and allows the compilation of FCL on Windows systems.
## [1.4.5] - 2020-06-03
Changes in v1.4.5:
- Fix Python 3 doc generation
- Fix packaging of the project
- Compilation on Windows.
- [CMake] Install missing header.
- Add collide and distance prototype that update the GJK guess.
- Add support function cached guess in queries and merge query attribute.
- Add function to generate the convex hull.
- Add hint to the support function + Fix usage of GJK guess.
- [Python] Add constructor for class Convex.
- [Python] Bind functions to create BVHModel.
## [1.4.4] - 2020-04-29
Changes in 1.4.4:
- add MeshLoader::loadOctree
- fix generation of XML documentation
- fix generation of Doxygen documentation
## [1.4.3] - 2020-04-08
This new release fixes some packagings issues for OS X systems.
## [1.4.2] - 2020-04-04
Changes in v1.4.2:
- don't require linking to eigenpy in .pc file.
## [1.4.1] - 2020-04-03
Changes in v1.4.1:
- Bug fix + prepare optimization of collision using GJK / EPA
- Add missing constructor for Transform3f
## [1.4.0] - 2020-04-03
Changes since v1.3.0:
- Improve code efficiency + use shared memory between Numpy and Eigen
- [Python] Doc and minor update + [C++] bugfix
- [Python] Fix bindings of CollisionResult.
- FIX: throw when no contact is available
- Minor fix and computational improvments
- [GJK/EPA] Fix bugs + Treat sphere as point and capsule as line segment.
- Fix boxSphereDistance
- Provide documentation for the Python bindings.
- Generate Python documentation from doxygen documentation.
- Fix issue when Python_EXECUTABLE is not defined
- update CMake packaging
## [1.3.0] - 2020-01-28
This new release comes with:
- the removing of the GJK solver
- the Python bindings build by default
- an improved documentation
- additional Python bindings
## [1.2.2] - 2019-12-17
This new Release improves the Python bindings and fixes an important bug when checking the collision between two Capsules.
Thanks to [@rstrudel](https://github.com/rstrudel) for this fix.
## [1.2.1] - 2019-12-09
This new release improves both the packaging of the project, which seems to be totally compatible with the new CMake linkage style. In addition, the bindings are now fully compatible with Pinocchio.
## [1.2.0] - 2019-11-22
Changes since v1.1.3:
- Add python bindings
- Update CMake
- Add version support
- New folder Internal for internal header
- Travis: update CI & change policy to only perform build in DEBUG mode on Bionic
- assimp: fix issue with recent version of assimp
- [bindings] [CMakeLists] Use .so for Mac and .pyd for Windows, fix #86
- Organize documentation
- [CMake] fix octomap detection
- [Minor] update CMake module + fix visibility of some methods.
- Enable Convex / Convex queries + Add Python bindings.
- Fix unit-tests and compilation
- [GJK] Fix GJK::encloseOrigin (fixes unit-tests)
- Improve GJK implementation + OBB overlap test + bug fixes
- Clean include BV/BVH/math/mesh_loader
## [1.1.3] - 2019-08-07
This new release enhances the compatibility of hpp-fcl with C++14 and more.
This feature is requested for integration in Anaconda.
## [1.1.2] - 2019-08-05
This new release provides a fix in the parallelization of the computations and improves the packaging of the whole project.
## [1.0.2] - 2019-04-24
Changes since v1.0.1:
- obb: fix compatibility with Eigen 3.0.5
- [CI] octomap for osx
## [1.0.1] - 2019-02-20
- Fix CI on OSX
- Declare CachedMeshLoader::Key::operator<
- minor details
## [0.7.0] - 2019-01-31
This release is mainly here to allow the packaging of HPP-RBPRM.
Another release will follow with more news.
## [0.6.0] - 2018-10-22
- Fix bug when OCTOMAP is not found
- move buildTrianglePlane and clipTriangle method from private to public
- Fix bug with "\" symbols
- [CMake] Add flags related to Octomap in pkg-config file and remove FCL_HAVE_EIGEN
## [0.5.1] - 2017-10-02
Now Eigen is at the heart of linear algebra computations.
## [0.5] - 2017-03-17
First release
[Unreleased]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v3.0.1...HEAD
[3.0.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v3.0.0...v3.0.1
[3.0.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.4.5...v3.0.0
[2.4.5]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.4.4...v2.4.5
[2.4.4]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.4.3...v2.4.4
[2.4.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.4.2...v2.4.3
[2.4.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.4.1...v2.4.2
[2.4.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.4.0...v2.4.1
[2.4.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.7...v2.4.0
[2.3.7]: https://github.com/humanoid-path-planner/hpp-fcl/compare/2.3.6...v2.3.7
[2.3.6]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.5...v2.3.6
[2.3.5]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.4...v2.3.5
[2.3.4]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.3...v2.3.4
[2.3.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.2...v2.3.3
[2.3.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.1...v2.3.2
[2.3.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.3.0...v2.3.1
[2.3.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.2.0...v2.3.0
[2.2.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.1.4...v2.2.0
[2.1.4]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.1.3...v2.1.4
[2.1.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.1.2...v2.1.3
[2.1.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.1.1...v2.1.2
[2.1.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.1.0...v2.1.1
[2.1.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.0.1...v2.1.0
[2.0.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v2.0.0...v2.0.1
[2.0.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.8.1...v2.0.0
[1.8.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.8.0...v1.8.1
[1.8.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.8...v1.8.0
[1.7.8]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.7...v1.7.8
[1.7.7]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.6...v1.7.7
[1.7.6]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.5...v1.7.6
[1.7.5]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.4...v1.7.5
[1.7.4]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.3...v1.7.4
[1.7.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.2...v1.7.3
[1.7.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.1...v1.7.2
[1.7.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.7.0...v1.7.1
[1.7.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.6.0...v1.7.0
[1.6.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.5.4...v1.6.0
[1.5.4]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.5.3...v1.5.4
[1.5.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.5.2...v1.5.3
[1.5.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.5.1...v1.5.2
[1.5.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.6...v1.5.1
[1.4.6]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.5...v1.4.6
[1.4.5]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.4...v1.4.5
[1.4.4]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.3...v1.4.4
[1.4.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.2...v1.4.3
[1.4.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.1...v1.4.2
[1.4.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.4.0...v1.4.1
[1.4.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.3.0...v1.4.0
[1.3.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.2.2...v1.3.0
[1.2.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.2.1...v1.2.2
[1.2.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.1.3...v1.2.0
[1.1.3]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.1.2...v1.1.3
[1.1.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.0.2...v1.1.2
[1.0.2]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v1.0.1...v1.0.2
[1.0.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v0.7.0...v1.0.1
[0.7.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v0.5.1...v0.6.0
[0.5.1]: https://github.com/humanoid-path-planner/hpp-fcl/compare/v0.5...v0.5.1
[0.5]: https://github.com/humanoid-path-planner/hpp-fcl/releases/tag/v0.5
@misc{coalweb,
author = {Jia Pan and Sachin Chitta and Dinesh Manocha and Florent Lamiraux and Joseph Mirabel and Justin Carpentier and Louis Montaut and others},
title = {Coal: an extension of the Flexible Collision Library},
howpublished = {https://github.com/coal-library/coal},
year = {2015--2024}
}
cff-version: 1.2.0
message: "Thanks for using Coal. Please use the following metadata to cite us in your documents."
authors:
- family-names: Pan
given-names: Jia
- family-names: Chitta
given-names: Sachin
- family-names: Pan
given-names: Jia
- family-names: Manocha
given-names: Dinesh
- family-names: Mirabel
given-names: Joseph
- family-names: Carpentier
given-names: Justin
orcid: "https://orcid.org/0000-0001-6585-2894"
- family-names: Montaut
given-names: Louis
title: "Coal - An extension of the Flexible Collision Library"
abstract: "An extension of the Flexible Collision Library"
version: 3.0.1
date-released: "2025-02-12"
license: BSD-2-Clause
url: "https://github.com/coal-library/coal"
cmake_minimum_required(VERSION 2.8)
project(fcl CXX C)
#
# Software License Agreement (BSD License)
#
# Copyright (c) 2014-2025 CNRS-LAAS, INRIA
# Author: Florent Lamiraux, Joseph Mirabel
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of CNRS-LAAS. nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# set the default build type
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
cmake_minimum_required(VERSION 3.10)
set(CXX_DISABLE_WERROR TRUE)
set(PROJECT_NAME coal)
set(PROJECT_ORG "coal-library")
set(PROJECT_DESCRIPTION
"Coal, The Collision Detection Library. Previously known as HPP-FCL, fork of FCL -- The Flexible Collision Library"
)
set(PROJECT_URL "https://github.com/coal-library/coal")
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
SET(PROJECT_COMPATIBILITY_VERSION AnyNewerVersion)
# To enable jrl-cmakemodules compatibility with workspace we must define the two
# following lines
set(PROJECT_AUTO_RUN_FINALIZE FALSE)
set(PROJECT_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
# Set build type variable
set(FCL_BUILD_TYPE_RELEASE FALSE)
set(FCL_BUILD_TYPE_DEBUG FALSE)
SET(PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE)
SET(DOXYGEN_USE_TEMPLATE_CSS TRUE)
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPERCASE)
if("${CMAKE_BUILD_TYPE_UPPERCASE}" STREQUAL "RELEASE")
set(FCL_BUILD_TYPE_RELEASE TRUE)
elseif("${CMAKE_BUILD_TYPE_UPPERCASE}" STREQUAL "DEBUG")
set(FCL_BUILD_TYPE_DEBUG TRUE)
# ----------------------------------------------------
# --- OPTIONS ---------------------------------------
# Need to be set before including base.cmake
# ----------------------------------------------------
option(INSTALL_DOCUMENTATION "Generate and install the documentation" OFF)
option(COAL_TURN_ASSERT_INTO_EXCEPTION "Turn some critical Coal asserts to exception." FALSE)
option(COAL_ENABLE_LOGGING "Activate logging for warnings or error messages. Turned on by default in Debug." FALSE)
option(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL "Make Coal retro-compatible with HPP-FCL." FALSE)
# Check if the submodule cmake have been initialized
set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")
if(EXISTS "${JRL_CMAKE_MODULES}/base.cmake")
message(STATUS "JRL cmakemodules found in 'cmake/' git submodule")
else()
message(STATUS "CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} unknown. Valid options are: Debug Release")
find_package(jrl-cmakemodules QUIET CONFIG)
if(jrl-cmakemodules_FOUND)
get_property(
JRL_CMAKE_MODULES
TARGET jrl-cmakemodules::jrl-cmakemodules
PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}")
elseif(${CMAKE_VERSION} VERSION_LESS "3.14.0")
message(
FATAL_ERROR
"\nCan't find jrl-cmakemodules. Please either:\n"
" - use git submodule: 'git submodule update --init'\n"
" - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n"
" - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n"
)
else()
message(STATUS "JRL cmakemodules not found. Let's fetch it.")
include(FetchContent)
FetchContent_Declare(
"jrl-cmakemodules"
GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git")
FetchContent_MakeAvailable("jrl-cmakemodules")
FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
endif()
endif()
# This shouldn't be necessary, but there has been trouble
# with MSVC being set off, but MSVCXX ON.
if(MSVC OR MSVC90 OR MSVC10)
set(MSVC ON)
endif (MSVC OR MSVC90 OR MSVC10)
# Use BoostConfig module distributed by boost library instead of using FindBoost module distributed
# by CMake.
# There is one unresolved issue with FindBoost and clang-cl so we deactivate it in this case.
IF(NOT WIN32 OR NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
IF(POLICY CMP0167)
CMAKE_POLICY(SET CMP0167 NEW)
# Set a default value to this policy to avoid issue with find_dependency
# macro redefinition with different policy in some modules.
SET(CMAKE_POLICY_DEFAULT_CMP0167 NEW)
ENDIF()
ENDIF()
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
include(CompilerSettings)
include(FCLVersion)
include("${JRL_CMAKE_MODULES}/base.cmake")
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
if(MSVC OR IS_ICPC)
option(FCL_STATIC_LIBRARY "Whether the FCL library should be static rather than shared" ON)
else()
option(FCL_STATIC_LIBRARY "Whether the FCL library should be static rather than shared" OFF)
endif()
include("${JRL_CMAKE_MODULES}/boost.cmake")
include("${JRL_CMAKE_MODULES}/python.cmake")
include("${JRL_CMAKE_MODULES}/apple.cmake")
include("${JRL_CMAKE_MODULES}/ide.cmake")
include(CMakeDependentOption)
# Whether to enable SSE
option(FCL_USE_SSE "Whether FCL should SSE instructions" OFF)
set(FCL_HAVE_SSE 0)
if(FCL_USE_SSE)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(FCL_HAVE_SSE 0) #always disable, for now
add_definitions(-march=native)
endif()
# TODO: do something similar for other compilers
endif()
SET(CMAKE_MODULE_PATH
${JRL_CMAKE_MODULES}/find-external/assimp/
${CMAKE_MODULE_PATH})
# Find Octomap (optional)
find_package(PkgConfig QUIET)
set(FCL_HAVE_OCTOMAP 0)
if(PKG_CONFIG_FOUND)
pkg_check_modules(OCTOMAP QUIET octomap)
endif()
if(NOT OCTOMAP_FOUND)
# if pkfconfig is not installed, then fall back on more fragile detection
# of octomap
find_path(OCTOMAP_INCLUDE_DIRS octomap.h
PATH_SUFFIXES octomap)
find_path(OCTOMAP_LIBRARY_DIRS
${CMAKE_SHARED_LIBRARY_PREFIX}octomap${CMAKE_SHARED_LIBRARY_SUFFIX})
if(OCTOMAP_INCLUDE_DIRS AND OCTOMAP_LIBRARY_DIRS)
set(OCTOMAP_LIBRARIES "octomap;octomath")
endif()
endif()
if (OCTOMAP_INCLUDE_DIRS AND OCTOMAP_LIBRARY_DIRS)
include_directories(${OCTOMAP_INCLUDE_DIRS})
link_directories(${OCTOMAP_LIBRARY_DIRS})
set(FCL_HAVE_OCTOMAP 1)
message(STATUS "FCL uses Octomap")
else()
message(STATUS "FCL does not use Octomap")
endif()
FUNCTION(set_standard_output_directory target)
SET_TARGET_PROPERTIES(
${target}
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin
LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib
ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib
)
ENDFUNCTION()
# Find FLANN (optional)
find_package(flann QUIET)
if (FLANN_FOUND)
set(FCL_HAVE_FLANN 1)
include_directories(${FLANN_INCLUDE_DIRS})
message(STATUS "FCL uses Flann")
else()
message(STATUS "FCL does not use Flann")
endif()
set_default_cmake_build_type("RelWithDebInfo")
# If needed, fix CMake policy for APPLE systems
APPLY_DEFAULT_APPLE_CONFIGURATION()
# find_package(tinyxml QUIET)
# if (TINYXML_FOUND)
# set(FCL_HAVE_TINYXML 1)
# include_directories(${TINYXML_INCLUDE_DIRS})
# link_directories(${TINYXML_LIBRARY_DIRS})
# message(STATUS "FCL uses tinyxml")
# else()
# message(STATUS "FCL does not use tinyxml")
# endif()
OPTION(BUILD_PYTHON_INTERFACE "Build the python bindings" ON)
CMAKE_DEPENDENT_OPTION(GENERATE_PYTHON_STUBS "Generate the Python stubs associated to the Python library" OFF BUILD_PYTHON_INTERFACE OFF)
ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED PKG_CONFIG_REQUIRES "eigen3 >= 3.0.0")
find_package(Boost COMPONENTS thread date_time filesystem system unit_test_framework REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
if(BUILD_PYTHON_INTERFACE)
SET(PYTHON_COMPONENTS Interpreter Development NumPy)
FINDPYTHON(REQUIRED)
ADD_PROJECT_PRIVATE_DEPENDENCY(eigenpy 2.9.2 REQUIRED)
endif()
if(MSVC)
add_definitions(-DBOOST_ALL_NO_LIB)
# Required dependencies
SET_BOOST_DEFAULT_OPTIONS()
EXPORT_BOOST_DEFAULT_OPTIONS()
ADD_PROJECT_DEPENDENCY(Boost REQUIRED chrono thread date_time serialization filesystem)
if (COAL_ENABLE_LOGGING)
ADD_PROJECT_DEPENDENCY(Boost REQUIRED log)
endif()
add_definitions(-DBOOST_TEST_DYN_LINK)
if(BUILD_PYTHON_INTERFACE)
find_package(Boost REQUIRED COMPONENTS system)
endif(BUILD_PYTHON_INTERFACE)
# FCL's own include dir should be at the front of the include path
include_directories(BEFORE "include")
include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")
if(Boost_VERSION_STRING VERSION_LESS 1.81)
# Default C++ version should be C++11
CHECK_MINIMAL_CXX_STANDARD(11 ENFORCE)
else()
# Boost.Math will be C++14 starting in July 2023 (Boost 1.82 release)
CHECK_MINIMAL_CXX_STANDARD(14 ENFORCE)
endif()
if(PKG_CONFIG_FOUND)
pkg_check_modules(CCD ccd)
# check to see if the pkg is installed under the libccd name
if(NOT CCD_FOUND)
pkg_check_modules(CCD libccd)
endif()
# Optional dependencies
ADD_PROJECT_DEPENDENCY(octomap PKG_CONFIG_REQUIRES "octomap >= 1.6")
if(octomap_FOUND)
SET(COAL_HAS_OCTOMAP TRUE)
string(REPLACE "." ";" VERSION_LIST ${octomap_VERSION})
list(GET VERSION_LIST 0 OCTOMAP_MAJOR_VERSION)
list(GET VERSION_LIST 1 OCTOMAP_MINOR_VERSION)
list(GET VERSION_LIST 2 OCTOMAP_PATCH_VERSION)
message(STATUS "COAL uses Octomap")
else()
SET(COAL_HAS_OCTOMAP FALSE)
message(STATUS "COAL does not use Octomap")
endif()
if(NOT CCD_FOUND)
# if pkfconfig is not installed, then fall back on more fragile detection
# of ccd
find_path(CCD_INCLUDE_DIRS ccd.h
PATH_SUFFIXES ccd)
find_path(CCD_LIBRARY_DIRS
${CMAKE_SHARED_LIBRARY_PREFIX}ccd${CMAKE_SHARED_LIBRARY_SUFFIX})
if(CCD_INCLUDE_DIRS AND CCD_LIBRARY_DIRS)
set(CCD_LIBRARIES "ccd")
else()
message(FATAL_ERROR "Libccd is required by FCL")
option(COAL_HAS_QHULL "use qhull library to compute convex hulls." FALSE)
if(COAL_HAS_QHULL)
find_package(Qhull COMPONENTS qhull_r qhullcpp)
if(Qhull_FOUND)
set(COAL_USE_SYSTEM_QHULL TRUE)
message(STATUS "COAL uses system Qhull")
else()
message(STATUS "Qhullcpp not found: it will be build from sources, if Qhull_r is found")
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third-parties)
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
${PROJECT_SOURCE_DIR}/third-parties/qhull/src/libqhullcpp
${PROJECT_BINARY_DIR}/third-parties/libqhullcpp
)
set(Qhullcpp_PREFIX ${PROJECT_BINARY_DIR}/third-parties)
find_path(Qhull_r_INCLUDE_DIR
NAMES libqhull_r/libqhull_r.h
PATHS ${Qhull_PREFIX}
)
find_library(Qhull_r_LIBRARY
NAMES libqhull_r.so
PATHS ${Qhull_PREFIX}
)
if(NOT Qhull_r_LIBRARY)
message(FATAL_ERROR "Qhull_r not found, please install it or turn COAL_HAS_QHULL OFF")
endif()
endif()
endif()
include_directories(${CCD_INCLUDE_DIRS})
link_directories(${CCD_LIBRARY_DIRS})
add_subdirectory(include/fcl)
add_subdirectory(src)
FIND_PACKAGE(assimp REQUIRED)
SET(${PROJECT_NAME}_HEADERS
include/coal/collision_data.h
include/coal/BV/kIOS.h
include/coal/BV/BV.h
include/coal/BV/RSS.h
include/coal/BV/OBBRSS.h
include/coal/BV/BV_node.h
include/coal/BV/AABB.h
include/coal/BV/OBB.h
include/coal/BV/kDOP.h
include/coal/broadphase/broadphase.h
include/coal/broadphase/broadphase_SSaP.h
include/coal/broadphase/broadphase_SaP.h
include/coal/broadphase/broadphase_bruteforce.h
include/coal/broadphase/broadphase_collision_manager.h
include/coal/broadphase/broadphase_continuous_collision_manager-inl.h
include/coal/broadphase/broadphase_continuous_collision_manager.h
include/coal/broadphase/broadphase_dynamic_AABB_tree-inl.h
include/coal/broadphase/broadphase_dynamic_AABB_tree.h
include/coal/broadphase/broadphase_dynamic_AABB_tree_array-inl.h
include/coal/broadphase/broadphase_dynamic_AABB_tree_array.h
include/coal/broadphase/broadphase_interval_tree.h
include/coal/broadphase/broadphase_spatialhash-inl.h
include/coal/broadphase/broadphase_spatialhash.h
include/coal/broadphase/broadphase_callbacks.h
include/coal/broadphase/default_broadphase_callbacks.h
include/coal/broadphase/detail/hierarchy_tree-inl.h
include/coal/broadphase/detail/hierarchy_tree.h
include/coal/broadphase/detail/hierarchy_tree_array-inl.h
include/coal/broadphase/detail/hierarchy_tree_array.h
include/coal/broadphase/detail/interval_tree.h
include/coal/broadphase/detail/interval_tree_node.h
include/coal/broadphase/detail/morton-inl.h
include/coal/broadphase/detail/morton.h
include/coal/broadphase/detail/node_base-inl.h
include/coal/broadphase/detail/node_base.h
include/coal/broadphase/detail/node_base_array-inl.h
include/coal/broadphase/detail/node_base_array.h
include/coal/broadphase/detail/simple_hash_table-inl.h
include/coal/broadphase/detail/simple_hash_table.h
include/coal/broadphase/detail/simple_interval-inl.h
include/coal/broadphase/detail/simple_interval.h
include/coal/broadphase/detail/sparse_hash_table-inl.h
include/coal/broadphase/detail/sparse_hash_table.h
include/coal/broadphase/detail/spatial_hash-inl.h
include/coal/broadphase/detail/spatial_hash.h
include/coal/narrowphase/narrowphase.h
include/coal/narrowphase/gjk.h
include/coal/narrowphase/narrowphase_defaults.h
include/coal/narrowphase/minkowski_difference.h
include/coal/narrowphase/support_functions.h
include/coal/shape/convex.h
include/coal/shape/details/convex.hxx
include/coal/shape/geometric_shape_to_BVH_model.h
include/coal/shape/geometric_shapes.h
include/coal/shape/geometric_shapes_traits.h
include/coal/shape/geometric_shapes_utility.h
include/coal/distance_func_matrix.h
include/coal/collision.h
include/coal/collision_func_matrix.h
include/coal/contact_patch.h
include/coal/contact_patch_func_matrix.h
include/coal/contact_patch/contact_patch_solver.h
include/coal/contact_patch/contact_patch_solver.hxx
include/coal/distance.h
include/coal/math/matrix_3f.h
include/coal/math/vec_3f.h
include/coal/math/types.h
include/coal/math/transform.h
include/coal/data_types.h
include/coal/BVH/BVH_internal.h
include/coal/BVH/BVH_model.h
include/coal/BVH/BVH_front.h
include/coal/BVH/BVH_utility.h
include/coal/collision_object.h
include/coal/collision_utility.h
include/coal/hfield.h
include/coal/fwd.hh
include/coal/logging.h
include/coal/mesh_loader/assimp.h
include/coal/mesh_loader/loader.h
include/coal/internal/BV_fitter.h
include/coal/internal/BV_splitter.h
include/coal/internal/shape_shape_func.h
include/coal/internal/shape_shape_contact_patch_func.h
include/coal/internal/intersect.h
include/coal/internal/tools.h
include/coal/internal/traversal_node_base.h
include/coal/internal/traversal_node_bvh_shape.h
include/coal/internal/traversal_node_bvhs.h
include/coal/internal/traversal_node_hfield_shape.h
include/coal/internal/traversal_node_setup.h
include/coal/internal/traversal_node_shapes.h
include/coal/internal/traversal_recurse.h
include/coal/internal/traversal.h
include/coal/serialization/fwd.h
include/coal/serialization/serializer.h
include/coal/serialization/archive.h
include/coal/serialization/transform.h
include/coal/serialization/AABB.h
include/coal/serialization/BV_node.h
include/coal/serialization/BV_splitter.h
include/coal/serialization/BVH_model.h
include/coal/serialization/collision_data.h
include/coal/serialization/contact_patch.h
include/coal/serialization/collision_object.h
include/coal/serialization/convex.h
include/coal/serialization/eigen.h
include/coal/serialization/geometric_shapes.h
include/coal/serialization/memory.h
include/coal/serialization/OBB.h
include/coal/serialization/RSS.h
include/coal/serialization/OBBRSS.h
include/coal/serialization/kIOS.h
include/coal/serialization/kDOP.h
include/coal/serialization/hfield.h
include/coal/serialization/quadrilateral.h
include/coal/serialization/triangle.h
include/coal/timings.h
)
set(pkg_conf_file_in "${CMAKE_CURRENT_SOURCE_DIR}/fcl.pc.in")
set(pkg_conf_file_out "${CMAKE_CURRENT_BINARY_DIR}/fcl.pc")
configure_file("${pkg_conf_file_in}" "${pkg_conf_file_out}" @ONLY)
if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
SET(HPP_FCL_BACKWARD_COMPATIBILITY_HEADERS
include/hpp/fcl/broadphase/broadphase_bruteforce.h
include/hpp/fcl/broadphase/broadphase_callbacks.h
include/hpp/fcl/broadphase/broadphase_collision_manager.h
include/hpp/fcl/broadphase/broadphase_continuous_collision_manager.h
include/hpp/fcl/broadphase/broadphase_continuous_collision_manager-inl.h
include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h
include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h
include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree.h
include/hpp/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h
include/hpp/fcl/broadphase/broadphase.h
include/hpp/fcl/broadphase/broadphase_interval_tree.h
include/hpp/fcl/broadphase/broadphase_SaP.h
include/hpp/fcl/broadphase/broadphase_spatialhash.h
include/hpp/fcl/broadphase/broadphase_spatialhash-inl.h
include/hpp/fcl/broadphase/broadphase_SSaP.h
include/hpp/fcl/broadphase/default_broadphase_callbacks.h
include/hpp/fcl/broadphase/detail/hierarchy_tree_array.h
include/hpp/fcl/broadphase/detail/hierarchy_tree_array-inl.h
include/hpp/fcl/broadphase/detail/hierarchy_tree.h
include/hpp/fcl/broadphase/detail/hierarchy_tree-inl.h
include/hpp/fcl/broadphase/detail/interval_tree.h
include/hpp/fcl/broadphase/detail/interval_tree_node.h
include/hpp/fcl/broadphase/detail/morton.h
include/hpp/fcl/broadphase/detail/morton-inl.h
include/hpp/fcl/broadphase/detail/node_base_array.h
include/hpp/fcl/broadphase/detail/node_base_array-inl.h
include/hpp/fcl/broadphase/detail/node_base.h
include/hpp/fcl/broadphase/detail/node_base-inl.h
include/hpp/fcl/broadphase/detail/simple_hash_table.h
include/hpp/fcl/broadphase/detail/simple_hash_table-inl.h
include/hpp/fcl/broadphase/detail/simple_interval.h
include/hpp/fcl/broadphase/detail/simple_interval-inl.h
include/hpp/fcl/broadphase/detail/sparse_hash_table.h
include/hpp/fcl/broadphase/detail/sparse_hash_table-inl.h
include/hpp/fcl/broadphase/detail/spatial_hash.h
include/hpp/fcl/broadphase/detail/spatial_hash-inl.h
include/hpp/fcl/BV/AABB.h
include/hpp/fcl/BV/BV.h
include/hpp/fcl/BV/BV_node.h
include/hpp/fcl/BVH/BVH_front.h
include/hpp/fcl/BVH/BVH_internal.h
include/hpp/fcl/BVH/BVH_model.h
include/hpp/fcl/BVH/BVH_utility.h
include/hpp/fcl/BV/kDOP.h
include/hpp/fcl/BV/kIOS.h
include/hpp/fcl/BV/OBB.h
include/hpp/fcl/BV/OBBRSS.h
include/hpp/fcl/BV/RSS.h
include/hpp/fcl/coal.hpp
include/hpp/fcl/collision_data.h
include/hpp/fcl/collision_func_matrix.h
include/hpp/fcl/collision.h
include/hpp/fcl/collision_object.h
include/hpp/fcl/collision_utility.h
include/hpp/fcl/config.hh
include/hpp/fcl/contact_patch/contact_patch_solver.h
include/hpp/fcl/contact_patch/contact_patch_solver.hxx
include/hpp/fcl/contact_patch_func_matrix.h
include/hpp/fcl/contact_patch.h
include/hpp/fcl/data_types.h
include/hpp/fcl/deprecated.hh
include/hpp/fcl/distance_func_matrix.h
include/hpp/fcl/distance.h
include/hpp/fcl/fwd.hh
include/hpp/fcl/hfield.h
include/hpp/fcl/internal/BV_fitter.h
include/hpp/fcl/internal/BV_splitter.h
include/hpp/fcl/internal/intersect.h
include/hpp/fcl/internal/shape_shape_contact_patch_func.h
include/hpp/fcl/internal/shape_shape_func.h
include/hpp/fcl/internal/tools.h
include/hpp/fcl/internal/traversal.h
include/hpp/fcl/internal/traversal_node_base.h
include/hpp/fcl/internal/traversal_node_bvhs.h
include/hpp/fcl/internal/traversal_node_bvh_shape.h
include/hpp/fcl/internal/traversal_node_hfield_shape.h
include/hpp/fcl/internal/traversal_node_setup.h
include/hpp/fcl/internal/traversal_node_shapes.h
include/hpp/fcl/internal/traversal_recurse.h
include/hpp/fcl/internal/traversal_node_octree.h
include/hpp/fcl/logging.h
include/hpp/fcl/math/matrix_3f.h
include/hpp/fcl/math/transform.h
include/hpp/fcl/math/types.h
include/hpp/fcl/math/vec_3f.h
include/hpp/fcl/mesh_loader/assimp.h
include/hpp/fcl/mesh_loader/loader.h
include/hpp/fcl/narrowphase/gjk.h
include/hpp/fcl/narrowphase/minkowski_difference.h
include/hpp/fcl/narrowphase/narrowphase_defaults.h
include/hpp/fcl/narrowphase/narrowphase.h
include/hpp/fcl/narrowphase/support_functions.h
include/hpp/fcl/octree.h
include/hpp/fcl/serialization/AABB.h
include/hpp/fcl/serialization/archive.h
include/hpp/fcl/serialization/BVH_model.h
include/hpp/fcl/serialization/BV_node.h
include/hpp/fcl/serialization/BV_splitter.h
include/hpp/fcl/serialization/collision_data.h
include/hpp/fcl/serialization/collision_object.h
include/hpp/fcl/serialization/contact_patch.h
include/hpp/fcl/serialization/convex.h
include/hpp/fcl/serialization/eigen.h
include/hpp/fcl/serialization/fwd.h
include/hpp/fcl/serialization/geometric_shapes.h
include/hpp/fcl/serialization/hfield.h
include/hpp/fcl/serialization/kDOP.h
include/hpp/fcl/serialization/kIOS.h
include/hpp/fcl/serialization/memory.h
include/hpp/fcl/serialization/OBB.h
include/hpp/fcl/serialization/OBBRSS.h
include/hpp/fcl/serialization/octree.h
include/hpp/fcl/serialization/quadrilateral.h
include/hpp/fcl/serialization/RSS.h
include/hpp/fcl/serialization/serializer.h
include/hpp/fcl/serialization/transform.h
include/hpp/fcl/serialization/triangle.h
include/hpp/fcl/shape/convex.h
include/hpp/fcl/shape/details/convex.hxx
include/hpp/fcl/shape/geometric_shapes.h
include/hpp/fcl/shape/geometric_shapes_traits.h
include/hpp/fcl/shape/geometric_shapes_utility.h
include/hpp/fcl/shape/geometric_shape_to_BVH_model.h
include/hpp/fcl/timings.h
include/hpp/fcl/warning.hh
)
LIST(APPEND ${PROJECT_NAME}_HEADERS ${HPP_FCL_BACKWARD_COMPATIBILITY_HEADERS})
HEADER_INSTALL(COMPONENT hpp-fcl-compatibility ${HPP_FCL_BACKWARD_COMPATIBILITY_HEADERS})
endif()
install(DIRECTORY include/ DESTINATION include
FILES_MATCHING PATTERN "*.h" PATTERN "*.hxx"
PATTERN ".DS_Store" EXCLUDE
)
IF(COAL_HAS_OCTOMAP)
LIST(APPEND ${PROJECT_NAME}_HEADERS
include/coal/octree.h
include/coal/serialization/octree.h
include/coal/internal/traversal_node_octree.h
)
ENDIF(COAL_HAS_OCTOMAP)
install(FILES "${pkg_conf_file_out}" DESTINATION lib/pkgconfig/ COMPONENT pkgconfig)
add_subdirectory(doc)
add_subdirectory(src)
if (BUILD_PYTHON_INTERFACE)
add_subdirectory(python)
endif ()
if(BUILD_TESTING)
add_subdirectory(test)
endif(BUILD_TESTING)
pkg_config_append_libs("coal")
IF(COAL_HAS_OCTOMAP)
# FCL_HAVE_OCTOMAP kept for backward compatibility reasons.
PKG_CONFIG_APPEND_CFLAGS(
"-DCOAL_HAS_OCTOMAP -DCOAL_HAVE_OCTOMAP -DFCL_HAVE_OCTOMAP -DOCTOMAP_MAJOR_VERSION=${OCTOMAP_MAJOR_VERSION} -DOCTOMAP_MINOR_VERSION=${OCTOMAP_MINOR_VERSION} -DOCTOMAP_PATCH_VERSION=${OCTOMAP_PATCH_VERSION}")
ENDIF(COAL_HAS_OCTOMAP)
# Install catkin package.xml
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
if(COAL_BACKWARD_COMPATIBILITY_WITH_HPP_FCL)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(hpp-fclConfigVersion.cmake
VERSION 3.0.0
COMPATIBILITY AnyNewerVersion)
install(FILES hpp-fclConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/hpp-fclConfigVersion.cmake
DESTINATION lib/cmake/hpp-fcl
COMPONENT hpp-fcl-compatibility)
include("${JRL_CMAKE_MODULES}/install-helpers.cmake")
add_install_target(NAME hpp-fcl-compatibility COMPONENT hpp-fcl-compatibility)
endif()
enable_testing()
add_subdirectory(test)
setup_project_finalize()
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-W -Wall -g -Wextra -Wno-missing-field-initializers -Wno-unused-parameter)
endif(CMAKE_COMPILER_IS_GNUCXX)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_definitions(-W -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-delete-non-virtual-dtor -Wno-overloaded-virtual -Wno-unknown-pragmas)
endif()
if(MSVC OR MSVC90 OR MSVC10)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /MP /W1")
endif(MSVC OR MSVC90 OR MSVC10)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
set(IS_ICPC 1)
else()
set(IS_ICPC 0)
endif()
if(IS_ICPC)
add_definitions(-wd191 -wd411 -wd654 -wd1125 -wd1292 -wd1565 -wd1628 -wd2196)
set(CMAKE_AR "xiar" CACHE STRING "Intel archiver" FORCE)
set(CMAKE_CXX_FLAGS "-pthread" CACHE STRING "Default compile flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG"
CACHE STRING "Flags used by the C++ compiler during release builds." FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING
"Flags used by the C++ compiler during debug builds." FORCE)
set(CMAKE_LINKER "xild" CACHE STRING "Intel linker" FORCE)
endif(IS_ICPC)
if(CMAKE_CXX_COMPILER_ID STREQUAL "XL")
set(IS_XLC 1)
else()
set(IS_XLC 0)
endif()
if(IS_XLC)
add_definitions(-qpic -q64 -qmaxmem=-1)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -q64")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -q64")
endif(IS_XLC)
if((CMAKE_COMPILER_IS_GNUCXX OR IS_ICPC) AND NOT MINGW)
add_definitions(-fPIC)
endif((CMAKE_COMPILER_IS_GNUCXX OR IS_ICPC) AND NOT MINGW)
# Set rpath http://www.paraview.org/Wiki/CMake_RPATH_handling
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# no prefix needed for python modules
set(CMAKE_SHARED_MODULE_PREFIX "")