orb_slam2 with labelling遇到问题总结
1.前面基本按照作者大佬的git进行配置:
ubuntu18.04+CUDA-8.0+opencv2.4.8+pcl-1.8+Eigen3.2+g+±5.5
在配置之前,需要先将gcc-7.5降到gcc-5.5,这点最开始就用软连接的方式弄好,不然后面会很麻烦;
CUDA-8.0必须要gcc-6以前才能编译成功,没办法;;
建议用opencv2.4.8,先踩了opencv3.4的坑,后面装了2.x和3.x两个。。。
编译时最好将2.4.8单独再新建一个文件夹/usr/local/opencv2.4。。。
将CUDA和FFmpeg关掉。
源代码编译pcl-1.8,ubuntu自带1.7,但是个人感觉不太好用,安装之前,相关依赖要装好,还有VTK这些。
Eigen3.2就正常源代码编译就好。
2.然后工程编译成功之后,运行出现segmention fault;
分析感觉是可视化的问题,pangolin和pcl库的原因
3.向作者大佬请教之后将pcl-1.8加上c++11之后重新编译了以下。
SET(CMAKE_C_COMPILER “/usr/bin/gcc-5”)
SET(CMAKE_CXX_COMPILER “/usr/bin/g+±5”)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11”)
#add_definitions(-std=c++11)
3.将YOLO3.weights放入bin中,并新建img文件夹;
系统可以运行了,但是出现几帧之后退出的情况。
中间也想了一些办法,但是好像YOLOv3SE与pcl有冲突。
后来发现应该是跟pangoline冲突了,而且这个库用起来不太友好,所以准备换个思路。
4.跟作者大大沟通之后,决定用torch版本的YOLOv3库来代替libYOLOv3SE,后续测试情况再来更新。。。
来更新啦。。。。
首先把相关环境更新了一下:CUDA10.1+cudnn7.5+OpenCV3.4
1)下载libtorch-yolov3库,git地址libtorch-yolov3
2)在pytorch官网下载libtorch
(这一步官网只有最新的1.5的链接,但是从1.5开始,编译需要使用c++ 14的标准,如果要用之前版本的可以参看libtorch不同版本)
这个工程中我为了避免兼容性问题使用的是libtorch-1.4-cu101
一个重要的问题:
一定要写在带有-cxxabi的libtorch非预编译版本,不然后面编译orb_slam2 with labelling会出现未定义的引用
具体见libtorch与pangolin的冲突
3)编译libtorch-yolov3
mkdir build
cmake -DCMAKE_PREFIX_PATH="your libtorch path" ..
make
./yolo-app ../imgs/dog.jpg
期间cmake可能会出现
忽略就行,应该能出结果了。
4)测试完之后将libtorch-yolov3整合进工程中的PointcloudMapping::viewer
中即可
5)编译过程中还遇到一个问题
usr/include/vtk-6.2/vtkAtomicInt.h:307:28: error: reference to ‘detail’ is ambiguous.
解决方法见VTK detail错误
完整配置下来就可以正常使用了,我的实际测试图。