网站建设在哪个软件下做,石家庄桥西网站制作公司,shopex整合wordpress,怎么增加网站访问量一、前言
由于 Jetson 系列的开发板 CPU 性能不是很好#xff0c;因此在处理图像数据时往往需要 GPU 加速#xff0c;而 VINS-Fusion 是针对同步定位与建图#xff08;SLAM#xff09;问题中十分出色的视觉算法#xff0c;但是其在图像处理过程中资源消耗较大#xff0c…一、前言
由于 Jetson 系列的开发板 CPU 性能不是很好因此在处理图像数据时往往需要 GPU 加速而 VINS-Fusion 是针对同步定位与建图SLAM问题中十分出色的视觉算法但是其在图像处理过程中资源消耗较大仅仅依靠 Jetson 开发板的 CPU 往往很难实现事实效果。
本文在此背景下介绍如何配置带有 GPU 加速的 VINS-Fusion主要参考以下文献
https://github.com/pjrambo/VINS-Fusion-gpu
Ubuntu 20.04 配置 VINS-Fusion-gpu OpenCV 4.6.0-CSDN博客
并且需要一些必要的准备工作如 CUDA 的安装带有 GPU 加速的 OpenCV 的安装cv_bridge 功能包的安装这些工作在上一期内容中已经介绍详见
Jetson Orin NX 开发指南5: 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速-CSDN博客
接下来我们开始介绍如何在 Jetson Orin NX 开发板上运行 VINS-Fusion-gpu
二、编译安装 ceres-solver-1.14.0
首先安装依赖
sudo apt-get install liblapack-dev libsuitesparse-dev libgflags-dev libgoogle-glog-dev libgtest-dev libcxsparse3 -y
然后将安装包下载在 ~/Documents/ 目录下并解压
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar -zxvf ceres-solver-1.14.0.tar.gz 进入 ceres-solver-1.14.0 文件夹
cd ~/Documents/ceres-solver-1.14.0
创建 build 并编译生成 Makefile 文件
mkdir build cd build
cmake ..
最终编译并安装 ceres-solver-1.14.0
sudo make install -j8
最终结果如下 至此ceres-solver-1.14.0 就编译安装完成了
三、编译 VINS-Fusion-gpu
首先创建 VINS-Fusion-gpu 工作空间
mkdir -p ~/catkin_ws/src/vinsgpu/src/
cd ~/catkin_ws/src/vinsgpu/src/
然后从 Github 上下载 VINS-Fusion-gpu 源码
git clone https://github.com/pjrambo/VINS-Fusion-gpu.git
下载完成后进入 VINS-Fusion-gpu 文件夹
1修改 vins_estimator/CMakeLists.txt 文件
注释一行
#include(/home/dji/opencv/build/OpenCVConfig.cmake)
设置 OpenCV 路径为带有 GPU 加速的 opencv 4.6.0 安装方式见上一期内容
set(OpenCV_DIR ~/Documents/opencv-4.6.0/build) 2修改 loop_fusion/CMakeLists.txt 文件
注释一行
#include(/home/dji/opencv/build/OpenCVConfig.cmake)
设置 OpenCV 路径为带有 GPU 加速的 opencv 4.6.0 安装方式见上一期内容
set(OpenCV_DIR ~/Documents/opencv-4.6.0/build) 保存并退出最后进入 VINS-Fusion-gpu 文件夹
cd ~/catkin_ws/src/vinsgpu/
接下来开始编译终端输入
catkin_make
出现报错 错误内容举例
1编译报错 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope
2编译报错 error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
3编译报错 error: ‘CV_BGR2GRAY’ was not declared in this scope
解决办法
进入 VINS-Fusion-gpu 文件夹下
cd ~/catkin_ws/src/vinsgpu/src/VINS-Fusion-gpu
然后输入以下内容
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 ./
sed -i s/CV_LOAD_IMAGE_UNCHANGED/cv::IMREAD_UNCHANGED/g grep CV_LOAD_IMAGE_UNCHANGED -rl ./
sed -i s/CV_MINMAX/cv::NORM_MINMAX/g grep CV_MINMAX -rl ./
具体过程如下 其原理解释详见
Docker 制作各 ROS 版本 VINS-Fusion 镜像_docker ros 镜像_想要个小姑娘的博客-CSDN博客
简要总结 VINS-Fusion-gpu 是在 Ubuntu 18.04 环境下写的其对应的 ROS 版本为 melodic对应的 OpenCV 是 3.2.0
而 Jetson Orin NX 对应的是 Ubuntu 20.04其对应的 ROS 版本为 noetic对应的 OpenCV 版本为 4.2.0
报错的关键原因就是 OpenCV 4 系列和 OpenCV 3 系列有一些变量的名称发生了改变因此我们这里只要将相应的变量名称进行修正就能顺利通过编译OpenCV 4.6.0 和 OpenCV 4.2.0 差别不大
上面的语句通过 sed 命令和 grep 正则表达式的方式一键修改所有变量名称
修改完成后进入工作空间并编译
cd ~/catkin_ws/src/vinsgpu/
catkin_make
最终显示如下结果 这表明 VINS-Fusion-gpu 通过编译
四、运行 VINS-Fusion-gpu