or_fcl - FCL collision checking plugin for OpenRAVE

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

or_fcl - FCL collision checking plugin for OpenRAVE

Michael Koval
The Personal Robotics Lab at CMU is excited to announce or_fcl, an OpenRAVE collision checking plugin that exposes the Flexible Collision Library for use in OpenRAVE. Our benchmark results show that or_fcl is 3-5 times faster than the ODE, Bullet, and PQP plugins included with OpenRAVE on non-trivial environments. We've seen as much as a sevenfold speedup for collision checking in motion planning applications.

The code is available on Github under a BSD license:

https://github.com/personalrobotics/or_fcl

The README file includes instructions for building, installing, and using the plugin. Please do not hesitate to file an issue - or send a pull request - if you have trouble using the plugin.

-Michael

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

Rosen Diankov
Administrator
awesome! ;0)

2016-03-21 12:24 GMT+09:00 Michael Koval <[hidden email]>:
The Personal Robotics Lab at CMU is excited to announce or_fcl, an OpenRAVE collision checking plugin that exposes the Flexible Collision Library for use in OpenRAVE. Our benchmark results show that or_fcl is 3-5 times faster than the ODE, Bullet, and PQP plugins included with OpenRAVE on non-trivial environments. We've seen as much as a sevenfold speedup for collision checking in motion planning applications.

The code is available on Github under a BSD license:

https://github.com/personalrobotics/or_fcl

The README file includes instructions for building, installing, and using the plugin. Please do not hesitate to file an issue - or send a pull request - if you have trouble using the plugin.

-Michael

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users



------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

softy
In reply to this post by Michael Koval
Hi Michael,
i try to install this collision plugin.
So,first I install libccd, then octomap and then fcl library. Everything fine.
But when I try to install or_fcl, i´ve got error:

Scanning dependencies of target or_fcl_plugin
[ 50%] Building CXX object CMakeFiles/or_fcl_plugin.dir/src/or_fcl_plugin.cpp.o
[100%] Building CXX object CMakeFiles/or_fcl_plugin.dir/src/FCLCollisionChecker.cpp.o
/home/tomas/or_fcl/src/FCLCollisionChecker.cpp: In static member function ‘static bool or_fcl::FCLCollisionChecker::NarrowPhaseCheckCollision(fcl::CollisionObject*, fcl::CollisionObject*, void*)’:
/home/tomas/or_fcl/src/FCLCollisionChecker.cpp:847:74: error: no matching function for call to ‘std::vector<std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> > >::push_back(OpenRAVE::KinBody::LinkConstPtr&)’
             query->report->vLinkColliding.push_back(query->report->plink2);
                                                                          ^
/home/tomas/or_fcl/src/FCLCollisionChecker.cpp:847:74: note: candidates are:
In file included from /usr/include/c++/4.8/vector:64:0,
                 from /usr/include/c++/4.8/bits/random.h:34,
                 from /usr/include/c++/4.8/random:50,
                 from /usr/include/c++/4.8/bits/stl_algo.h:65,
                 from /usr/include/c++/4.8/algorithm:62,
                 from /usr/include/boost/iterator/iterator_concepts.hpp:29,
                 from /usr/include/boost/range/concepts.hpp:20,
                 from /usr/include/boost/range/algorithm/equal.hpp:14,
                 from /usr/include/boost/range/iterator_range_core.hpp:31,
                 from /usr/include/boost/range/iterator_range.hpp:13,
                 from /usr/include/boost/range/adaptor/transformed.hpp:15,
                 from /usr/include/boost/range/adaptor/map.hpp:14,
                 from /home/tomas/or_fcl/src/FCLCollisionChecker.cpp:32:
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> >; _Alloc = std::allocator<std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> > >; std::vector<_Tp, _Alloc>::value_type = std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> >]
       push_back(const value_type& __x)
       ^
/usr/include/c++/4.8/bits/stl_vector.h:901:7: note:   no known conversion for argument 1 from ‘OpenRAVE::KinBody::LinkConstPtr {aka boost::shared_ptr<const OpenRAVE::KinBody::Link>}’ to ‘const value_type& {aka const std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> >&}’
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp, _Alloc>::value_type&&) [with _Tp = std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> >; _Alloc = std::allocator<std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> > >; std::vector<_Tp, _Alloc>::value_type = std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> >]
       push_back(value_type&& __x)
       ^
