报错信息:
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:102:CMakeFiles/ORB_SLAM2.dir/src/LoopClosing.cc.o] 错误 1
make[2]: *** 正在等待未完成的任务....
make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:219:CMakeFiles/ORB_SLAM2.dir/src/Optimizer.cc.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:250:CMakeFiles/ORB_SLAM2.dir/all] 错误 2
make: *** [Makefile:84:all] 错误 2
向上翻找error:
In file included from /usr/include/c++/9/map:61,
from /home/lhq/catkin_ws/src/ORB_SLAM2/Thirdparty/DBoW2/DBoW2/BowVector.h:14,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/Frame.h:27,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/MapPoint.h:25,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/KeyFrame.h:24,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/LoopClosing.h:24,
from /home/lhq/catkin_ws/src/ORB_SLAM2/src/LoopClosing.cc:22:
/usr/include/c++/9/bits/stl_map.h: In instantiation of ‘class std::map<ORB_SLAM2::KeyFrame*, g2o::Sim3, std::less<ORB_SLAM2::KeyFrame*>, Eigen::aligned_allocator<std::pair<const ORB_SLAM2::KeyFrame*, g2o::Sim3> > >’:
/home/lhq/catkin_ws/src/ORB_SLAM2/src/LoopClosing.cc:439:21: required from here
/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
122 | static_assert(is_same<typename _Alloc::value_type, value_type>::value,
| ^~~~~
In file included from /usr/include/c++/9/map:61,
from /home/lhq/catkin_ws/src/ORB_SLAM2/Thirdparty/DBoW2/DBoW2/BowVector.h:14,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/KeyFrame.h:25,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/MapPoint.h:24,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/Map.h:24,
from /home/lhq/catkin_ws/src/ORB_SLAM2/include/Optimizer.h:24,
from /home/lhq/catkin_ws/src/ORB_SLAM2/src/Optimizer.cc:22:
/usr/include/c++/9/bits/stl_map.h: In instantiation of ‘class std::map<ORB_SLAM2::KeyFrame*, g2o::Sim3, std::less<ORB_SLAM2::KeyFrame*>, Eigen::aligned_allocator<std::pair<const ORB_SLAM2::KeyFrame*, g2o::Sim3> > >’:
/home/lhq/catkin_ws/src/ORB_SLAM2/src/Optimizer.cc:819:37: required from here
/usr/include/c++/9/bits/stl_map.h:122:71: error: static assertion failed: std::map must have the same value_type as its allocator
122 | static_assert(is_same<typename _Alloc::value_type, value_type>::value,
改正:
将 from /home/lhq/catkin_ws/src/ORB_SLAM2/include/LoopClosing.h:24,中loopclosing文件49行
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > > KeyFrameAndPose;
改为
typedef map<KeyFrame*,g2o::Sim3,std::less<KeyFrame*>,
Eigen::aligned_allocator<std::pair<KeyFrame *const, g2o::Sim3> > > KeyFrameAndPose;