Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

static_assert error when building descartes_tutorials in melodic #14

Open
kkufieta opened this issue Jan 24, 2019 · 6 comments
Open

static_assert error when building descartes_tutorials in melodic #14

kkufieta opened this issue Jan 24, 2019 · 6 comments

Comments

@kkufieta
Copy link
Contributor

Environment: Ubuntu 18.04 with ROS Melodic.

When trying to build descartes_tutorials, I get the following error:

Errors     << descartes_tutorials:make /home/kat/Ros/test_moveit/logs/descartes_tutorials/build.make.000.log
In file included from /usr/include/eigen3/Eigen/Core:347:0,
                 from /usr/include/eigen3/Eigen/Geometry:11,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/robot_model/include/moveit/robot_model/joint_model.h:47,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/robot_model/include/moveit/robot_model/joint_model_group.h:41,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:47,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/kinematic_constraints/include/moveit/kinematic_constraints/kinematic_constraint.h:40,
                 from /home/kat/Ros/test_moveit/src/descartes/descartes_core/include/descartes_core/robot_model.h:23,
                 from /home/kat/Ros/test_moveit/src/descartes/descartes_moveit/include/descartes_moveit/moveit_state_adapter.h:22,
                 from /home/kat/Ros/test_moveit/src/descartes/descartes_moveit/include/descartes_moveit/ikfast_moveit_state_adapter.h:22,
                 from /home/kat/Ros/test_moveit/src/descartes_tutorials/descartes_tutorials/src/tutorial2.cpp:9:
/usr/include/eigen3/Eigen/src/Geometry/Transform.h: In instantiation of ‘Eigen::Transform<Scalar, Dim, Mode, _Options>::Transform(const Eigen::Transform<_Scalar, Dim, OtherMode, OtherOptions>&) [with int OtherMode = 2; int OtherOptions = 0; _Scalar = double; int _Dim = 3; int _Mode = 1; int _Options = 0]’:
/home/kat/Ros/test_moveit/src/descartes_tutorials/descartes_tutorials/src/tutorial2.cpp:232:21:   required from here
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
                                        ^
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: note: in definition of macro ‘EIGEN_STATIC_ASSERT’
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
                                        ^~~~~~~~~~~~~
In file included from /usr/include/eigen3/Eigen/Core:347:0,
                 from /usr/include/eigen3/Eigen/Geometry:11,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/robot_model/include/moveit/robot_model/joint_model.h:47,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/robot_model/include/moveit/robot_model/joint_model_group.h:41,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/robot_model/include/moveit/robot_model/robot_model.h:47,
                 from /home/kat/Ros/test_moveit/src/moveit/moveit_core/kinematic_constraints/include/moveit/kinematic_constraints/kinematic_constraint.h:40,
                 from /home/kat/Ros/test_moveit/src/descartes/descartes_core/include/descartes_core/robot_model.h:23,
                 from /home/kat/Ros/test_moveit/src/descartes/descartes_moveit/include/descartes_moveit/moveit_state_adapter.h:22,
                 from /home/kat/Ros/test_moveit/src/descartes/descartes_moveit/include/descartes_moveit/ikfast_moveit_state_adapter.h:22,
                 from /home/kat/Ros/test_moveit/src/descartes_tutorials/descartes_tutorials/src/tutorial1.cpp:9:
/usr/include/eigen3/Eigen/src/Geometry/Transform.h: In instantiation of ‘Eigen::Transform<Scalar, Dim, Mode, _Options>::Transform(const Eigen::Transform<_Scalar, Dim, OtherMode, OtherOptions>&) [with int OtherMode = 2; int OtherOptions = 0; _Scalar = double; int _Dim = 3; int _Mode = 1; int _Options = 0]’:
/home/kat/Ros/test_moveit/src/descartes_tutorials/descartes_tutorials/src/tutorial1.cpp:160:69:   required from here
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
                                        ^
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: note: in definition of macro ‘EIGEN_STATIC_ASSERT’
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
                                        ^~~~~~~~~~~~~
make[2]: *** [CMakeFiles/descartes_tutorials_tutorial1.dir/src/tutorial1.cpp.o] Error 1
make[1]: *** [CMakeFiles/descartes_tutorials_tutorial1.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/descartes_tutorials_tutorial2.dir/src/tutorial2.cpp.o] Error 1
make[1]: *** [CMakeFiles/descartes_tutorials_tutorial2.dir/all] Error 2
make: *** [all] Error 2

Seems that there's something wrong with

error: static assertion failed: YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);
@kkufieta
Copy link
Contributor Author

This seems to be related to descartes/issues/234.

Running this on the repo fixed the error mentioned above:
find ./ -type f -exec sed -i 's/Affine3d/Isometry3d/g' {} \;

