Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0

这篇具有很好参考价值的文章主要介绍了Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备工作:

(1)电脑装有 NVIDIA 显卡

(2)安装 ROS noetic/Installation/Ubuntu - ROS Wiki

(3)安装 cuda Ubuntu安装cuda_GXU_Wang的博客-CSDN博客

(4)安装 ceres 1.14.0 Ubuntu20.04安装Ceres1.14.0_我是你de不死的bug的博客-CSDN博客

一、安装OpenCV 4.6.0

下载 opencv 源码,选择所需要的版本 opencv 4.6.0,相应的扩展opencv_contrib 4.6.0,以及用于桥接 ROS 和 opencv 的 cv_bridge

Release OpenCV 4.6.0 · opencv/opencv · GitHub

Release 4.6.0 · opencv/opencv_contrib · GitHub

https://github.com/ros-perception/vision_opencv/tree/

考虑将 opencv 安装在 /usr/local/opencv-4.6.0下,移动opencv及其扩展模块并进入工作目录

sudo mv ./opencv-4.6.0/ /usr/local/
sudo mv ./opencv_contirb-4.6.0/ /usr/local/
cd /usr/local/opencv-4.6.0/

编译前现确定 opencv 的安装路径,我的安装路径是

CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0

确定自己显卡的算力

CUDA GPUs - Compute Capability | NVIDIA Developer

注意 cuda 要根据自己的需求安装,不要装 cuda 12 编译会报错,可以装稍微低一点,可以参考

不同版本CUDA支持的算力_WenZhaoYang123468的博客-CSDN博客

编译 opencv 4.6.0,

sudo mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0 \
        -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules \
        -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 \
        ..

电脑性能好的话可以多核编译 make -j8,如果出现兼容性错误的花建议用 make,速度慢一点

make -j8
sudo make install

这里编译会很慢,耐心等待,只要一开始没有什么报错后面就不会报错。

二、配置自己的 cv_bridge 功能包

因为 opencv 的数据和 ROS 的数据需要转化,因此需要通过 cv_bridge 这个桥接工具,接下来我们介绍怎么自己下载安装并配置一个自己的 cv_bridge 功能包。

首先,创建一个 ROS 的工作空间

mkdir -r ~/cv_bridge_460/src/
cd ~/cv_bridge_460/src/

然后,下载对应版本的源码,因为是 Ubuntu 20.04 因此下载 noetic 版本

GitHub - ros-perception/vision_opencv at noetic

下载完成后解压到 ~/cv_bridge_460_ws/src/ 目录下,因为我们只需要 cv_bridge,所以只需保留 cv_bridge 文件夹,将其放在 ~/cv_bridge_460_ws/src/,重命名为cv_bridge_460,然后修改一下 cv_bridge_460 的配置文件。

(1)CMakeLists.txt 文件

在 set(_opencv_version 4) 前面添加你的 opencv 安装路径,大概在第 20 行

set(OpenCV_DIR /usr/local/opencv-4.6.0/build/)
set(_opencv_version 4)
find_package(OpenCV 4 QUIET)

另外由于是自己制作的 cv_bridge 对应于 opencv 4.6.0 版本的功能包,因此最好将包名该一下,我这里是改成 cv_bridge_460

# project(cv_bridge)
project(cv_bridge_460)

(2)package.xml

同理在 package.xml 中也改一下报名

<package format="2">
#  <name>cv_bridge</name>
  <name>cv_bridge_460</name>

然后编译这个功能包

cd ~/cv_bridge_460_ws/
catkin_make

如果编译成功,则 cv_bridge_460 功能包制作就完成了,这也说明 opencv 4.6.0 已经正确安装了,并且这个cv_bridge_460 功能包可以正确连接上自己安装的 opencv 版本,最后我们将这个功能包的路径添加到 ~/.bashrc 文件夹中,使得我们在后面编译 vins-fusion-gpu 时可以调用这个 cv_bridge_460 功能包,打开 ~/.bashrc文件夹,在最后加入如下命令

source ~/cv_bridge_460_ws/devel/setup.bash

 最后在终端 source 一下当前该路径

