felixchenfy / Monocular-Visual-Odometry

A simple monocular visual odometry (part of vSLAM) by ORB keypoints with initialization, tracking, local map and bundle adjustment. (WARNING: Hi, I'm sorry that this project is tuned for course demo, not for real world applications !!!)
MIT License
390 stars 90 forks source link

make error #9

Closed david-loe closed 4 years ago

david-loe commented 4 years ago

When I Try to make I get the following error:

error: invalid use of template-name ‘Sophus::SE3’ without an argument list

Sophus Version: v1.0.0

Scanning dependencies of target basics
[  3%] Building CXX object src/CMakeFiles/basics.dir/basics/basics.cpp.o
[  7%] Building CXX object src/CMakeFiles/basics.dir/basics/config.cpp.o
[ 10%] Building CXX object src/CMakeFiles/basics.dir/basics/yaml.cpp.o
[ 14%] Building CXX object src/CMakeFiles/basics.dir/basics/eigen_funcs.cpp.o
In file included from /home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:1:0:
/home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:33:1: error: invalid use of template-name ‘Sophus::SE3’ without an argument list
 Sophus::SE3 transT_cv2sophus(const cv::Mat &T_cv);
 ^~~~~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:33:1: note: class template argument deduction is only available with -std=c++1z or -std=gnu++1z
In file included from /home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:13:0,
                 from /home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:1:
/usr/local/include/sophus/se3.hpp:8:7: note: ‘template<class Scalar_, int Options> class Sophus::SE3’ declared here
 class SE3;
       ^~~
In file included from /home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:1:0:
/home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:34:32: error: invalid use of template-name ‘Sophus::SE3’ without an argument list
 cv::Mat transT_sophus2cv(const Sophus::SE3 &T_sophus);
                                ^~~~~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:34:32: note: class template argument deduction is only available with -std=c++1z or -std=gnu++1z
In file included from /home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:13:0,
                 from /home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:1:
/usr/local/include/sophus/se3.hpp:8:7: note: ‘template<class Scalar_, int Options> class Sophus::SE3’ declared here
 class SE3;
       ^~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:36:1: error: invalid use of template-name ‘Sophus::SE3’ without an argument list
 Sophus::SE3 transT_cv2sophus(const cv::Mat &T_cv)
 ^~~~~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:36:1: note: class template argument deduction is only available with -std=c++1z or -std=gnu++1z
In file included from /home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:13:0,
                 from /home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:1:
/usr/local/include/sophus/se3.hpp:8:7: note: ‘template<class Scalar_, int Options> class Sophus::SE3’ declared here
 class SE3;
       ^~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:45:32: error: invalid use of template-name ‘Sophus::SE3’ without an argument list
 cv::Mat transT_sophus2cv(const Sophus::SE3 &T_sophus)
                                ^~~~~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:45:32: note: class template argument deduction is only available with -std=c++1z or -std=gnu++1z
In file included from /home/***/gettingToKnow/Monocular-Visual-Odometry/include/my_slam/basics/eigen_funcs.h:13:0,
                 from /home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:1:
/usr/local/include/sophus/se3.hpp:8:7: note: ‘template<class Scalar_, int Options> class Sophus::SE3’ declared here
 class SE3;
       ^~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp: In function ‘cv::Mat my_slam::basics::transT_sophus2cv(const int&)’:
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:47:38: error: request for member ‘translation’ in ‘T_sophus’, which is of non-class type ‘const int’
     Eigen::Vector3d eigen_t(T_sophus.translation());
                                      ^~~~~~~~~~~
/home/***/gettingToKnow/Monocular-Visual-Odometry/src/basics/eigen_funcs.cpp:48:38: error: request for member ‘rotation_matrix’ in ‘T_sophus’, which is of non-class type ‘const int’
     Eigen::Matrix3d eigen_R(T_sophus.rotation_matrix());
                                      ^~~~~~~~~~~~~~~
src/CMakeFiles/basics.dir/build.make:134: recipe for target 'src/CMakeFiles/basics.dir/basics/eigen_funcs.cpp.o' failed
make[2]: *** [src/CMakeFiles/basics.dir/basics/eigen_funcs.cpp.o] Error 1
CMakeFiles/Makefile2:208: recipe for target 'src/CMakeFiles/basics.dir/all' failed
make[1]: *** [src/CMakeFiles/basics.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
david-loe commented 4 years ago

Issue: Sophus Version was to new

uninstall Sophus V1.0.0 (rm -rf /usr/local/include/sophus)

reinstall sophus commit 'a621ff':

git clone https://github.com/strasdat/Sophus
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
make

as mentioned in the README you might get an error 'unitcomplex.real() = 1.', replace both lines with: 'unitcomplex = std::complex(1,0);' sudo make install (or copy files like descriped in README)