NVIDIA Jetson Xavier NX部署VINS-fusion-GPU

一、环境配置(Ubuntu 18.04)

1、Cuda 10.2的安装

sudo apt-get update
sudo apt-get install cuda-toolkit-10-2

安装好之后,在 .bashrc中配置环境变量。source之后,nvcc – version 即可查看cuda版本。

export PATH=/usr/local/cuda-10.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_ROOT=/usr/local/cuda

2、Eigen(用ROS自带的也可以)

# Remove pre-built Eigensudo apt-get remove libeigen3-dev
cd ~/Downloads/
wget -O eigen.zip https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.zip #check version
unzip eigen.zip
mkdir eigen-build && cd eigen-build
cmake ../eigen-3.3.7/ && sudo make install
pkg-config --modversion eigen3 # Check Eigen Version

3、Ceres solver

cd ~/Downloads/
sudo apt-get install -y cmake libgoogle-glog-dev libatlas-base-dev libsuitesparse-dev
wget http://ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar zxf ceres-solver-1.14.0.tar.gz
mkdir ceres-bin
mkdir solver && cd ceres-bin
cmake ../ceres-solver-1.14.0 -DEXPORT_BUILD_DIR=ON -DCMAKE_INSTALL_PREFIX="../solver" #good for build without being root privileged and at wanted directorymake -j3 # 6 : number of cores
make install
bin/simple_bundle_adjuster ../ceres-solver-1.14.0/data/problem-16-22106-pre.txt # to check version

4、Opencv 安装

关于Opencv 的安装需要特别谨慎,不建议频繁删除以前的库,因为多个项目使用的版本可能不同,所以可以将常用的版本安装在/usr/local下,将其余版本安装在自己Download或者home下
如果需要删除原来的版本,执行以下命令:

# remove prebuilt opencv
sudo apt-get purge libopencv* python-opencv
sudo apt-get update
sudo apt-get install -y build-essential pkg-config## libeigen3-dev # recommend to build from sourcesudo apt-get install -y cmake libavcodec-dev libavformat-dev libavutil-dev \libglew-dev libgtk2.0-dev libgtk-3-dev libjpeg-dev libpng-dev libpostproc-dev \libswscale-dev libtbb-dev libtiff5-dev libv4l-dev libxvidcore-dev \libx264-dev qt5-default zlib1g-dev libgl1 libglvnd-dev pkg-config \libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev mesa-utils     sudo apt-get install python2.7-dev python3-dev python-numpy python3-numpy
# To fix OpenGL related compilation problems cd /usr/lib/aarch64-linux-gnu/
sudo ln -sf libGL.so.1.0.0 libGL.so
sudo vim /usr/local/cuda/include/cuda_gl_interop.h# Comment (line #62~68) of cuda_gl_interop.h //#if defined(__arm__) || defined(__aarch64__)
//#ifndef GL_VERSION
//#error Please include the appropriate gl headers before including cuda_gl_interop.h
//#endif
//#else#include <GL/gl.h>
//#endif

安装新的版本(因为VINS-FUSION-GPU版本需要支持CUda的OpenCV,所以选择3.4.1版本)
Then once linking is done, go to Downloads to begin opencv installation

cd ~/Downloads/
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.1.zip # check version
unzip opencv.zip
cd opencv-3.4.1/ && mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \     #这里的/usr/local可以换成自己的安装路径,到时候在Cmakelist里设置自己设置的路径即可。-D WITH_CUDA=ON \-D CUDA_ARCH_BIN=7.2 \     #对于NX和AGX,选7.2,Nano,TX2选6.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  # running in single core is good to resolve the compilation issues
sudo make install
cd ../../ && sudo rm -rf opencv-3.4.1 # optional (can save 10GB Disk Space)
pkg-config --modversion opencv # Check opencv Version


OpenCV 在NX上的安装比较慢,差不多需要1个小时。OpenCV安装好以后,需要进一步编译CV-Bridge( cv_bridge是在ROS图像消息和OpenCV图像之间进行转换的一个功能包)。

5、CV-Bridge的编译

CV-Bridge的安装需要下载对应的版本,由于NX 是基于Ubuntu 18.04的ARM系统,因此下载melodic版本的CV-Bridge。首先,通过以下连接进入下载页面:

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

如图所示:

# 选择下载melodic版本到catkin_ws/src目录下,
gedit vision_opencv/cv_bridge/CMakeLists.txt
# Edit OpenCV PATHS in CMakeLists and include cmake file
# /usr/local/share/OpenCV 选择自己安装的OpenCV对应路径
find_package(OpenCV 3 REQUIRED PATHS /usr/local/share/OpenCV NO_DEFAULT_PATH COMPONENTSopencv_coreopencv_imgprocopencv_imgcodecsCONFIG
)
include(/usr/local/share/OpenCV/OpenCVConfig.cmake)  #under catkin_python_setup()
# Save and close CMakeLists
#  Build the package
cd .. && catkin_make

二、Vins-Fusion GPU编译安装

1、Vins-Fusion GPU

cd ~/catkin_ws/src && git clone https://github.com/pjrambo/VINS-Fusion-gpu #GPUsudo apt-get install ros-melodic-tf
sudo apt-get install ros-melodic-image-transport
sudo apt-get install ros-melodic-rviz# Edit CMakeLists.txt for loop_fusion and vins_estimator
cd ~/catkin_ws/src/VINS-Fusion-gpu/loop_fusion && gedit CMakeLists.txt##For loop_fusion : line 19
#find_package(OpenCV)
# /usr/local/share/OpenCV/ OpenCVConfig.cmake 选择自己安装的OpenCV对应路径
include(/usr/local/share/OpenCV/OpenCVConfig.cmake)cd ~/catkin_ws/src/VINS-Fusion-gpu/vins_estimator && gedit CMakeLists.txt##For vins_estimator : line 20
#find_package(OpenCV REQUIRED)
# /usr/local/share/OpenCV/ OpenCVConfig.cmake 选择自己安装的OpenCV对应路径
include(/usr/local/share/OpenCV/OpenCVConfig.cmake)cd ~/catkin_ws/
source devel/setup.bash
catkin_make

2、数据测试。

2.1公开数据集测试【以EuRoC(Stereo cameras + IMU)为例】

 roslaunch vins vins_rviz.launchrosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
rosbag play YOUR_DATASET_FOLDER/MH_01_easy.bag

数据可以通过一下链接下载到:

http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
如果下载慢的话,也可以通过以下连接获取KITTI
链接: https://pan.baidu.com/s/1UIoP1TgGLLWWpKYVrre9WA 密码: dbsb
EuRoC
链接: https://pan.baidu.com/s/1zvxyN1KlIk28_LvC36WU5Q 密码: f1rv
shapenet
链接: https://pan.baidu.com/s/1pdRk3FOxRe5YRBVGP0ACJw 密码: 4knl
TUM
链接: https://pan.baidu.com/s/1GFy8MZmH4TZGakzGWudyhQ 密码: ptga
数据来源原文链接:https://blog.csdn.net/weixin_43828675/article/details/117049952(感谢嚣张的叉烧包同志)

2.2 测试自己的设备(D435i+阿木P450)

在配置参数文件中加入以下参数,使得GPU起作用

In the config file, there are two parameters for gpu acceleration.
use_gpu: 0 for off, 1 for on
use_gpu_acc_flow: 0 for off, 1 for on
If your GPU resources is limitted or you want to use GPU for other computaion. You can set
use_gpu: 1
use_gpu_acc_flow: 0
If your other application do not require much GPU resources, I recommanded you to set
use_gpu: 1
use_gpu_acc_flow: 1


IMU和相机外参标定可以通过VINS实时在线标定或者使用Kalibr工具包进行标定,相关资料比多了,不再赘述。

下期给各位铁子们汇报在阿木实验室P450上部署VINS+Prometheus+Ggo-Planner的工作。

文献参考

1、无人机自主导航(ARM架构的vins-fusion-GPU部署)

https://blog.csdn.net/weixin_45600405/article/details/125249964?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EESLANDING%7Edefault-3-125249964-blog-119830683.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EESLANDING%7Edefault-3-125249964-blog-119830683.pc_relevant_landingrelevant&utm_relevant_index=4

2、安装环境OpenCV

https://github.com/arjunskumar/vins-fusion-gpu-tx2-nano

3、调内外参数

https://www.bilibili.com/video/BV1WZ4y167me?p=11&vd_source=1682913523e03074db0225c9475c4c71

4、技术分享 | 带你具体部署VINS_FUSION_GPU版本

https://mp.weixin.qq.com/s/FaE05W2vAvHCZc7R39M7Pw