source ~/.bashrc

三、编译 vins-fusion-gpu

创建 vins-fusion-gpu 工作空间,

mkdir ~/catkin_ws_gpu/src
cd ~/catkin_ws_gpu/src

然后下载 vins-fusion-gpu 包到 catkin_ws/src 工作目录下

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

(1)修改 vins_estimator/CMakeLists.txt 文件

将 cv_bridge 改成 cv_bridge_460

find_package(catkin REQUIRED COMPONENTS
    roscpp
    std_msgs
    geometry_msgs
    nav_msgs
    tf
    cv_bridge_460
    camera_models
    image_transport)

注释一行

#include(/home/dji/opencv/build/OpenCVConfig.cmake)

添加 cv_bridge_460 功能包的路径和 opencv-4.6.0 的路径

set(cv_bridge_460_DIR "/home/lilabws01/cv_bridge_460_ws/devel/share/cv_bridge_460/cmake")
set(OpenCV_DIR "/usr/local/opencv-4.6.0/build/")

 (2)修改 loop_fusion/CMakeLists.txt 文件

find_package(catkin REQUIRED COMPONENTS
    roscpp
    std_msgs
    nav_msgs
    camera_models
    cv_bridge_460
    roslib
    )

注释一行

#include(/home/dji/opencv/build/OpenCVConfig.cmake)

添加 cv_bridge_460 功能包的路径和 opencv-4.6.0 的路径

set(cv_bridge_460_DIR "/home/lilabws01/cv_bridge_460_ws/devel/share/cv_bridge_460/cmake")
set(OpenCV_DIR "/usr/local/opencv-4.6.0/build/")

保存并退出,最后进入 VINS-Fusion-gpu 文件夹

cd ./VINS-Fusion-gpu/

终端输入下面代码使得 VINS-Fusion-gpu 自动匹配 OpenCV4 版本(变量名发生变化)

sed -i 's/CV_FONT_HERSHEY_SIMPLEX/cv::FONT_HERSHEY_SIMPLEX/g' `grep CV_FONT_HERSHEY_SIMPLEX -rl ./`
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::IMREAD_GRAYSCALE/g' `grep CV_LOAD_IMAGE_GRAYSCALE -rl ./`
sed -i 's/CV_BGR2GRAY/cv::COLOR_BGR2GRAY/g' `grep CV_BGR2GRAY -rl ./`
sed -i 's/CV_RGB2GRAY/cv::COLOR_RGB2GRAY/g' `grep CV_RGB2GRAY -rl ./`
sed -i 's/CV_GRAY2RGB/cv::COLOR_GRAY2RGB/g' `grep CV_GRAY2RGB -rl ./`
sed -i 's/CV_GRAY2BGR/cv::COLOR_GRAY2BGR/g' `grep CV_GRAY2BGR -rl ./`
sed -i 's/CV_CALIB_CB_ADAPTIVE_THRESH/cv::CALIB_CB_ADAPTIVE_THRESH/g' `grep CV_CALIB_CB_ADAPTIVE_THRESH -rl ./`
sed -i 's/CV_CALIB_CB_NORMALIZE_IMAGE/cv::CALIB_CB_NORMALIZE_IMAGE/g' `grep CV_CALIB_CB_NORMALIZE_IMAGE -rl ./`
sed -i 's/CV_CALIB_CB_FILTER_QUADS/cv::CALIB_CB_FILTER_QUADS/g' `grep CV_CALIB_CB_FILTER_QUADS -rl ./`
sed -i 's/CV_CALIB_CB_FAST_CHECK/cv::CALIB_CB_FAST_CHECK/g' `grep CV_CALIB_CB_FAST_CHECK -rl ./`
sed -i 's/CV_ADAPTIVE_THRESH_MEAN_C/cv::ADAPTIVE_THRESH_MEAN_C/g' `grep CV_ADAPTIVE_THRESH_MEAN_C -rl ./`
sed -i 's/CV_THRESH_BINARY/cv::THRESH_BINARY/g' `grep CV_THRESH_BINARY -rl ./`
sed -i 's/CV_SHAPE_CROSS/cv::MORPH_CROSS/g' `grep CV_SHAPE_CROSS -rl ./`
sed -i 's/CV_SHAPE_RECT/cv::MORPH_RECT/g' `grep CV_SHAPE_RECT -rl ./`
sed -i 's/CV_TERMCRIT_EPS/cv::TermCriteria::EPS/g' `grep CV_TERMCRIT_EPS -rl ./`
sed -i 's/CV_TERMCRIT_ITER/cv::TermCriteria::MAX_ITER/g' `grep CV_TERMCRIT_ITER -rl ./`
sed -i 's/CV_RETR_CCOMP/cv::RETR_CCOMP/g' `grep CV_RETR_CCOMP -rl ./`
sed -i 's/CV_CHAIN_APPROX_SIMPLE/cv::CHAIN_APPROX_SIMPLE/g' `grep CV_CHAIN_APPROX_SIMPLE -rl ./`
sed -i 's/CV_AA/cv::LINE_AA/g' `grep CV_AA -rl ./`