/usr/include/c++/4.8/bits/stl_vector.h:919:7: note:   no known conversion for argument 1 from ‘OpenRAVE::KinBody::LinkConstPtr {aka boost::shared_ptr<const OpenRAVE::KinBody::Link>}’ to ‘std::vector<std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> > >::value_type&& {aka std::pair<boost::shared_ptr<const OpenRAVE::KinBody::Link>, boost::shared_ptr<const OpenRAVE::KinBody::Link> >&&}’
In file included from /usr/include/boost/smart_ptr/make_shared.hpp:15:0,
                 from /usr/include/boost/make_shared.hpp:15,
                 from /home/tomas/or_fcl/src/FCLCollisionChecker.cpp:34:
/usr/include/boost/smart_ptr/make_shared_object.hpp: In instantiation of ‘typename boost::detail::sp_if_not_array<T>::type boost::make_shared(Arg1&&, Args&& ...) [with T = fcl::CollisionObject; Arg1 = const boost::shared_ptr<fcl::CollisionGeometry>&; Args = {}; typename boost::detail::sp_if_not_array<T>::type = boost::shared_ptr<fcl::CollisionObject>]’:
/home/tomas/or_fcl/src/FCLCollisionChecker.cpp:764:72:   required from here
/usr/include/boost/smart_ptr/make_shared_object.hpp:218:5: error: no matching function for call to ‘fcl::CollisionObject::CollisionObject(const boost::shared_ptr<fcl::CollisionGeometry>&)’
     ::new( pv ) T( boost::detail::sp_forward<Arg1>( arg1 ), boost::detail::sp_forward<Args>( args )... );
     ^
/usr/include/boost/smart_ptr/make_shared_object.hpp:218:5: note: candidates are:
In file included from /usr/local/include/fcl/collision.h:43:0,
                 from /home/tomas/or_fcl/src/FCLCollisionChecker.cpp:37:
/usr/local/include/fcl/collision_object.h:171:3: note: fcl::CollisionObject::CollisionObject(const std::shared_ptr<fcl::CollisionGeometry>&, const Matrix3f&, const Vec3f&)
   CollisionObject(const std::shared_ptr<CollisionGeometry> &cgeom_, const Matrix3f& R, const Vec3f& T):
   ^
/usr/local/include/fcl/collision_object.h:171:3: note:   candidate expects 3 arguments, 1 provided
/usr/local/include/fcl/collision_object.h:164:3: note: fcl::CollisionObject::CollisionObject(const std::shared_ptr<fcl::CollisionGeometry>&, const fcl::Transform3f&)
   CollisionObject(const std::shared_ptr<CollisionGeometry> &cgeom_, const Transform3f& tf) :
   ^
/usr/local/include/fcl/collision_object.h:164:3: note:   candidate expects 2 arguments, 1 provided
/usr/local/include/fcl/collision_object.h:154:2: note: fcl::CollisionObject::CollisionObject(const std::shared_ptr<fcl::CollisionGeometry>&)
  CollisionObject(const std::shared_ptr<CollisionGeometry> &cgeom_) :
  ^
/usr/local/include/fcl/collision_object.h:154:2: note:   no known conversion for argument 1 from ‘const boost::shared_ptr<fcl::CollisionGeometry>’ to ‘const std::shared_ptr<fcl::CollisionGeometry>&’
/usr/local/include/fcl/collision_object.h:151:7: note: fcl::CollisionObject::CollisionObject(const fcl::CollisionObject&)
 class CollisionObject
       ^
/usr/local/include/fcl/collision_object.h:151:7: note:   no known conversion for argument 1 from ‘const boost::shared_ptr<fcl::CollisionGeometry>’ to ‘const fcl::CollisionObject&’
make[2]: *** [CMakeFiles/or_fcl_plugin.dir/src/FCLCollisionChecker.cpp.o] Error 1
make[1]: *** [CMakeFiles/or_fcl_plugin.dir/all] Error 2
make: *** [all] Error 2

I install or_fcl this way:
git clone https://github.com/flexible-collision-library/fcl.git
mkdir -p or_fcl/build
cd or_fcl/build
cmake -DCMAKE_BUILD_TYPE=Release -DUSE_CATKIN:bool=0 ..
make

I suppose cmake log is fine:
-- Boost version: 1.54.0
-- Found the following Boost libraries:
--   system
CMake Warning at CMakeLists.txt:13 (find_package):
  By not providing "Findfcl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "fcl", but
  CMake did not find one.

  Could not find a package configuration file provided by "fcl" with any of
  the following names:

    fclConfig.cmake
    fcl-config.cmake

  Add the installation prefix of "fcl" to CMAKE_PREFIX_PATH or set "fcl_DIR"
  to a directory containing one of the above files.  If "fcl" provides a
  separate development package or SDK, be sure it has been installed.


