AirVO代码复现

本文讲述了作者如何在OpenCV4.2.0基础上进行AirVO实验,解决与Ceres2.0.0、ROScv_bridge的冲突,以及如何调整TensorRT、G2O和自定义cv_bridge_new以适应深度学习特征点提取项目。
摘要由CSDN通过智能技术生成

最近想要做一个基于深度学习的特征点的提取的VO实验平台,所以就想拿AirVO作为基础在上面进行改动。

实验环境

  • OpenCV 4.2.0 (安装的时候会与Ceres 2.0.0冲突)
  • Eigen 3
  • Ceres 2.0.0
  • G2O (tag:20230223_git)
  • TensorRT 8.4
  • CUDA 11.6
  • python
  • onnx
  • ROS melodic(官方给的是noetic)
  • Boost
  • Glog

安装OpenCV 4.2.0

在配置中,OpenCV会和Ceres 2.0.0 ,ROS 中的cv_bridge起冲突。这个后面会介绍到。

  1. 下载OpenCV的源码
    https://opencv.org/releases/
  2. 下载OpenCV-contrib
    https://github.com/opencv/opencv_contrib,要选择下载tag4.2.0的opencv_contrib,并解压放到OpenCV4.2的源码里面。
  3. 在编译OpenCV之前,要先安装1.14.0版本的Ceres库,因为在OpenCV中使用的是g++11,而2.0.0版本的Ceres所用的是g++14,会产生冲突。
    git clone https://github.com/ceres-solver/ceres-solver.git
    cd ceres-solver
    git checkout -b master 1.14.0
    mkdir build
    cd build
    cmake ..
    make 
    sudo make install
    
  4. 编译OpenCV
    cd opencv-4.2.0
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=Release \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D CMAKE_INSTALL_PREFIX= 安装目录\
    -D OPENCV_EXTRA_MODULES_PATH= opencv-contrib的module文件夹的绝对路径 ..
    make -j8
    sudo make install
    
    后面在CMakeLists.txt中找OpenCV文件可以通过这个build文件夹来找:
    set(OpenCV_DIR "/home/andre/Documents/utils/opencv/opencv-4.2.0/build")
    find_package(OpenCV 4.2 REQUIRED)
    

安装g2o

git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o 
git checkout -b master 20230223_git
mkdir build
cd build
cmake ..
make
sudo make install

下载TensorRT 8.4

https://developer.nvidia.com/nvidia-tensorrt-8x-download
找个地方解压出来就可以,不需要编译

编译AirVO

  1. 先将ceres的版本变成2.0.0
    cd ceres-solver
    git checkout -b master 2.0.0
    mkdir build
    cd build
    cmake ..
    make
    sudo make install
    
  2. 下载AirVO,然后编译(这里用的是官方的教程)
    cd ~/catkin_ws/src
    git clone https://github.com/xukuanHIT/AirVO.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash
    
  3. 在这里有可能会编译成功,但是运行的结果会没有任何信息的停止,这是由于ROS中的cv_bridge与当前OpenCV4版本存在冲突,因此我们需要为这个工程编译一个自己的cv_bridge.
    请添加图片描述
  4. 下载cv_bridge
    下载地址:链接
    不管是melodic还是noetic都下载noetic版本。
  5. 将cv_brige拷贝到ros工作空间的src下,为了不影响原来的包,将这个文件夹重命名为cv_bridge_new,并将文件夹下CMakeLists.txt文件中project名称修改为cv_bridge_new
    prject(cv_bridge_new)
    
    并且修改package.xml中包的名称:
    	<package format="2">
      <name>cv_bridge_new</name>
    ...
    
    在 CMakeLists.txt 文件中指定我们自己的功能包中所用的 opencv4:
    ...
    set(OpenCV_DIR opencv路径/opencv/build)
    set(_opencv_version 4)
    find_package(OpenCV 4 QUIET)
    ...
    
  6. 编译cv_bridge
    cd 到工作空间的根目录下,执行
    catkin_cmake
    
    如果是ros melodic 会有两个问题:
    	 Could not fild the following Boost libraries:
    	boost_python37
    
      可以直接修改CMakeLists文件:
    
    ...
    if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
    # Debian Buster
    find_package(Boost REQUIRED python3)
    ...
    

继续编译还会发现错误
请添加图片描述
修改cv_bridge_new/src/module.hpp文件下的void * do_numpy_import()函数为:

static void do_numpy_import( )
{
    import_array( );
}

修改完成后,就能成功通过编译。
7. 将AirVO中的CMakeLists.txt中的cv_bridge替换为 cv_bridge_new
8. 将package.xml文件中的cv_bridge也替换为cv_bridge_new这样程序就能顺利运行了
在这里插入图片描述

  • 17
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值