解释参考 Docker 制作各 ROS 版本 VINS-Fusion 镜像_想要个小姑娘的博客-CSDN博客

然后进入 catkin_ws/ 工作目录,进行编译

cd ~/catkin_ws/
catkin_make

编译成功后 VINS-Fusion-gpu 就可以运行啦,运行方式参考

Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行_想要个小姑娘的博客-CSDN博客

最后终端输入nvidia-smi 可以查看 vins-node 使用 GPU 的情况

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

四、修改 VINS-Fusion-gpu

在 VINS-Fusion-gpu 中,特征追踪的图像是直接显示在外面的,但是在 VINS-Fusion 中,特征追踪的图像是集成在 rviz 中的,下面我们介绍如何修改 VINS-Fusion-gpu 源码使得特征追踪的图像显示在 rviz 中。

首先用 vscode 打开 VINS-Fusion-gpu 目录 进入 feature_tracker.cpp,找到下图所示的两行

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

这是 VINS-Fusion-gpu 显示特征追踪图像的方式,将其注释

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

接下来打开 visualization.h,

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

在上图位置添加(声明发布特征追踪图像的函数)

void pubTrackImage(const cv::Mat &imgTrack, const double t);

然后打开 visualization.cpp,

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

在上图位置添加(定义发布特征追踪图像的函数)

void pubTrackImage(const cv::Mat &imgTrack, const double t)
{
    std_msgs::Header header;
    header.frame_id = "world";
    header.stamp = ros::Time(t);
    sensor_msgs::ImagePtr imgTrackMsg = cv_bridge::CvImage(header, "bgr8", imgTrack).toImageMsg();
    pub_image_track.publish(imgTrackMsg);
}

接下来还是在 visualization.cpp 中,

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

在上图两个位置添加

ros::Publisher pub_image_track;

以及

pub_image_track = n.advertise<sensor_msgs::Image>("image_track", 1000);

最后在 estimator.cpp 中

Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0,ubuntu,opencv,linux

在上图位置添加一行

pubTrackImage(imgTrack, t);

通过编译后,就可以在 rviz 中找到 /vins_estimator/image_track 话题了!

至此,VINS-Fusion-gpu 就完全实现了 VINS-Fusion 的效果!文章来源地址https://www.toymoban.com/news/detail-518242.html

