写在前面
本文对ORBSLAM2_SSD_Semantic进行了配置并且跑通了数据集,其中对使用RGBD摄像头rgbd_my.cc编译未通过,仅出现一个函数未解决的情况,这里给出详细的配置过程,按照此过程可以容易的完成数据集程序rgbd_tum.cc的编译,跑通数据集。
实验环境
电脑配置:
Processor:AMD Ryzen 7 4800H
Graphics:NVIDIA GEFORCE GTX 1650Ti
Memory: 16GB
OS Details: Ubuntu 16.04 LTS 64-bit
依赖配置:
基础的orbslam的各种依赖
ncnn库
vulkan库
camport库
等等
详细依赖在配置过程中提供
源码下载
首先克隆源码
git clone https://github.com/Ewenwan/ORB_SLAM2_SSD_Semantic.git
完成源码下载后,我们可以看到
在ORB_SLAM2_SSD_Semantic文件目录下有一个perfect文件夹
进入文件夹双击打开即为我们要编译的程序目录
首先进行编译
# 编译
mkdir build
cd build
cmake ..
make
下面针对出现的问题,来找对应的修改方法
Eigen3问题
Could not find a configuration file for package "Eigen3" that is compatible with requested version "3.1.0".
修改perfect文件夹下的CMakeLists.txt
将51行作出如下修改
find_package(Eigen3 3.1.0 REQUIRED)
//修改为
find_package(Eigen3 REQUIRED)
找不到第三方库问题
DBOW2和g2o
cmake成功后,如果找不到第三方库,出现error DBOW2 g2o问题
我们打开CmakeList.txt
发现120行和121行程序是要去Thirdparty下的两个文件夹去找静态库链接文件
我们打开,惊奇的发现,这俩文件夹里都是空的。。。
于是我们拿之前配置好的ORB_SLAM2里的两个文件夹拷贝过来(记得分别建立build文件夹对这两个进行编译),然后再进行编译
ncnn
如果选择自行下载可以使用
cmake成功后,如果找不到第三方库,出现error ncnn问题
同理,这个时候要去配置ncnn库
本人参考如下文章
Ubuntu16.04---腾讯NCNN框架入门到应用_ruyiweicas的博客-CSDN博客
首先git一下ncnn库到之前到perfect/Thirdparty下
git clone https://github.com/Tencent/ncnn.git
当你git下来后,会发现在glslang文件夹下并没有文件存在,我们再返回到ncnn的github网页中,点击glslang文件夹跳转到新的页面,把内容git到ncnn文件夹里的glslang文件夹中
cd ncnn
git clone https://github.com/KhronosGroup/glslang.git
准备好之后,再进行编译
net.h:No such file or directory
将ORB_SLAM2_SSD_Semantic/realtime_dect_loc/include/ncnn中的所有文件拷贝到Thirdparty下的ncnn文件夹中即可
./ty/common/common.hpp: No such file or directory compilation terminated.
代码里面没找到这个common.hpp文件
将ORB_SLAM2_SSD_Semantic/realtime_dect_loc/include中的ty文件夹,拷贝到ORB_SLAM2_SSD_Semantic/perfect/Examples/RGB-D中
再编译即可
如果出现
undefined reference to symbol '_ZN5boost6system15system_categoryEv'
参考我的这篇文章中解决boost的方法,这里我还在原目录中添加了lib文件夹,加入了关于boost的静态链接库等,修改了CMakeList文件,相关修改粘贴在下方
#boost
find_package(Boost COMPONENTS system)
#包含库文件
include_directories(
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/include
${EIGEN3_INCLUDE_DIR}
${Pangolin_INCLUDE_DIRS}# 可视化gui
-lboost_system
${PCL_INCLUDE_DIRS}#点云库
${Boost_LIBRARIES}
# 自建库生成路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
set(LIBS
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${Boost_LIBRARIES}
${PROJECT_SOURCE_DIR}/../lib/libboost_filesystem.so
${PROJECT_SOURCE_DIR}/../lib/libboost_system.so
-lboost_system
)
set(NCNN_TARGET_LIB ncnn) # ncnn 库
# 连接库文件
target_link_libraries(
${PROJECT_NAME}
${LIBS}
${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
${PCL_LIBRARIES}
${Boost_FILESYSTEM_LIBRARY}
${OCTOMAP_LIBRARIES} # octomap
-lboost_system
${NCNN_TARGET_LIB}
-fopenmp
)
-lncnn -ltycam
如果出现-lXXX 的问题就是在usr/local 和usr/lib 下没有找到静态库
进入ncnn,文件夹,进行编译
cd ncnn
mkdir build
cmake ..
make -j32
如果出现avx512相关的错误,那么需要进一步修改CMakeLists
修改位于ncnn里面的CMakeLists
搜索AVX,将从378行开始的,关于AVX的(或者只看AVX512)的option(NCNN_FMA "optimize x86 platform with fma extension" ON)中的ON更改为OFF,此时删除掉build中的文件,重新cmake
编译完成后进入ncnn/build/src中可以看到链接库libncnn.a
cd ncnn/build/src
sudo cp -n libncnn.a /usr/include
sudo cp -n libncnn.a /usr/lib
同理-ltycam库需要我们去下载camport3
git clone https://github.com/percipioxyz/camport3.git
cd camport3/lib/linux/lib_x64
将里面的两个文件拷贝到上述两个文件夹内
sudo cp -n libtycam.so /usr/include
sudo cp -n libtycam.so /usr/lib
sudo cp -n libtycam.so.3.6.9 /usr/include
sudo cp -n libtycam.so.3.6.9 /usr/lib
TYRegisterWorldToColor2
这个问题是我配置的最后一步,导致我无法将rgbd_my成功编译,如果去掉这个函数就能够正常编译,因此等一个大佬指点一下,谢谢了
rgbd_tum.cc
编译这个首先修改perfect文件夹下的CMakeLists
将第153行处修改
add_executable(rgbd_ty
Examples/RGB-D/my_rgbd.cc)
target_link_libraries(rgbd_ty
${PROJECT_NAME}
${TY_TARGET_LIB}
)
//===========修改为============
add_executable(rgbd_tum
Examples/RGB-D/rgbd_tum.cc)
target_link_libraries(rgbd_tum
${PROJECT_NAME}
${TY_TARGET_LIB}
)
然后编译即可得到tum程序
运行
具体操作跟上一篇实验内容相同,以下仅放效果图
附:其余可能出现的问题
ubuntu下 vulkan + ncnn环境搭建 - 灰信网(软件开发博客聚合)
图漾深度相机初步使用流程_Ketone Olefine的博客-CSDN博客_图漾深度相机
Ubuntu16.04 编译时出现fatal error: vulkan/vulkan.h没有文件_Alpha-Go的博客-CSDN博客