文章目录
一、库与源码的安装与编译
(1)多版本opencv安装与切换
由于jetpack4.5.1自带的opencv版本是4.1.1,不适用于vins,需要切换至opencv3,选择的版本号为3.4.16,其他版本应该也是可以的。
(1)首先去github上下载opencv3.4.16的源码,解压到任意文件夹
opencv github
(2)安装依赖
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran libgtk2.0-dev libjpeg-dev libpng-dev
(3)打开并进行安装
cd opencv-3.4.16
mkdir build & cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \Release 是指编译出来的程序是最终用于发布的版本,通常会启用各种优化以提高性能。
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv_3.4.16 \ 设置安装路径
-D INSTALL_C_EXAMPLES=ON \安装 C 语言示例程序
-D CUDA_ARCH_BIN='7.2' \ 指定了 CUDA 架构的版本,修改为你使用的电脑显卡的计算能力
-D WITH_CUDA=ON \启用了对 CUDA 的支持。开启此选项将允许 OpenCV 使用 CUDA 进行加速计算。
-D WITH_TBB=ON \TBB 是一个用于多线程编程的 C++ 库,开启此选项可以让 OpenCV 在某些情况下使用 TBB 来提高性能。
-D WITH_V4L=ON \V4L 是 Linux 操作系统中用于处理视频设备的接口,开启此选项允许 OpenCV 与 V4L 兼容的设备进行交互。
-D WITH_QT=ON \Qt 是一个跨平台的 C++ 应用程序开发框架,开启此选项允许 OpenCV 使用 Qt 进行图形用户界面(GUI)的开发。
-D WITH_OPENGL=ON \OpenGL 是一个用于渲染 2D 和 3D 图形的跨平台图形库,开启此选项允许 OpenCV 使用 OpenGL 进行图像处理。
-D OPENCV_EXTRA_MODULES_PATH=/YOU_PATH/opencv_contrib-x.x.x/modules \ #修改为你本机opencv_contrib的路径,不使用opencv_contrib就删掉这行
-D BUILD_EXAMPLES=ON \表示要编译示例程序。设置为 ON 会编译一些示例程序,用于演示 OpenCV 的各种功能。
-D OPENCV_GENERATE_PKGCONFIG=YES ..\pkg-config 是一个用于检查和配置编译链接参数的工具,生成这个文件可以方便其他程序在编译时找到 OpenCV 库。
make -j6/可以通过nproc来看自己的核心数
sudo make install
cmake的配置可以根据需求来,但是CMAKE_INSTALL_PREFIX和OPENCV_GENERATE_PKGCONFIG一定要设置,否则不会生成配置文件
所以如果没有特殊需求可以直接
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv_3.4.16
-D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j4
sudo make install
(4)配置环境变量
sudo gedit ~/.bashrc
在bashrc文件中添加
export PKG_CONFIG_PATH=/usr/local/opencv_3.4.16/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv_3.4.16/lib
最后使环境变量生效
source ~/.bashrc
(4)检查opencv版本,输出应该是3.4.16
pkg-config --modversion opencv
(2)安装Ceres Solver version 1.14.0
ceres安装作者推荐是1.14版本,更高版本可能会存在其他问题,这里我们采用推荐的版本进行安装
安装依赖
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libsuitesparse-dev
编译安装
cd ceres-solver
mkdir build && cd build
cmake ..
make -j4
sudo make install
(3)安装Eigen
cd eigen-3.3.9
mkdir build && cd build
cmake ..
sudo make install
(4)安装编译VINS-Mono
注意点: 由于我们的OpenCV安装的并不是系统的默认位置,因此需要在cv_bridge中对opencv库的位置进行修改,不然后面会报错。
首先查看自己opencv的位置
pkg-config --cflags opencv
然后在ros cv_bridge所在包的位置进行修改:
cd /opt/ros/melodic/share/cv_bridge/cmake
sudo gedit cv_bridgeConfig.cmake
找到以下位置,并将set后面的内容修改为下图,对应为上面自己输出的位置
最后保存并退出。
下面开始下载编译VINS_Mono
mkdir -p vins_mono_ws/src
cd src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ..
catkin_make
二、jetson xavier nx上运行数据集
启动rviz节点
source ./devel/setup.bash
roslaunch vins_estimator vins_rviz.launch
启动estimator节点
source ./devel/setup.bash
roslaunch vins_estimator euroc.launch
播放ros包
rosbag play
三、jetson xavier nx上用D435i运行VINS-Mono
首先第一步要安装相机的驱动和一些必要的包,但是jeton xavier nx安装realsenseSDK和ros包非常依赖版本,尤其是官方对nx的开发板并没有测试(详见SDK安装的手册中,对TX,AGX和nano都有测试,唯独NX没有测试),如果版本不对或者采用apt安装方式大概率会导致imu没有消息输出从而导致vins运行失败。
可以去看我的另外两篇博客,亲自测试有效。
(一)jetson xavier nx刷机(可稳定运行D435i相机,解决D435imu没有输出的问题)
(二)jetson xavier nx安装D435i驱动和ros包(可稳定运行D435i相机,解决D435imu没有输出的问题)
假如已经安装好好了SDK和realsense-ros。
source ./devel/setup.bash
roslaunch vins_estimator vins_rviz.launch
启动estimator节点
source ./devel/setup.bash
roslaunch vins_estimator realsense_color.launch