```
FCL是一个在由三角形组成的几何模型上执行三种近似查询的库。
- 碰撞检测:检测两个模型是否重叠,以及是否可以选择重叠的所有三角形。
- 距离计算:计算一对模型之间的最小距离,换句话说,距离最近的点之间的距离。
- 公差检验:确定两个模型是否比公差距离更近或者更远。
- 连续碰撞检测:检测两种运动模型在运动过程中是否重叠,以及接触时间的选择。
- 联系信息:对于碰撞检测和连续碰撞检测,可以选择将联系信息( 包括接触法线和接触点) 设置为。
- FCL具有以下功能:C++ 接口,可以编译为linux或者 WIN32 ( 既可以生成 makefile,也可以使用cmake生成Microsoft可视项目);
- 输入模型不需要特殊的拓扑约束或者邻接信息所有必需的是模型的三角形列表;
- 支持的不同对象形状:框、球面、椭圆形、马蹄形、圆锥、圆筒、凸、半空间、平面、网格、八叉树
FCL最低要求是VS2015,我这里用的是VS2019。
1.下载相关文件
下载FCL
https://github.com/flexible-collision-library/fcl
下载Eigen
http://eigen.tuxfamily.org/index.php?title=Main_Page
下载libccd
https://github.com/danfis/libccd
下载octomap
http://octomap.github.com
2.用Cmake生成工程
libccd
选择默认设置即可。
octomap
FCL
在生成FCL之前需要修改CMakeLists.txt文件,分别把Eigen\libccd\octomap的路径加上:
set(EIGEN3_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../Eigen")
set(CCD_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../libccd-master/src" "${CMAKE_CURRENT_SOURCE_DIR}/../libccd-master/build/src")
set(CCD_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/../libccd-master/build/src/Debug/ccd.lib")
set(OCTOMAP_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../octomap-devel/octomap/include")
set(OCTOMAP_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/../octomap-devel/octomap/lib/octomap.lib")
set(OCTOMATH_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/../octomap-devel/octomap/lib/octomath.lib")
set(OCTOMAP_VERSION "1.9.0")
用CMake进行Generate时会报错,可忽略:
3.用VS生成库文件
libccd
双击打开E:\FCL\project\libccd-master\build里的libccd.sln,所有库的编译都统一用Debug|x64,开始编译:
octomap
双击打开E:\FCL\project\octomap-devel\build里的octomap-distribution.sln,开始编译
FCL
双击打开E:\FCL\project\fcl-master\build里的fcl.sln,开始编译
4.运行测试用例
选中项目test_fcl_box_box,右键选中设为启动项目:
将ccd.dll从E:\FCL\project\libccd-master\build\src\Debug拷贝到文件夹E:\FCL\project\fcl-master\build\test\Debug,运行程序:
```