Pinocchio: Compiling from source in Ubuntu 16.04 and using ROS Kinetic

Created on 7 Apr 2020  Â·  20Comments  Â·  Source: stack-of-tasks/pinocchio

Hi,

I'm trying to install Pinocchio to use in a ROS project. However, I'm having compile errors regarding my version of eigenpy

eigenpy >= 2.0.0 is required.
-- Checking for module 'eigenpy>=2.0.0'
--   Requested 'eigenpy >= 2.0.0' but version of eigenpy is 1.6.9-dirty
You may find new versions of eigenpy at http://github.com/stack-of-tasks/eigenpy

I installed eigenpy via

sudo apt-get install ros-kinetic-eigenpy

However after looking at the release notes I realized that for kinetic it only goes to version 1.6.9.

I've tried installing eigenpy from the robotpkg apt repository, but then I get an error that it cannot find the eigenpy library.

I would really appreciate any help trying to solve this compiling issues.

Thank you!

Installation issue

Most helpful comment

or -DCMAKE_CXX_STANDARD=11 ;)

All 20 comments

I think @wxmerkt may have some clues for solving this issue. @wxmerkt Do you know why eigenpy is not up to date to the version 2.3.0?

@rshum19 In the meantime, you can install eigenpy directly from source

@rshum19 : on robotpkg, did you specify the python version you need ? That should be sudo apt install robotpkg-py27-pinocchio, which will install robotpkg-py27-eigenpy as a dependency.

@nim65s This a ROS installation procedure.

I have not yet updated Kinetic to newer versions. We are still having ongoing issues with the CMake modules for Melodic. I am planning to fix the Melodic release today (the install directory for the eigenpyConfig.cmake in particular, and the build type).

For Kinetic, I am not sure it is worth the effort - there may be a few cycles to get it working with the changes from CMake modules.

@rshum19 The easiest way for you to get it to run is just clone the eigenpy repository into your catkin workspace. It will build with the other packages automatically.

@wxmerkt Thanks a lot for this helpful answer!

If all goes well with the Melodic release, I might try to also update Kinetic.

Let's keep this issue open - I will close it once I know if we can get the Kinetic version of EigenPy also updated.

@jcarpent and @wxmerkt thank you for your prompt response and suggestions. I have managed to compiled eigenpy from source successfully, but I'm still getting compiling issues please see below.

In file included from /home/ballbot/pinocchio_ws/build/pinocchio/include/pinocchio/bindings/python/multibody/joint/joints-variant.hpp:11:0,
                 from /home/ballbot/pinocchio_ws/src/pinocchio/bindings/python/multibody/joint/expose-joints.cpp:7:
/home/ballbot/pinocchio_ws/build/pinocchio/include/pinocchio/bindings/python/multibody/joint/joints-models.hpp: In function ‘pinocchio::JointModelComposite& pinocchio::python::addJoint_proxy(pinocchio::JointModelComposite&, const JointModelVariant&, const SE3&)’:
/home/ballbot/pinocchio_ws/build/pinocchio/include/pinocchio/bindings/python/multibody/joint/joints-models.hpp:79:118: error: call of overloaded ‘apply_visitor(pinocchio::python::JointModelCompositeAddJointVisitor, const JointModelVariant&)’ is ambiguous
       return boost::apply_visitor(JointModelCompositeAddJointVisitor(joint_composite,joint_placement), jmodel_variant);
                                                                                                                      ^
