slam
这里只是对项目进行编译,不涉及代码与原理。
本机硬件环境:
- RTX3080
- ubuntu18.04
- cuda11
- cudnn8.xx
1. darknet编译
因为我是用的3080,Thirdparty/darknet
下的darknet
暂时还不支持,而且3080的gpu算力是86
,所以需要做如下修改:
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_50,code=sm_50) #for maxwell
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_52,code=sm_52) #for maxwell
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_60,code=sm_60) #for pascal
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_61,code=sm_61) #for pascal
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_62,code=sm_62) #for jetson tx2
LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_86,code=sm_86) #for jetson tx2
#https://developer.nvidia.com/cuda-gpus
add_definitions(-DGPU)
# add_definitions(-DCUDNN)
然后就能编译了。
2. DBoW2,g2o
这两个的编译直接按build.sh
中的命令进行编译就好了
3. orb-slam2_with_semantic_labelling
- 修改gpu算力
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_35,code=sm_35) #for gtx9XX
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_50,code=sm_50) #for maxwell
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_52,code=sm_52) #for maxwell
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_60,code=sm_60) #for pascal
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_61,code=sm_61) #for pascal
# LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_62,code=sm_62) #for jetson tx2
LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_86,code=sm_86) #for 3080
- 把find_package中的版本号删掉,不然版本不对会报错。
find_package(Eigen3 REQUIRED)
find_package(Pangolin REQUIRED)
find_package(PCL REQUIRED)
find_package(OpenCV REQUIRED)
find_package(CUDA REQUIRED)
find_package(OpenMP)
-
注释掉
# set(PCL_INCLUDE_DIRS /usr/include/pcl-1.8)
,如果通过apt-get安装的pcl,或者pcl为1.7,就不会在这个路径下了 -
报错
pcl::search::Searchpcl::PointXYZ::getName() const
在顶部包含以下头文件,这是pcl1.7到1.8引起的。
#include <pcl/search/impl/search.hpp>
#include <pcl/impl/instantiate.hpp>
#include <pcl/point_types.h>