But then I got this error:

/home/kat/Ros/test_moveit/devel/lib/libdescartes_moveit.so: undefined reference to `tf::poseEigenToMsg(Eigen::Transform<double, 3, 1, 0> const&, geometry_msgs::Pose_<std::allocator<void> >&)'
/home/kat/Ros/test_moveit/devel/lib/libdescartes_moveit.so: undefined reference to `tf::poseMsgToEigen(geometry_msgs::Pose_<std::allocator<void> > const&, Eigen::Transform<double, 3, 1, 0>&)'
collect2: error: ld returned 1 exit status
descartes_tutorials/descartes_tutorials/CMakeFiles/descartes_tutorials_tutorial1.dir/build.make:273: recipe for target '/home/kat/Ros/test_moveit/devel/lib/descartes_tutorials/tutorial1' failed
make[2]: *** [/home/kat/Ros/test_moveit/devel/lib/descartes_tutorials/tutorial1] Error 1
CMakeFiles/Makefile2:23321: recipe for target 'descartes_tutorials/descartes_tutorials/CMakeFiles/descartes_tutorials_tutorial1.dir/all' failed
make[1]: *** [descartes_tutorials/descartes_tutorials/CMakeFiles/descartes_tutorials_tutorial1.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 82%] Building CXX object moveit/moveit_ros/move_group/CMakeFiles/moveit_move_group_default_capabilities.dir/src/default_capabilities/plan_service_capability.cpp.o
/home/kat/Ros/test_moveit/devel/lib/libdescartes_moveit.so: undefined reference to `tf::poseEigenToMsg(Eigen::Transform<double, 3, 1, 0> const&, geometry_msgs::Pose_<std::allocator<void> >&)'
/home/kat/Ros/test_moveit/devel/lib/libdescartes_moveit.so: undefined reference to `tf::poseMsgToEigen(geometry_msgs::Pose_<std::allocator<void> > const&, Eigen::Transform<double, 3, 1, 0>&)'
collect2: error: ld returned 1 exit status
descartes_tutorials/descartes_tutorials/CMakeFiles/descartes_tutorials_tutorial2.dir/build.make:273: recipe for target '/home/kat/Ros/test_moveit/devel/lib/descartes_tutorials/tutorial2' failed
make[2]: *** [/home/kat/Ros/test_moveit/devel/lib/descartes_tutorials/tutorial2] Error 1
CMakeFiles/Makefile2:23399: recipe for target 'descartes_tutorials/descartes_tutorials/CMakeFiles/descartes_tutorials_tutorial2.dir/all' failed
make[1]: *** [descartes_tutorials/descartes_tutorials/CMakeFiles/descartes_tutorials_tutorial2.dir/all] Error 2

Which I fixed by adding

   trajectory_msgs
   tf
   tf_conversions
+  eigen_conversions
 )

to descartes_tutorials/CMakeLists.txt.

@kkufieta
Copy link
Contributor Author

I submitted a PR that fixes these errors #15.

@Jmeyer1292 What are the best practices for contributioning to this repo? I am a newbie when it comes to OS contributions. Would it make sense to open a melodic-migration branch?

@salineeKing
Copy link

Thank you so much for your post! It's fixed my issue.

@jrgnicho
Copy link
Contributor

jrgnicho commented Sep 9, 2019

@kkufieta for the time being it's ok to create PR's against the master branch. It should compile on both kinetic and melodic. This repo also encourages following ROS and Google coding style guide. Hope that answers your question.

@CesMak
Copy link

CesMak commented Feb 21, 2020

Hey tehre

I use ros-kinetic on Ubuntu 16.04 and want to build melodic code I got this error:

e/eigen3/Eigen/src/Geometry/Transform.h: In instantiation of ‘Eigen::Transform<Scalar, Dim, Mode, _Options>::Transform(const Eigen::Transform<_Scalar, Dim, OtherMode, OtherOptions>&) [with int OtherMode = 2; int OtherOptions = 0; _Scalar = double; int _Dim = 3; int _Mode = 1; int _Options = 0]’:
/home/mlamprecht/Desktop/ros_projects/src/moveit_grasps/src/grasp_data.cpp:163:81:   required from here
/usr/include/eigen3/Eigen/src/Core/util/StaticAssert.h:32:40: error: static assertion failed: YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION
     #define EIGEN_STATIC_ASSERT(X,MSG) static_assert(X,#MSG);

Your FIx:
find ./ -type f -exec sed -i 's/Affine3d/Isometry3d/g' {} ;

did not work for me ....

@jrgnicho
Copy link
Contributor

@CesMak It looks like your error isn't coming from this repo but from moveit grasps

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants