ubuntu16.04安装orb_slam2 安装填坑

1.OPENCV3.2.0安装包离线包

protobuf-cpp-3.1.0  离线包,无需解压(折腾2天找到的解决方案)

借助CMAKE GUI

以上折腾都没办法,最终配置完成解决方案   cmake_gui方法

https://blog.csdn.net/jindunwan7388/article/details/80397700

所有下载文件上传网盘。

地址如下:

 opencv-contrib3.2 cmake编译时缺少的一些文件 包含 vgg_generated  boostdesc_binboost_128.i

http://www.pudn.com/Download/item/id/3202079.html

 

cuda 与opencv 兼容性问题

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)

http://osask.cn/front/ask/view/352274

2.

Build output check failed:
    Regex: 'command line option .* is valid for .* but not for C\+\+'
    Output line: 'cc1plus: warning: command line option ‘-Wmissing-prototypes’ is valid for C/ObjC but not for C++'
Compilation failed:
    source file: '/home/jhros/opencv-3.3.0/build/CMakeFiles/CMakeTmp/src.cxx'
    check option: ' -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations  -Wmissing-prototypes
如果有如下问题,请在编译选项添加
CMAKE_C_COMPILER=/usr/bin/gcc-5
即可解决问题

 

解决 C++11编译问题 在编译项增加

-D CUDA_HOST_COMPILER=/usr/bin/g++-5 \   
-D CUDA_PROPAGATE_HOST_FLAGS=oFF \
-D CMAKE_CXX_FLAGS="-std=c++11" \    

https://github.com/BVLC/caffe/issues/6358

其他编译报错 这个比较全面

https://blog.csdn.net/weixin_38354109/article/details/78795861?utm_source=blogxgwz3

3.OPENCV最终编译指令

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=/home/peter/catkin_ws/src/opencv-3.2.0/opencv_contrib/modules \
-D PYTHON_EXCUTABLE=/usr/bin/python2.7 \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
-D CUDA_ARCH_BIN="6.1" \
-D CUDA_ARCH_PTX="" \
-D CUDA_FAST_MATH=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D CMAKE_C_COMPILER=/usr/bin/gcc-5 \
-D CUDA_HOST_COMPILER=/usr/bin/g++-5 \   
-D CUDA_PROPAGATE_HOST_FLAGS=oFF \
-D CMAKE_CXX_FLAGS="-std=c++11" \    
-D BUILD_TIFF=ON \
-D BUILD_EXAMPLES=ON ..


4.OPENCV 环境变量配置

https://www.linuxidc.com/Linux/2012-08/68701.htm

https://blog.csdn.net/zong596568821xp/article/details/80393810

 

 

5. ROS依赖库opencv修改

报错提示

/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFWriteEncodedStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFRGBAImageOK@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetWarningHandler@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFNumberOfStrips@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadEncodedTile@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBATile@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFOpen@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadEncodedStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetErrorHandler@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用
 

ros当中也会有openCV的部分库,并且当包含cv_bridge用来转换摄像机的数据时,自己会调用ros当中的库。所以就出现了之前的问题。修改的关键是修改一些cmake文件,设置openCV的调用位置。有建议修改 /opt/ros/kinetic/share/cv_bridge/cmake/cv_bridge-extras.cmake,

set(OpenCV_CONFIG_PATH /home/peter/catkin_ws/src/opencv-3.2.0/build)
set(OpenCV_INSTALL_PATH /home/peter/catkin_ws/src/opencv-3.2.0)
#set(OpenCV_CONFIG_PATH /opt/ros/kinetic/share/OpenCV-3.3.1-dev)
#set(OpenCV_INSTALL_PATH /opt/ros/kinetic)

但是没用。

https://blog.csdn.net/weixin_41120855/article/details/81783081

https://blog.csdn.net/bigdog_1027/article/details/79092263

你可能感兴趣的:(SLAM)