In file included from /usr/include/boost/variant/apply_visitor.hpp:16:0,
                 from /usr/include/boost/variant/detail/hash_variant.hpp:23,
                 from /usr/include/boost/variant/variant.hpp:34,
                 from /usr/include/boost/variant.hpp:17,
                 from /home/ballbot/pinocchio_ws/build/pinocchio/include/pinocchio/multibody/joint/joint-collection.hpp:11,
                 from /home/ballbot/pinocchio_ws/build/pinocchio/include/pinocchio/bindings/python/multibody/joint/joint-derived.hpp:11,
                 from /home/ballbot/pinocchio_ws/src/pinocchio/bindings/python/multibody/joint/expose-joints.cpp:6:
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:82:1: note: candidate: typename Visitor::result_type boost::apply_visitor(const Visitor&, Visitable&) [with Visitor = pinocchio::python::JointModelCompositeAddJointVisitor; Visitable = const boost::variant<pinocchio::JointModelRevoluteTpl<double, 0, 0>, pinocchio::JointModelRevoluteTpl<double, 0, 1>, pinocchio::JointModelRevoluteTpl<double, 0, 2>, pinocchio::JointModelMimic<pinocchio::JointModelRevoluteTpl<double, 0, 0> >, pinocchio::JointModelMimic<pinocchio::JointModelRevoluteTpl<double, 0, 1> >, pinocchio::JointModelMimic<pinocchio::JointModelRevoluteTpl<double, 0, 2> >, pinocchio::JointModelFreeFlyerTpl<double, 0>, pinocchio::JointModelPlanarTpl<double, 0>, pinocchio::JointModelRevoluteUnalignedTpl<double, 0>, pinocchio::JointModelSphericalTpl<double, 0>, pinocchio::JointModelSphericalZYXTpl<double, 0>, pinocchio::JointModelPrismaticTpl<double, 0, 0>, pinocchio::JointModelPrismaticTpl<double, 0, 1>, pinocchio::JointModelPrismaticTpl<double, 0, 2>, pinocchio::JointModelPrismaticUnalignedTpl<double, 0>, pinocchio::JointModelTranslationTpl<double, 0>, pinocchio::JointModelRevoluteUnboundedTpl<double, 0, 0>, pinocchio::JointModelRevoluteUnboundedTpl<double, 0, 1>, pinocchio::JointModelRevoluteUnboundedTpl<double, 0, 2>, pinocchio::JointModelRevoluteUnboundedUnalignedTpl<double, 0>, boost::recursive_wrapper<pinocchio::JointModelCompositeTpl<double, 0, pinocchio::JointCollectionDefaultTpl> > >; typename Visitor::result_type = pinocchio::JointModelCompositeTpl<double>&]
 apply_visitor(const Visitor& visitor, Visitable& visitable)
 ^~~~~~~~~~~~~
