C++ , FCL: Compilations Issues with Simple Collision Geometry

asked 2017-04-05 17:03:32 -0500

jwatson_utah_edu gravatar image

updated 2017-04-05 17:05:31 -0500

I am using Ubuntu 14.04 / Indigo and the latest FCL clone from the repo

With the following includes:

#include <fcl/shape/geometric_shapes.h>
#include <fcl/shape/geometric_shapes_utility.h>
#include <fcl/narrowphase/narrowphase.h>
#include <fcl/collision.h>
#include <iostream>

I am trying to create a simple Box:

Box box0(  ); // Parens shouldn't be the correct way to invoke this in C++

Throws no error, but when I

Vec3f boxDims{ 1,1,1 };
Box box0{ boxDims };

or

Box box0{  }; // I would expect the constructor to be invoked with curly braces in C++?

The following errors happen:

CMakeFiles/marker_move.dir/src/mrkr_move.cpp.o: In function `fcl::CollisionGeometry::CollisionGeometry()':
mrkr_move.cpp:(.text._ZN3fcl17CollisionGeometryC2Ev[_ZN3fcl17CollisionGeometryC5Ev]+0x33): undefined reference to `fcl::AABB::AABB()'
CMakeFiles/marker_move.dir/src/mrkr_move.cpp.o: In function `fcl::Box::Box(fcl::Vec3fX<fcl::details::Vec3Data<double> > const&)':
mrkr_move.cpp:(.text._ZN3fcl3BoxC2ERKNS_6Vec3fXINS_7details8Vec3DataIdEEEE[_ZN3fcl3BoxC5ERKNS_6Vec3fXINS_7details8Vec3DataIdEEEE]+0x23): undefined reference to `vtable for fcl::Box'
CMakeFiles/marker_move.dir/src/mrkr_move.cpp.o: In function `fcl::Box::~Box()':
mrkr_move.cpp:(.text._ZN3fcl3BoxD2Ev[_ZN3fcl3BoxD5Ev]+0x13): undefined reference to `vtable for fcl::Box'

Which seems to refer to the Box constructor. Do you know what is causing this? The same errors occur when I try to invoke the constructor with three floats as the signature.

I have added /usr/include/fcl to the include_directories command within CMakeLists.txt, but this does not change the error. I originally built FCL with cmake / make, and used sudo make install as usual. Also, I cannot find_package(FCL REQUIRED) because I am building with catkin/ROS, and FCL is not a ROS package.

Anyone else have these troubles with C++ / FCL / Ubuntu / Indigo?

Thanks in advance!

edit retag flag offensive close merge delete