配置
拯救者y7000p2023
显卡RTX4060(最低安装CUDA11.3)
显卡驱动 535啥的
CUDA 11.3
libtorch 1.10.0
OPENCV 3.2.0
Pangolin 0.5
Eigen 3.3.7
第一遍摸索
报找不到eigen文件
在module里面 findeigen.cmake 33行改动目录所在
macro(_eigen3_check_version)
file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header)
报pangolin出错
Pangolin could not be found because dependency Eigen3 could not be found.
解决办法:
将
find_package(Eigen3 3.1.0 REQUIRED)
find_package(Pangolin REQUIRED)
改为:
find_package(Eigen3 3.1.0 REQUIRED NO_MODULE)
find_package(Pangolin REQUIRED)
找不到torch
Could not find a package configuration file provided by "Torch" with any of
the following names:
TorchConfig.cmake
torch-config.cmake
解决办法:
findpackage前加了
set(Torch_DIR "home/zyl/software/libtorch-shared-with-deps-1.11.0+cu113/libtorch/share/cmake/Torch")
build.sh 也改了路径 还是不对
加了set(CMAKE_CXX_STANDARD 14)
最后一句改成C ++14
cuda版本不对
CMake Error at /home/zyl/software/libtorch-shared-with-deps-1.11.0+cu113/libtorch/share/cmake/Caffe2/public/cuda.cmake:49 (message):
PyTorch requires CUDA 10.2 or above.
Ubuntu卸载CUDA
cd /usr/local/cuda-xx.x/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-xx.x
并且
sudo apt-get purge nvidia-cuda* sudo apt-get autoremove
发现此时cuda10.1 才被卸载
重新安装11.3
cudann
从cudnn复制文件到cuda中时,不止有cudnn.h了,还需要cudnn_version.h之类的,所以应该是
sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.3/include
还要赋予权限 直接把整个文件夹转作可读写了 sudo chmod -R 777 /usr/local/include/cuda-11.3/include
应该使用cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
检验安装版本
sh shell脚本一直还是说找不到cuda,但是自己写的cpp文件,包含torch头文件,明明可以正常跑通。
我尝试直接创建build文件夹进行cmake 竟然成功了 但是还不能make
ORB_SLAM安装问题error: ‘std::chrono::monotonic_clock’ has not been declared
出现这个问题的原因是C++版本之间存在区别。
在C++11版里已经没有momotonic_clock了,有steady_clock作为替代。
如果你这部分报错了,大概率你的C++是11版本,那么我们其实可以删掉这部分判断语句,只保留
std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now();
//Pass the image to the SLAM system
SLAM.TrackMonocular(im,tframe);
std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
//......
这部分就行,把monotonic_clock的代码删掉之后就能正常编译了!
数据模型修改
由于作者没有公布权重文件,在不用回到pytorch 1.0.1,仍然想使用pytorch1.4运行的话,需要做以下的修改:
用压缩工具软件打开gcn2_320x240.pt (不解压),在’/gcn/code/'下找到 ‘gcn.py’,定位到报错所在行(第67行):
_32 = torch.squeeze(torch.grid_sampler(input, grid, 0, 0))
~~~~~~~~~~~~~~~~~~ <--- HERE
在最后新添加一个参数’True’:
_32 = torch.squeeze(torch.grid_sampler(input, grid, 0, 0, True))
编译100%最后却出现很多pangolin的问题
差一点,显示pangolin的问题,想到应该下载0.5版本
报错参考 视觉SLAM十四讲 Ubuntu20.04 Pangolin 环境配置_pangolin-0.5-20.04_图南i的博客-CSDN博客
Ubuntu20.04中ros运行ORBSLAM2_with_pointcloud_map(采用D435相机实时运行)_总想这学习的博客-CSDN博客
这篇直接装上了 还是报pangolin的错阿
找到原因是libtorch不兼容C ++11 下载的版本不对 要Cxx11-abi的
下载链接https://download.pytorch.org/libtorch/cu113/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcu113.zip
成功build和make
重新来一遍
1.改动torch路径
2.改C++14 加一句set(CMAKE_CXX_STANDARD 14) 最后一句也改成14
3.改代码
GCNextractor.h 第99行:
std::shared_ptr<torch::jit::script::Module> module;
//改为
-
torch::jit::script::Module module;
GCNextractor.cc 第270行:
auto output = module->forward(inputs).toTuple();
//改为
auto output = module.forward(inputs).toTuple();
4.改模型
双击打开gcn2_320x240.pt (其他pt文件同理)(无需解压)/gcn/code/'下找到 ‘gcn.py’
#原 这是因为1.3以前默认true 1.3以后默认false
_32 = torch.squeeze(torch.grid_sampler(input, grid, 0, 0))
#改为
_32 = torch.squeeze(torch.grid_sampler(input, grid, 0, 0, True))
5.编译成功,运行没反应
原来是没有数据集,还有自己拼成associations.txt
6. 运行了 但是段错误
换成libtorch1.10.0-cuda11.3版本 这次好些了
7. 报gcn2……_py文件错
发现问题出在第4步,只改了320x420的最后一个参数 忘记改640x480的