/usr/include/boost/variant/detail/apply_visitor_unary.hpp:160:23: note: candidate: decltype(auto) boost::apply_visitor(const Visitor&, Visitable&, typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type*) [with Visitor = pinocchio::python::JointModelCompositeAddJointVisitor; Visitable = const boost::variant<pinocchio::JointModelRevoluteTpl<double, 0, 0>, pinocchio::JointModelRevoluteTpl<double, 0, 1>, pinocchio::JointModelRevoluteTpl<double, 0, 2>, pinocchio::JointModelMimic<pinocchio::JointModelRevoluteTpl<double, 0, 0> >, pinocchio::JointModelMimic<pinocchio::JointModelRevoluteTpl<double, 0, 1> >, pinocchio::JointModelMimic<pinocchio::JointModelRevoluteTpl<double, 0, 2> >, pinocchio::JointModelFreeFlyerTpl<double, 0>, pinocchio::JointModelPlanarTpl<double, 0>, pinocchio::JointModelRevoluteUnalignedTpl<double, 0>, pinocchio::JointModelSphericalTpl<double, 0>, pinocchio::JointModelSphericalZYXTpl<double, 0>, pinocchio::JointModelPrismaticTpl<double, 0, 0>, pinocchio::JointModelPrismaticTpl<double, 0, 1>, pinocchio::JointModelPrismaticTpl<double, 0, 2>, pinocchio::JointModelPrismaticUnalignedTpl<double, 0>, pinocchio::JointModelTranslationTpl<double, 0>, pinocchio::JointModelRevoluteUnboundedTpl<double, 0, 0>, pinocchio::JointModelRevoluteUnboundedTpl<double, 0, 1>, pinocchio::JointModelRevoluteUnboundedTpl<double, 0, 2>, pinocchio::JointModelRevoluteUnboundedUnalignedTpl<double, 0>, boost::recursive_wrapper<pinocchio::JointModelCompositeTpl<double, 0, pinocchio::JointCollectionDefaultTpl> > >; typename boost::disable_if<boost::detail::variant::has_result_type<Visitor> >::type = void]
 inline decltype(auto) apply_visitor(const Visitor& visitor, Visitable& visitable,
                       ^~~~~~~~~~~~~
make[2]: *** [bindings/python/CMakeFiles/pinocchio_pywrap.dir/multibody/joint/expose-joints.cpp.o] Error 1
make[1]: *** [bindings/python/CMakeFiles/pinocchio_pywrap.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
cd /home/ballbot/pinocchio_ws/build/pinocchio; catkin build --get-env pinocchio | catkin env -si  /usr/bin/make --jobserver-fds=6,7 -j; cd -

I've tried both the regular cmake ../ && make -j8 && make install steps as well as catkin build and get the same error. Is there a prefer compiling method ?

Thank you!

Which packages with which versions do you have in your workspace? How did you build them?

  • If you have pinocchio and eigenpy cloned into a catkin workspace, use the regular catkin build.
  • If you follow a regular CMake workflow, use the cmake ; make ; make install.
  • Doing a mix complicates things and can lead to complications.

In my catkin worskpace I have eigenpy version 2.3.0 and pinocchio 2.3.1. To build them I'm using catkin build

What is your boost version ?

@jcarpent I'm using version Boost version 1.58.0.1

It seems that this is related to your compiler options. Are you using c++11?

To follow @jcarpent's comment, you could set this with:
catkin config --cmake-args -DCMAKE_CXX_FLAGS="-std=c++11"

or -DCMAKE_CXX_STANDARD=11 ;)

@wxmerkt using the suggested cmake arguments solved my compiling issue. Though I had several warning regarding BiasZeroTpl being deprecated. I'm assuming this is not an issue.

May be a good idea to include this flag as part of the CMakeLists.txt file

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -std=c++11")

Thanks all for your help! I'm going to close this issue now.

Glad to hear it's resolved :-).

Hi I'm reopening this issue, because I'm having compiling issues on a different machine. It seems that its an issue with the eigen library?

In file included from /usr0/home/rshu/pinocchio_ws/src/pinocchio-2.2.3/unittest/serialization.cpp:10:0:
/usr0/home/rshu/pinocchio_ws/build/pinocchio/include/pinocchio/serialization/eigen.hpp:81:10: error: redefinition of ‘template<class Archive, class _IndexType, long unsigned int _NumIndices> void boost::serialization::serialize(Archive&, Eigen::array<T, N>&, unsigned int)’
     void serialize(Archive & ar, Eigen::array<_IndexType,_NumIndices> & a, const unsigned int version)

System:
OS: Ubuntu 16.04
Eigenpy: 2.3.0
Pinocchio: 2.2.3
Boost: 1.58.0
Eigen: 3.2.92
gcc: 6.50
python: 2.7.12

Any idea why this could be?

Can you try the last release of Pinocchio ?

@jcarpent Pulling the latest from the repository solved my issue thank you!

Btw: EigenPy 2.3.1 & Pinocchio 2.4.0 are now released to ROS Kinetic. They will be live with the next sync (~every two weeks, usually).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

cmastalli picture cmastalli  Â·  7Comments

cmastalli picture cmastalli  Â·  12Comments

GiulioRomualdi picture GiulioRomualdi  Â·  10Comments

ahoarau picture ahoarau  Â·  12Comments

ShihaoWang picture ShihaoWang  Â·  9Comments