1.环境依赖:(环境依赖按照ORB-SLAM2执行,基本SLAM环境搭建流程)
2.OpenCV安装(版本>2.7),我安装了openCV-3.4.13(contrib)
注:后面编译安装DBoW2要求openCV版本
3.创建ROS工作空间
4.Multimot_Tracking 下载编译安装
(1)源码下载:GitHub - halajun/multimot_track: A Multi-motion Visual Odometry System for Dynamic Environments
(2)解压,并将其放到catkin_ws/src下(即创建的工作空间下)
(3)编译安装:(一步一步编译,不要直接按照README操作)
打开build.sh;
①编译DBoW2:
cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
注:如果OpenCV版本没有达到要求,会报错
②编译g2o:
1)添加C++11标准
cd ../../g2o #进入g2o目录
sudo gedit CMakeLists.txt
CMakeLists.txt文件中添加
SET(CMAKE_CXX_FLAGS "-std=c++11") # Add c++11 functionality
2)编译
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
注:常见Error
make过程中:
Error1: ‘XXX’ was not declared in this scope
解决办法:在g2o目录下CMakeLists.txt文件中
sudo gedit CMakeLists.txt
添加
#include <cstdlib>
保存退出;
Error2:‘unordered_map’ in namespace ‘std’ does not name a template type
typedef std::unordered_map<int, Vertex*> VertexIDMap;
解决办法:在对应.cpp或者.h文件(报错处)添加头文件,
#include <unordered_map>
保存退出;
解决上述报错后,重启终端,进入build目录内清除上次编译,
rm -rf *
再次进行编译。
③ 解压ORB词典:
cd Vocabulary
tar -xf ORBvoc.txt.tar.gz
cd ..
④multimot_track编译安装:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j
注:Error集锦
Error1:cmake时,提示image.cpp找不到
原因:作者提供的源码就写错了
解决办法:
进入multimot_track/src/flow,
讲该目录下的 lmage.cpp 改成 image.cpp
Error2: make 过程中,找不到Opengv下某个文件
未安装Opengv依赖库
git clone https://github.com/laurentkneip/opengv
cd opengv
mkdir build && cd build && cmake-gui ..
make -j8
sudo make install
Error3:Linux系统识别不了libDBoW2.dylib文件
原因:作者在Mac上运行,(文件在Thirdparty/DBoW2/lib下)
解决办法:
修改multimot_track目录下CMakeLists.txt:
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.dylib
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.dylib
修改为:
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
保存退出;
解决上述报错后,重启终端,进入build文件清除上次编译,
rm -rf *
再次进行编译。
编译完成后参照README运行demo