到了这里,关于Ubuntu 20.04 配置 VINS-Fusion-gpu + OpenCV 4.6.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu20.04中安装配置docker nvidia容器来实现宿主机GPU的调用

    在 Ubuntu 上安装 Docker 非常直接。我们将会启用 Docker 软件源,导入 GPG key,并且安装软件包。 (这里指推荐使用官方的安装方法,snap的方法不推荐,各种命令不是很通用) 1、首先,更新软件包索引,并且安装必要的依赖软件,来添加一个新的 HTTPS 软件源: 2、使用下面的

    2024年03月16日
    浏览(67)
  • Ubuntu20.04下vins-mono用自己数据并跑通(手机摄像头/离线)

    目录 一、数据采集 1、安装采集app 2、录制 问题:找不到录制数据在哪里 二、数据打包 1、准备打包文件 1)kalibr_bagcreater.py 2)第三方库utility_functions.py 2、打包 问题:/usr/bin/env: “pythonr”: 没有那个文件或目录 三、参数标定 1、安装kalibr 1)安装依赖项 2)创建工作空间 问题

    2024年02月10日
    浏览(118)
  • 【Ubuntu】Ubuntu20.04安装GPU显卡驱动

    等待安装即可 有些显卡只支持455 安装完成记得重启一下,然后验证一下: 若显示下图则说明安装成功~    CUDA Toolkit 11.7 Downloads | NVIDIA Developer 选择Linux-x86_64-Ubuntu-20.04-runfile(local)   等待30m即可(取决于网速)   选择Continue(上下移动选择,Enter确定)  输入 accept   在对应的

    2024年02月01日
    浏览(42)
  • Ubuntu 20.04 实时查看GPU使用情况

    使用两种方法,实时查看 GPU 使用情况;彻底杀死制定进程 使用终端命令 nvidia-smi 查看显卡信息 如果你想实时检测显卡使用情况,添加 watch -n 即可 其中,4 是指 4 秒刷新一次终端,可以根据自己的需求设置 安装过程很简单,直接 pip 即可(本人是这样),使用 gpustat --json 以

    2024年02月13日
    浏览(54)
  • ubuntu20.04 docker 下编译 tensorflow-gpu

    配置: 系统 ubuntu 20.04 LTS 显卡 GTX 1060 6G 1 安装cudatoolkit (我选 CUDA Toolkit 12.2 ) NVIDIA CUDA Installation Guide for Linux https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#prepare-ubuntu 选择 2.7 步骤,下载 deb 包,本地安装 2.7. Download the NVIDIA CUDA Toolkit https://developer.nvidia.com/cuda-downloa

    2024年02月13日
    浏览(49)
  • 完整的Ubuntu20.04+ROS+PX4+Anaconda+PyTorch+GPU+CUDA+CUDNN+XTdrone配置智能无人机开发环境搭建过程

    我之前写了如何在Ubuntu18下搭配一系列软件的教程,然后近期重新安装20.04版本,于是重新记录一些东西,但是众多东西之前已经有了,所以我在这里知会在一些不同的地方和新增的地方特别说明,其他的请大家看之前的博客。 在搞了这么久的ros和px4之后,我也明白了xtdrone是

    2024年02月05日
    浏览(70)
  • Ubuntu20.04 编译 gstreamer 支持gpu硬编解 opencv-python同支持gst

    Gstreamer是一个支持Windows,Linux,Android, iOS的跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元素(Element)基于GObject对象系统通过插件(plugins)的方式实现,方便了各项功能的扩展。 下图

    2024年02月11日
    浏览(105)
  • Ubuntu20.04配置

    新创建的用户没有root权限,我们执行以下命令给用户sudo权限 删除用户及用户所有文件(/home/username/路径下的所有文件) 删除用户但保留所有用户文件: 查询系统整体磁盘使用情况: df -h 查询指定目录的磁盘占用情况:默认是当前目录 du -h

    2024年02月04日
    浏览(51)
  • ubuntu20.04网络配置

    安装net-tools      sudo apt-get install net-tools 2、ifconfig查看网卡设备 其中flags表中:running表示正在使用中。 查看设备核心网络路由表:      route -n Destination 目标网段或者主机 Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由 Genmask 网络掩码 Flags 标记。

    2024年02月08日
    浏览(62)
  • Ubuntu 20.04 配置 Realsense

    可以在官网查看各个类型的相机说明 Intel® RealSense™ Computer Vision - Depth and Tracking cameras 目前实验室常用的是 D400 系列的相机,如 D435i相机,D455相机等,本文主要使用 D435i 相机,如下图所示 D435i 相机是一个RGB-D相机,也就是我们常说的深度相机,目前深度相机的实现原理主要

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包