TSID does not compile with eigen 3.4.0
GiulioRomualdi opened this issue · 1 comments
Hi all! I'm trying to compile TSID in a conda
environment.
I installed all the dependencies of tsid with conda
. One of these dependencies is eigen
. The latest eigen version provided by conda-forge is 3.4.0
. Unfortunately, TSIS is not compatible with this eigen version. Indeed when I tried to compile the repo I got the following error
[ 83%] Building CXX object tests/CMakeFiles/tasks.dir/tasks.cpp.o
cd /home/gromualdi/robot-code/tsid/build/tests && /usr/bin/c++ -DBOOST_MPL_LIMIT_LIST_SIZE=30 -DBOOST_MPL_LIMIT_VECTOR_SIZE=30 -DEIGEN_RUNTIME_NO_MALLOC -DHPP_FCL_HAS_OCTOMAP -DHPP_FCL_HAVE_OCTOMAP -DOCTOMAP_MAJOR_VERSION=1 -DOCTOMAP_MINOR_VERSION=9 -DOCTOMAP_PATCH_VERSION=7 -DPINOCCHIO_WITH_HPP_FCL -DPINOCCHIO_WITH_URDFDOM -I/home/gromualdi/robot-code/tsid/build -I/home/gromualdi/robot-code/tsid/build/include -I/home/gromualdi/robot-code/tsid/include -isystem /home/gromualdi/mambaforge/envs/tsid-env/include/eigen3 -isystem /home/gromualdi/mambaforge/envs/tsid-env/include -isystem /home/gromualdi/mambaforge/envs/tsid-env/lib/urdfdom/cmake/../../../include -isystem /home/gromualdi/mambaforge/envs/tsid-env/lib/urdfdom_headers/cmake/../../../include -pedantic -Wno-long-long -Wall -Wextra -Wcast-align -Wcast-qual -Wformat -Wwrite-strings -Wconversion -DBOOST_TEST_DYN_LINK -DBOOST_TEST_MODULE=tasksTest '-DTSID_SOURCE_DIR="/home/gromualdi/robot-code/tsid"' -o CMakeFiles/tasks.dir/tasks.cpp.o -c /home/gromualdi/robot-code/tsid/tests/tasks.cpp
/home/gromualdi/robot-code/tsid/tests/tasks.cpp: In member function ‘void tasksTest::test_task_se3_equality::test_method()’:
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:103:5: error: reference to ‘Vector’ is ambiguous
103 | Vector dv = Jpinv * constraint.vector();
| ^~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/Core:295,
from /home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:21,
from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/src/Core/Matrix.h:551:7: note: candidates are: ‘template<class Type, int Size> using Vector = Eigen::Matrix<Type, Size, 1>’
551 | using Vector = Matrix<Type, Size, 1>;
| ^~~~~~
In file included from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:37:52: note: ‘typedef class Eigen::Matrix<double, -1, 1> tsid::math::Vector’
37 | typedef Eigen::Matrix<Scalar,Eigen::Dynamic,1> Vector;
| ^~~~~~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:106:18: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
106 | if(!isFinite(dv))
| ^~
| div
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/boost/test/test_tools.hpp:45,
from /home/gromualdi/mambaforge/envs/tsid-env/include/boost/test/unit_test.hpp:18,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:20:
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:111:20: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
111 | REQUIRE_FINITE(dv.transpose());
| ^~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:111:5: note: in expansion of macro ‘REQUIRE_FINITE’
111 | REQUIRE_FINITE(dv.transpose());
| ^~~~~~~~~~~~~~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:113:13: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
113 | v += dt*dv;
| ^~
| div
/home/gromualdi/robot-code/tsid/tests/tasks.cpp: In member function ‘void tasksTest::test_task_com_equality::test_method()’:
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:162:3: error: reference to ‘Vector3’ is ambiguous
162 | Vector3 com_ref = data.com[0] + pinocchio::SE3::Vector3(0.02,0.02,0.02);
| ^~~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/Core:295,
from /home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:21,
from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/src/Core/Matrix.h:541:1: note: candidates are: ‘template<class Type> using Vector3 = Eigen::Matrix<Type, 3, 1>’
541 | EIGEN_MAKE_TYPEDEFS(3, 3)
| ^~~~~~~~~~~~~~~~~~~
In file included from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:42:39: note: ‘typedef class Eigen::Matrix<double, 3, 1> tsid::math::Vector3’
42 | typedef Eigen::Matrix<Scalar,3,1> Vector3;
| ^~~~~~~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:163:70: error: ‘com_ref’ was not declared in this scope
163 | TrajectoryBase *traj = new TrajectoryEuclidianConstant("traj_com", com_ref);
| ^~~~~~~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:183:5: error: reference to ‘Vector’ is ambiguous
183 | Vector dv = Jpinv * constraint.vector();
| ^~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/Core:295,
from /home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:21,
from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/src/Core/Matrix.h:551:7: note: candidates are: ‘template<class Type, int Size> using Vector = Eigen::Matrix<Type, Size, 1>’
551 | using Vector = Matrix<Type, Size, 1>;
| ^~~~~~
In file included from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:37:52: note: ‘typedef class Eigen::Matrix<double, -1, 1> tsid::math::Vector’
37 | typedef Eigen::Matrix<Scalar,Eigen::Dynamic,1> Vector;
| ^~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/boost/test/test_tools.hpp:45,
from /home/gromualdi/mambaforge/envs/tsid-env/include/boost/test/unit_test.hpp:18,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:20:
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:186:28: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
186 | BOOST_REQUIRE(isFinite(dv));
| ^~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:188:13: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
188 | v += dt*dv;
| ^~
| div
/home/gromualdi/robot-code/tsid/tests/tasks.cpp: In member function ‘void tasksTest::test_task_joint_posture::test_method()’:
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:231:3: error: reference to ‘Vector’ is ambiguous
231 | Vector q_ref = Vector::Random(na);
| ^~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/Core:295,
from /home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:21,
from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/src/Core/Matrix.h:551:7: note: candidates are: ‘template<class Type, int Size> using Vector = Eigen::Matrix<Type, Size, 1>’
551 | using Vector = Matrix<Type, Size, 1>;
| ^~~~~~
In file included from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:37:52: note: ‘typedef class Eigen::Matrix<double, -1, 1> tsid::math::Vector’
37 | typedef Eigen::Matrix<Scalar,Eigen::Dynamic,1> Vector;
| ^~~~~~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:232:72: error: ‘q_ref’ was not declared in this scope
232 | TrajectoryBase *traj = new TrajectoryEuclidianConstant("traj_joint", q_ref);
| ^~~~~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:255:5: error: reference to ‘Vector’ is ambiguous
255 | Vector dv = Jpinv * constraint.vector();
| ^~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/Core:295,
from /home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:21,
from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/mambaforge/envs/tsid-env/include/eigen3/Eigen/src/Core/Matrix.h:551:7: note: candidates are: ‘template<class Type, int Size> using Vector = Eigen::Matrix<Type, Size, 1>’
551 | using Vector = Matrix<Type, Size, 1>;
| ^~~~~~
In file included from /home/gromualdi/robot-code/tsid/include/tsid/math/utils.hpp:21,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:23:
/home/gromualdi/robot-code/tsid/include/tsid/math/fwd.hpp:37:52: note: ‘typedef class Eigen::Matrix<double, -1, 1> tsid::math::Vector’
37 | typedef Eigen::Matrix<Scalar,Eigen::Dynamic,1> Vector;
| ^~~~~~
In file included from /home/gromualdi/mambaforge/envs/tsid-env/include/boost/test/test_tools.hpp:45,
from /home/gromualdi/mambaforge/envs/tsid-env/include/boost/test/unit_test.hpp:18,
from /home/gromualdi/robot-code/tsid/tests/tasks.cpp:20:
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:258:28: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
258 | BOOST_REQUIRE(isFinite(dv));
| ^~
/home/gromualdi/robot-code/tsid/tests/tasks.cpp:260:13: error: ‘dv’ was not declared in this scope; did you mean ‘div’?
260 | v += dt*dv;
| ^~
| div
make[2]: *** [tests/CMakeFiles/tasks.dir/build.make:66: tests/CMakeFiles/tasks.dir/tasks.cpp.o] Error 1
make[2]: Leaving directory '/home/gromualdi/robot-code/tsid/build'
make[1]: *** [CMakeFiles/Makefile2:1523: tests/CMakeFiles/tasks.dir/all] Error 2
make[1]: Leaving directory '/home/gromualdi/robot-code/tsid/build'
make: *** [Makefile:144: all] Error 2
If I'm not mistaken this is related to this addition in eigen
Notice this should explain why the GitHub action related to the tsid feedstock is currently failing https://github.com/conda-forge/tsid-feedstock/pull/2/checks?check_run_id=3603496234
The following patch fixes the problem
diff --git a/tests/tasks.cpp b/tests/tasks.cpp
index ace6587..a787532 100644
--- a/tests/tasks.cpp
+++ b/tests/tasks.cpp
@@ -100,7 +100,7 @@ BOOST_AUTO_TEST_CASE ( test_task_se3_equality )
BOOST_REQUIRE(isFinite(constraint.vector()));
pseudoInverse(constraint.matrix(), Jpinv, 1e-4);
- Vector dv = Jpinv * constraint.vector();
+ math::Vector dv = Jpinv * constraint.vector();
BOOST_REQUIRE(isFinite(Jpinv));
BOOST_CHECK(MatrixXd::Identity(6,6).isApprox(constraint.matrix()*Jpinv));
if(!isFinite(dv))
@@ -159,7 +159,7 @@ BOOST_AUTO_TEST_CASE ( test_task_com_equality )
BOOST_CHECK(task.Kp().isApprox(Kp));
BOOST_CHECK(task.Kd().isApprox(Kd));
- Vector3 com_ref = data.com[0] + pinocchio::SE3::Vector3(0.02,0.02,0.02);
+ math::Vector3 com_ref = data.com[0] + pinocchio::SE3::Vector3(0.02,0.02,0.02);
TrajectoryBase *traj = new TrajectoryEuclidianConstant("traj_com", com_ref);
TrajectorySample sample;
@@ -180,7 +180,7 @@ BOOST_AUTO_TEST_CASE ( test_task_com_equality )
BOOST_REQUIRE(isFinite(constraint.vector()));
pseudoInverse(constraint.matrix(), Jpinv, 1e-5);
- Vector dv = Jpinv * constraint.vector();
+ math::Vector dv = Jpinv * constraint.vector();
BOOST_REQUIRE(isFinite(Jpinv));
BOOST_CHECK(MatrixXd::Identity(constraint.rows(),constraint.rows()).isApprox(constraint.matrix()*Jpinv));
BOOST_REQUIRE(isFinite(dv));
@@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE ( test_task_joint_posture )
BOOST_CHECK(task.Kd().isApprox(Kd));
cout<<"Gonna create reference trajectory\n";
- Vector q_ref = Vector::Random(na);
+ math::Vector q_ref = math::Vector::Random(na);
TrajectoryBase *traj = new TrajectoryEuclidianConstant("traj_joint", q_ref);
TrajectorySample sample;
@@ -252,7 +252,7 @@ BOOST_AUTO_TEST_CASE ( test_task_joint_posture )
BOOST_REQUIRE(isFinite(constraint.vector()));
pseudoInverse(constraint.matrix(), Jpinv, 1e-5);
- Vector dv = Jpinv * constraint.vector();
+ math::Vector dv = Jpinv * constraint.vector();
BOOST_REQUIRE(isFinite(Jpinv));
BOOST_CHECK(MatrixXd::Identity(na,na).isApprox(constraint.matrix()*Jpinv));
BOOST_REQUIRE(isFinite(dv));
I've just noticed that #144 fixed the problem for the devel branch. I will switch to that branch