Skip to content

Fork of the sch-core repo where the code was partially reworked to use smart pointers, reducing the risk of memory management issues.

License

Notifications You must be signed in to change notification settings

DanSJohnson/sch-core-smart-pointers

 
 

Repository files navigation

sch-core

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

NOTE: This fork of the sch-core repo is a WIP personal project. It should not be used by third parties, I strongly advise anyone reading this to use the official sch-core distribution. My changes to this code have not undergone rigourous review and testing.

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:

  • The GPL-v2 version is the most complete, it includes inter-penetration depth computation based on the SOLID code;
  • The BSD-2-Clause version does not include this algorithm;

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

  • SCH_BUILD_BSD: If ON, build the library without its GPL components (Default: OFF)

Indentation

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

About

Fork of the sch-core repo where the code was partially reworked to use smart pointers, reducing the risk of memory management issues.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 55.5%
  • CMake 43.7%
  • Other 0.8%