Home

Awesome

sch-core

License/License: GPL v2 Hosted By: Cloudsmith CI Documentation

Documentation

Efficient implementation of GJK algorithm for proximity queries (collision detection, distance computations, penetration depths and witness points) between convex shapes.

The library can be extended to any convex shape for which we can compute the support function, but it already supports polyhedrons, boxes, spheres and ellipsoids, and it is particularly optimized for strictly convex hulls (SCH/STP-BV).

The implementation is detailed in:

@INPROCEEDINGS{benallegue:icra:2009,
  author={Benallegue, M. and Escande, A. and Miossec, S. and Kheddar, A.},
  booktitle={Robotics and Automation, 2009. ICRA '09. IEEE International Conference on},
  title={Fast C1 proximity queries using support mapping of sphere-torus-patches bounding volumes},
  year={2009},
  month={May},
  pages={483-488},
  keywords={Application software;Assembly;Clouds;Computer graphics;Robotics and automation;Robots;Shape;Target tracking;Testing;Trajectory},
  doi={10.1109/ROBOT.2009.5152722},
  ISSN={1050-4729},
}

And a description of strictly convext hulls is detailed in:

@article{escande:itro:2014,
  author = {Adrien Escande and Sylvain Miossec and Mehdi Benallegue and Abderrahmane Kheddar},
  title = {A Strictly Convex Hull for Computing Proximity Distances with Continuous Gradients},
  journal={Robotics, IEEE Transactions on},
  year = {2014}
  month={June},
  volume={30},
  number={3},
  pages={666-678},
  keywords={Collision avoidance;Convergence;Optimization;Planning;Robots;Shape;Vectors;Bounding volume;continuous gradients of proximity distances;smooth and nonsmooth optimization;sphere-torus patches;strictly convex hulls},
  doi={10.1109/TRO.2013.2296332},
  ISSN={1552-3098},
  url = {https://sites.google.com/site/adrienescandehomepage/publications/2014_ITRO_Escande.pdf}
}

License

This library is provided under two licenses:

Note: the two versions have the same API and ABI.

Installation

Ubuntu LTS (16.04, 18.04, 20.04)

Note: the packaged version is the BSD-2-Clause library, if you require inter-penetration depth computation, you should build the library yourself.

You must first setup our package mirror:

curl -1sLf \
  'https://dl.cloudsmith.io/public/mc-rtc/stable/setup.deb.sh' \
  | sudo -E bash

You can also choose the head mirror which will have the latest version of this package:

curl -1sLf \
  'https://dl.cloudsmith.io/public/mc-rtc/stable/setup.deb.sh' \
  | sudo -E bash

You can then install the package:

sudo apt install libsch-core-dev

Conan

Install the latest version using conan

conan remote add multi-contact https://api.bintray.com/conan/gergondet/multi-contact
# Install the latest release
conan install sch-core/latest@multi-contact/stable
# Or install the latest development version
# conan install sch-core/latest@multi-contact/dev

Manually build from source

Building using cmake:

git clone https://github.com/jrl-umi3218/sch-core.git --recursive
mkdir -p sch-core/build
cd sch-core/build
cmake .. # you probably want to define `CMAKE_INSTALL_PREFIX`
make
sudo make install

CMake options

Indentation

astyle --style=allman --lineend=linux --indent=spaces=2 --indent-namespaces