合众xavier NX板卡上部署vins-fusion-gpu总结(包含装opencv3.4.1 opencv_contrib3.4.1 cv_bridge)20220831

1 卸载原有opencv

首先卸载之前已有的opencv,指卸载opencv3,opencv4可以保留,不需要像以前那么下面命令暴力地卸载opencv,这虽然会把opencv删掉(之前二进制安装的cv_bridge会被一起删了),但是也会把一些没必要删掉的东西也都删了。rqt相关的也都删了。

sudo apt-get purge libopencv*
sudo apt autoremove

如果是之前源码编译安装的opencv,只需要在opencv的build文件夹下运行sudo make uninstall进行卸载即可。是否卸载成功可以通过pkg-config --modversion opencv命令查看opencv版本来判断,如果查找不到opencv了,代表OK。有opencv4没有关系。

2 源码编译安装opencv3.4.1和opencv_contrib3.4.1

单纯的vinsfusiongpu不需要装opencv_contrib,因为我相同的环境下还需要跑aruco二维码检测,所以把opencv_contrib也一起装上 新建一个opencv341文件夹,在里面下载3.4.1的opencv和opencv_contrib,使得opencv和opencv_contrib同在opencv341文件下。

git clone -b 3.4.1 https://github.com/opencv/opencv.git
git clone -b 3.4.1 https://github.com/opencv/opencv_contrib

然后在opencv文件夹下新建一个build文件夹,并运行下面命令

cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D WITH_CUDA=ON \
        -D CUDA_ARCH_BIN=7.2 \
        -D CUDA_ARCH_PTX="" \
        -D ENABLE_FAST_MATH=ON \
        -D CUDA_FAST_MATH=ON \
        -D WITH_CUBLAS=ON \
        -D WITH_LIBV4L=ON \
        -D WITH_GSTREAMER=ON \
        -D WITH_GSTREAMER_0_10=OFF \
        -D WITH_QT=ON \
        -D WITH_OPENGL=ON \
        -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
        -D WITH_TBB=ON \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
         ../

OPENCV_EXTRA_MODULES_PATH参数后面的路径要和实际opencv_contrib的路径对应 在NX上 CUDA_ARCH_BIN=7.2 ,在其他平台上这个参数值需要改 CMAKE_INSTALL_PREFIX对应sudo make install的时候实际的安装路径,修改后面的路径可以opencv所安装的文件夹。

上面命令运行完后接着运行下面命令

make -j8

会遇到一些报错,基本是一些常见的报错,可以通过百度解决,基本都是xfeatures2d这个模块在报错,具体报错和解决方法如下所示。

报错一

输入图片说明

解决方法,把对应cpp里的头文件路径改为绝对路径,也可以在cmakelists里面加入头文件所在的路径,让其可以找到此头文件,比如在cmakelists里面加上这句。

INCLUDE_DIRECTORIES("/home/nvidia/opencv341/opencv_contrib/modules/xfeatures2d/include")

输入图片说明

报错二

输入图片说明

解决方法 参照 ubuntu安装OpenCV 及遇到的问题_libopencv_imgcodecs.so.3.4.5: undefined reference -CSDN博客

输入图片说明

输入图片说明

由上图改为下图这样

输入图片说明

报错三

输入图片说明

解决方法,里面所需要拷贝的文件我也有保存到百度网盘里 fatal error: boostdesc_bgm.i:No such file or directory_fatal error: boostdesc_bgm.i: no such file or dire-CSDN博客

输入图片说明

我是直接把这几个文件拷贝到opencv_contrib/modules/xfeatures2d/src/目录下,不是把整个boostdescetc文件夹拷贝到opencv_contrib/modules/xfeatures2d/src/目录下,是拷贝文件不是拷贝目录

报错四

输入图片说明

我按照这篇文章的方法对于opencv2/xfeatures2d/cuda.hpp: No such file or directory 类问题的解决方法-CSDN博客 把对应头文件的路径改为绝对路径

输入图片说明

输入图片说明

输入图片说明

由上图改为下图这样

输入图片说明

报错五

输入图片说明

我还是想试一下加绝对路径的方法,这么弄是OK的,把头文件的路径改为绝对路径

输入图片说明

输入图片说明

输入图片说明

报错六

输入图片说明

还是继续把对应头文件路径改为绝对路径,都摸索出规律出来了

输入图片说明

输入图片说明

由上图改为下图这样

输入图片说明

依次解决完上面六个报错,就可以最后百分之百编译通过了,每次解决完报错,继续运行make -j8即可,不用清零从头开始编译。

make完了之后可以运行下面命令安装到系统目录

sudo make install

通过pkg-config --modversion opencv命令查看opencv版本是不是3.4.1来判断是否安装成功

3 源码编译安装cv_bridge

先卸载之前二进制安装的cv_bridge(会导致二进制安装的realsense2_camera功能包也跟着被自动卸载)

sudo apt-get purge ros-melodic-cv-bridge

下源码编译安装cv_bridge

mkdir -p cv_bridge_ws/src
cd cv_bridge_ws/src
git clone https://gitee.com/bingobinlw/cv_bridge    //这个仓库已经fork
cd ..

将opencv编译生成的build文件路径加入到CMakeLists.txt,个人感觉这步不加也可以应该,因为系统可以自动找到opemcv3.4.1了,保险起见还是加上。

set(OpenCV_DIR "your-path/opencv/build")
catkin_make

把cv_bridge的功能包路径添加到bashrc里面,使得系统可以自动找到cv_bridge功能包

echo "source ~/cv_bridge_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

4 部署vins-fusion-gpu

前提需要先装好ceres 1.14.0 code_utils 不需要改vins-fusion-gpu里面的cmakelists,因为现在系统是可以自动找到opencv3.4.1的,包括使用其他功能包或者库编译的时候,不需要特地修改cmakelists指定opencv的路径。

安装1.14.0的ceres

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libeigen3-dev libgtest-dev
​
git clone -b 1.14.0 https://github.com/ceres-solver/ceres-solver.git     //官方仓库
cd ceres-solver/
mkdir build
cd build
cmake ..
make
sudo make install

安装code_utils功能包

在和vinsfusiongpu通一个工作空间的src文件夹下下载

git clone https://github.com/gaowenliang/code_utils.git   //这是官方仓库
sudo apt-get install libdw-dev 

不装编译会有这个报错

输入图片说明

在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"#include “code_utils/backward.hpp” 不然编译会有下面这个报错

输入图片说明

然后在工作空间根目录下用catkin_make编译 再在工作空间根目录下下vinsfusiongpu,可以去vinsfusiongpu官方仓库下,下speed_opti分支GitHub - pjrambo/VINS-Fusion-gpu: This repository is a version of VINS-Fusion with gpu acceleration. It can run on the Nvidia TX2 in realtime

git clone b speed_opti https://github.com/pjrambo/VINS-Fusion-gpu/tree/speed_opti

下面命令是克隆个人的仓库,建议用上面官方vinsfusiongpu仓库。 

git clone -b 对应分支 https://gitee.com/maxibooksiyi/vins-fusion-gpu-speed_opti.git

 

然后再在工作空间根目录下用catkin_make编译,按照上面配置好的环境,编译通过是没有问题的。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值