NVIDIA Jetson Xavier NX部署VINS-fusion-GPU相关推荐

  1. Jetson Xavier NX部署Yolov5(GPU版)

    根据我自身的成功部署经验进行了总结,首先希望可以帮助到有需要的朋友们. 一.前期准备: 1.硬件准备: Jetson Xavier NX开发板(带128g内存条的EMMC版).跳线帽(杜邦线).mic ...

  2. yolo v5 NVIDIA Jetson Xavier NX 部署刷机+安环境(2)

    安环境 到10.28号,已经快差不多1个月,在我的磨叽之下,终于搞完,成功训练yolov5的detect.py文件,大部分参考了璐璐同学的NX所下环境,还有就是亲临指导了啊哈哈哈,她的文章点这里 1. ...

  3. NVIDIA JETSON XAVIER NX烧录(emmc版本)

    目录 0.前言 1.安装虚拟机 2.安装SDKManager 3.使用SDK Manager开始烧录 4.配置系统 5.开发环境的安装(CUDA) 6.遇到问题记录(如果有其它问题可以留言我补充) 7 ...

  4. 在NVIDIA Jetson Xavier NX上把yolov4-deepsort的模型pb模型使用tensorflow-onnx和onnx-tensorrt工具最终转换为tensorrt模型

    文章目录: 1 安装tensorflow-onnx环境和把tensorflow的pb模型转换为onnx模型 1.1 安装tensorflow2onnx环境 1.2 把tensorflow的pb模型转换 ...

  5. NVIDIA Jetson Xavier NX上导入tensorflow报错:AttributeError: module ‘wrapt‘ has no attribute ‘ObjectProxy‘

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 在Jetson Xavier NX上导入tensorflow报错:AttributeError: module 'wra ...

  6. Jetson Xavier NX部署PaddlePaddle框架

    文章目录 前言 一.刷机.开机等基本环境配置可以参考如下文章 我的环境信息 二.源码编译安装paddlepaddle 1.编译前准备工作 2.首先编译安装NCCL 3.编译安装PaddlePaddle ...

  7. 使用ubuntu16.04对NVIDIA Jetson Xavier NX使用刷机:两种刷机方式:SD卡镜像法 和 NVIDIA SDK Manager法

    文章目录: 1 NVIDIA Jetson Xavier NX的两种刷机方式 2 使用SD卡镜像法对Jetson Xavier NX刷机的具体步骤 3 使用NVIDIA SDK Manager法对Je ...

  8. NVIDIA Jetson Xavier NX使用SD镜像刷机流程

    关于NVIDIA Xavier的一些介绍 文章目录: 1 下载NVIDIA Jetson Xavier NX 的Jetpack镜像和烧录工具 1.1 下载NVIDIA Jetson Xavier NX ...

  9. AI嵌入式开发:NVIDIA Jetson Xavier NX刷机(2)

    NVIDIA Jetson Xavier NX开发: 刷机 step1:下载文件 step2:安装格式化工厂: step3 安装Etcher 远程连接 刷机 https://developer.nvi ...

最新文章

  1. 1042. 托普利兹矩阵
  2. C# 动态执行批处理命令
  3. 282021年高考成绩查询方法,往年高考成绩怎么查询 查询成绩的方法
  4. boost::intrusive::smart_ptr用法的测试程序
  5. 2019计算机考研在职研究生,2019双证在职研究生报名条件
  6. problem about can't trigger exit-command in CR
  7. spring aop源码分析
  8. python06-常用模块
  9. Java面向对象的构造方法例子
  10. python语言的特点强制可读_python程序语言设计第二讲(笔记)
  11. html视频播放快进按钮,【浏览器插件】Video Speed Controller – 网页视频倍速、快进、回放功能0.07~16 倍...
  12. c语言调用python变量_在c中读取python的全局变量
  13. DirectX诊断工具怎么打开?怎么查看当前电脑所支持的DirectX版本?
  14. python群控模拟安卓系统_安卓群控系统模拟器
  15. mysql tddl_tddl的使用
  16. [USACO题库]1.2.3 Name That Number命名那个数字
  17. Google Reader 推出简体中文版 Google(谷歌)阅读器
  18. unbuntu 安装jdk
  19. 一些常用的开发软件,定期更新!
  20. 不要提前交卷!!!曾有人在最后35秒,拿到了13分!!!(祝所有考生顺利)...

热门文章

  1. android sdk目录缺少uiautomatorviewer,解决Android8.0以上运行不了uiautomatorviewer的办法...
  2. 基于领域模型的微服务划分--实战案例解析
  3. 谷歌推出逐字搜索Verbatim
  4. Exp1 PC平台逆向破解 20164302 王一帆
  5. 从零开始Kubernetes CronJob实现任务调度
  6. 城市消防远程监控系统
  7. FastStone注册码
  8. E0 S0 SVL接口配置
  9. Cubic(Custom Ubuntu ISO Creator)创建自定义镜像
  10. 创建标准化工程目录脚本