-- checking for module 'fcl'
--   found fcl, version 0.5.0
-- Checking for C++11 compiler
-- Checking for C++11 compiler - available
-- Building without Catkin.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tomas/or_fcl/build

Can you help me? We are working on bin picking application. It is work, but sometimes trajectory computation consume so much time. Collision models are simplified and we are running on Intel Core i7-4790K @ 4.40GHz.

Thanks !

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

Chris Dellin
Hi,

It appears to me that a configuration check is not being run.  Can you check the following:

1. Check that your or_fcl/CMakeLists.txt file includes the HAVE_REPORT_VLINKCOLLIDING_PAIR check (I believe it's on lines 32-44 [0]).  From the CMake output you posted, it looks like the check is not being run.  For comparison, here is a snippet of my CMake output:

    -- checking for module 'fcl'
    --   found fcl, version 0.3.2
    -- Performing Test HAVE_REPORT_VLINKCOLLIDING_PAIR
    -- Performing Test HAVE_REPORT_VLINKCOLLIDING_PAIR - Success
    -- Checking for C++11 compiler
    -- Checking for C++11 compiler - available

In the failing case, it should look like this:

    -- checking for module 'fcl'
    --   found fcl, version 0.3.2
    -- Performing Test HAVE_REPORT_VLINKCOLLIDING_PAIR
    -- Performing Test HAVE_REPORT_VLINKCOLLIDING_PAIR - Failed
    -- Checking for C++11 compiler
    -- Checking for C++11 compiler - available

2. What version of CMake are you using?

It would be great if we can figure out why the test is not being run for you.  In the meantime, to get it to compile correctly, you can simply add the following line to the CMakeLists.txt file:

    add_definitions(-DHAVE_REPORT_VLINKCOLLIDING_PAIR)

Cheers,
- Chris Dellin

On Wed, Mar 30, 2016 at 5:48 AM, softy <[hidden email]> wrote:
*Hi Michael,
i try to install this collision plugin.
So,first I install libccd, then octomap and then fcl library. Everything
fine.
But when I try to install or_fcl, i´ve got error:*


*I install or_fcl this way:*


*I suppose cmake log is fine:*


*Can you help me? We are working on bin picking application. It is work, but
sometimes trajectory computation consume so much time. Collision models are
simplified and we are running on Intel Core i7-4790K @ 4.40GHz.

Thanks !*




--
View this message in context: http://openrave-users-list.185357.n3.nabble.com/or-fcl-FCL-collision-checking-plugin-for-OpenRAVE-tp4027746p4027757.html
Sent from the OpenRAVE Users List mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

softy
Hi Chris,
thanks for response.
I´ve update CMake to 3.0.2 version and force VLINKCOLLIDING_PAIR check (disable IF condition in CMakeLists.txt)
This is my log from cmake:

-- The C compiler identification is GNU 4.8.4
-- The CXX compiler identification is GNU 4.8.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.26") 
-- Boost version: 1.54.0
-- Found the following Boost libraries:
--   system
CMake Warning at CMakeLists.txt:13 (find_package):
  By not providing "Findfcl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "fcl", but
  CMake did not find one.

  Could not find a package configuration file provided by "fcl" with any of
  the following names:

    fclConfig.cmake
    fcl-config.cmake

  Add the installation prefix of "fcl" to CMAKE_PREFIX_PATH or set "fcl_DIR"
  to a directory containing one of the above files.  If "fcl" provides a
  separate development package or SDK, be sure it has been installed.


-- checking for module 'fcl'
--   found fcl, version 0.5.0
-- Performing Test HAVE_REPORT_VLINKCOLLIDING_PAIR
-- Performing Test HAVE_REPORT_VLINKCOLLIDING_PAIR - Failed
-- Checking for C++11 compiler
-- Checking for C++11 compiler - available
-- Building without Catkin.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tomas/or_fcl/build

Still can´t compile with make (same error)
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

softy
I recompile fcl library. Then i try to recompile or_fcl. (VLINKCOLLIDING still failed) but error on make changed :
Scanning dependencies of target or_fcl_plugin
[ 50%] Building CXX object CMakeFiles/or_fcl_plugin.dir/src/or_fcl_plugin.cpp.o
[100%] Building CXX object CMakeFiles/or_fcl_plugin.dir/src/FCLCollisionChecker.cpp.o
In file included from /usr/include/boost/smart_ptr/make_shared.hpp:15:0,
                 from /usr/include/boost/make_shared.hpp:15,
                 from /home/tomas/or_fcl/src/FCLCollisionChecker.cpp:34:
/usr/include/boost/smart_ptr/make_shared_object.hpp: In instantiation of ‘typename boost::detail::sp_if_not_array<T>::type boost::make_shared(Arg1&&, Args&& ...) [with T = fcl::CollisionObject; Arg1 = const boost::shared_ptr<fcl::CollisionGeometry>&; Args = {}; typename boost::detail::sp_if_not_array<T>::type = boost::shared_ptr<fcl::CollisionObject>]’:
/home/tomas/or_fcl/src/FCLCollisionChecker.cpp:764:72:   required from here
/usr/include/boost/smart_ptr/make_shared_object.hpp:218:5: error: no matching function for call to ‘fcl::CollisionObject::CollisionObject(const boost::shared_ptr<fcl::CollisionGeometry>&)’
     ::new( pv ) T( boost::detail::sp_forward<Arg1>( arg1 ), boost::detail::sp_forward<Args>( args )... );
     ^
/usr/include/boost/smart_ptr/make_shared_object.hpp:218:5: note: candidates are:
In file included from /usr/local/include/fcl/collision.h:43:0,
                 from /home/tomas/or_fcl/src/FCLCollisionChecker.cpp:37:
/usr/local/include/fcl/collision_object.h:171:3: note: fcl::CollisionObject::CollisionObject(const std::shared_ptr<fcl::CollisionGeometry>&, const Matrix3f&, const Vec3f&)
   CollisionObject(const std::shared_ptr<CollisionGeometry> &cgeom_, const Matrix3f& R, const Vec3f& T):
   ^
/usr/local/include/fcl/collision_object.h:171:3: note:   candidate expects 3 arguments, 1 provided
/usr/local/include/fcl/collision_object.h:164:3: note: fcl::CollisionObject::CollisionObject(const std::shared_ptr<fcl::CollisionGeometry>&, const fcl::Transform3f&)
   CollisionObject(const std::shared_ptr<CollisionGeometry> &cgeom_, const Transform3f& tf) :
   ^
/usr/local/include/fcl/collision_object.h:164:3: note:   candidate expects 2 arguments, 1 provided
/usr/local/include/fcl/collision_object.h:154:2: note: fcl::CollisionObject::CollisionObject(const std::shared_ptr<fcl::CollisionGeometry>&)
  CollisionObject(const std::shared_ptr<CollisionGeometry> &cgeom_) :
  ^
/usr/local/include/fcl/collision_object.h:154:2: note:   no known conversion for argument 1 from ‘const boost::shared_ptr<fcl::CollisionGeometry>’ to ‘const std::shared_ptr<fcl::CollisionGeometry>&’
/usr/local/include/fcl/collision_object.h:151:7: note: fcl::CollisionObject::CollisionObject(const fcl::CollisionObject&)
 class CollisionObject
       ^
/usr/local/include/fcl/collision_object.h:151:7: note:   no known conversion for argument 1 from ‘const boost::shared_ptr<fcl::CollisionGeometry>’ to ‘const fcl::CollisionObject&’
make[2]: *** [CMakeFiles/or_fcl_plugin.dir/src/FCLCollisionChecker.cpp.o] Error 1
make[1]: *** [CMakeFiles/or_fcl_plugin.dir/all] Error 2
make: *** [all] Error 2
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

Chris Dellin
I see that you also opened an issue on github (https://github.com/personalrobotics/or_fcl/issues/17), so I'm moving further discussion there.
Cheers,
- Chris

On Thu, Mar 31, 2016 at 5:04 AM, softy <[hidden email]> wrote:
*I recompile fcl library. Then i try to recompile or_fcl. (VLINKCOLLIDING
still failed) but error on make changed :*




--
View this message in context: http://openrave-users-list.185357.n3.nabble.com/or-fcl-FCL-collision-checking-plugin-for-OpenRAVE-tp4027746p4027760.html
Sent from the OpenRAVE Users List mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users


------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Openrave-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/openrave-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: or_fcl - FCL collision checking plugin for OpenRAVE

fred91
In reply to this post by Michael Koval
Is this plugin redundant now that OpenRAVE comes with fclrave plugin? is there any benefit to having or_fcl and manually setting the collision checker? The reason I ask is because OpenRAVE now requires FCL version >= 0.4.0 and or_fcl will not compile with later versions of FCL.
Loading...