0%

Object SLAM部署过程

系统代码包下载地址为github地址,论文为(Liu 等, 2023).

1 ORB-SLAM2基础问题

该算法是在ORB-SLAM2 的基础上进行改进的,编译过程可参考ORB-SLAM2的部署教程,此处不再赘述。除此之外,本人在部署过程中还遇到了其他问题,这里记录一下。

2 其他问题

  • PCL 报错:

error: #error PCL requires C++14 or above

参考这篇文章解释,使用C++14编译器,更改主目录下的CMakeLists.txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
### 修改前
# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++11.")


### 修改后
# Check C++11 or C++0x support
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
add_definitions(-DCOMPILEDWITHC11)
message(STATUS "Using flag -std=c++14.")

修改完之后不再报错,可正常编译。

  • 针对不同的输入图片,需要设置不同的通道变换方式,否则会报与数据通道相关的错误,如下图所示;修改方法为修改frame.cc 代码 392行附近的内容:

err1

1
2
3
4
5
6
7
//* for gray pictures (e.g. KITTI-odometry dataset)
cv::Mat imRGB_1;
cv::cvtColor(imRGB.clone(), imRGB_1, CV_GRAY2BGR);
cv::cvtColor(imRGB_1.clone(), Img_HSV, CV_BGR2HSV);

//* for RGB pictures (e.g. TUM dataset)
// cv::cvtColor(imRGB.clone(), Img_HSV, CV_BGR2HSV);
  • 在VS Code 里对程序进行调试运行时,可能会报错:

err2

1
2
## 只有在VS Code 中调试才会出现该错误,解决办法是在VS Code 中unset GTK_PATH即可:
unset GTK_PATH