石家庄市住房和建设局网站,怎么搭建小程序平台,如何建设自己的企业网站,装饰公司网站模板下载本文是在Orin nx上已经安装并用zed2相机跑通Vins-Fusion感知建图的基础上进行Vins-Fusion-gpu进行修改的内容#xff0c;一些基本的库文件#xff0c;依赖安装#xff0c;只讲解opecv4.6.0带GPU加速配置和cv_bridge配置以及zed2相机的配置#xff0c;其他就不再这里赘述一些基本的库文件依赖安装只讲解opecv4.6.0带GPU加速配置和cv_bridge配置以及zed2相机的配置其他就不再这里赘述详情请看我的其他文章
无人机避障——感知篇Orin nx采用zed2双目相机进行Vins-Fusion定位再通过位姿和深度图建图完成实时感知-CSDN博客
无人机避障——感知篇在Ubuntu20.04的Orin nx上基于ZED2实现Vins Fusion-CSDN博客
无人机避障——感知部分Ubuntu 20.04 复现Vins Fusion跑数据集胎教级教程_vinsfusion ubuntu20.04-CSDN博客
安装opencv4.6.0带GPU加速配置和cv_bridge安装
参考文章
Jetson Orin NX 开发指南5: 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速_jetson xavier nx 配置 opencv cuda加速-CSDN博客
按上面文章是可以进行opencv4.6.0的安装的但是cv_bridge虽然安装了但是配置上还会有一些问题首先需要删除4.2.0版本的ROS自带的opencv
sudo apt purge libopencv*4.2* python3-opencv libopencv-dev
然后NX中就只剩下刚刚安装的cv_bridge牵连的是opencv4.6.0。
编译Vins-Fusion-GPU
mkdir -p ~/vins_gpu_ws/src/vins-fusion-gpu/src/
cd ~/vins_gpu_ws/src/vins-fusion-gpu/src/git clone https://github.com/pjrambo/VINS-Fusion-gpu.git
下载完成进入VINS-Fusion-gpu修改 vins_estimator/CMakeLists.txt 文件和修改 loop_fusion/CMakeLists.txt 文件。
在vins_estimator/CMakeLists.txt 的20行和loop_fusion/CMakeLists.txt 的19行将opencv的位置进行替换
# include(/home/dji/opencv/build/OpenCVConfig.cmake)
include(~/Documents/opencv-4.6.0/build/OpenCVConfig.cmake) 在vins_estimator/CMakeLists.txt 的8行和loop_fusion/CMakeLists.txt 的8行加入cv_bridge的路径
set(cv_bridge_DIR /home/nvidia/cv_bridge_pkg/devel/share/cv_bridge/cmake) 然后输入以下内容
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 ./ 原因参考博客
Jetson Orin NX 开发指南6: VINS-Fusion-gpu 的编译和运行-CSDN博客
编译通过之后运行数据集
# 新开终端
cd ~/vins_gpu_ws/src/vins-fusion-gpu source devel/setup.bash roslaunch vins vins_rviz.launch# 新开终端
cd ~/vins_gpu_ws/src/vins-fusion-gpu source devel/setup.bash rosrun vins vins_node src/VINS-Fusion-gpu/config/euroc/euroc_stereo_imu_config.yaml# 新开终端
cd ~/vins_gpu_ws/src/vins-fusion-gpu source devel/setup.bash rosrun loop_fusion loop_fusion_node src/VINS-Fusion-gpu/euroc/euroc_stereo_imu_config.yaml# 新开终端跑数据集
cd ~/data_set rosbag play MH_01_easy.bag 编译之后运行实际ZED2 参考内容我的以下文章自己新建zed的相机yaml文件 无人机避障——感知篇在Ubuntu20.04的Orin nx上基于ZED2实现Vins Fusion-CSDN博客
但是需要修改 zed2_stereo_config.yaml文件 修改如下
%YAML:1.0#common parameters
#support: 1 imu 1 cam; 1 imu 2 cam: 2 cam;
imu: 1
num_of_cam: 2 #实时相机
imu_topic: /zed2/zed_node/imu/data_raw
image0_topic: /zed2/zed_node/left/image_rect_gray
image1_topic: /zed2/zed_node/right/image_rect_gray# 录制bag包
# imu_topic: /zed2/zed_node/imu/data_raw2
# image0_topic: /zed2/zed_node/left/image_rect_color2
# image1_topic: /zed2/zed_node/right/image_rect_color2output_path: /home/vins_gpu_ws/output/cam0_calib: cam0.yaml
cam1_calib: cam1.yaml
image_width: 640
image_height: 360# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 0 # 0 Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, dont change it.# 1 Have an initial guess about extrinsic parameters. We will optimize around your initial guess.body_T_cam0: !!opencv-matrixrows: 4cols: 4dt: ddata: [0.00621782, 0.00255719, 0.9999774, 0.02442757,-0.99997099, -0.00438481, 0.00622899, 0.02442823,0.00440064, -0.99998712, 0.00252985, 0.00964505,0, 0, 0, 1]body_T_cam1: !!opencv-matrixrows: 4cols: 4dt: ddata: [0.00376341, 0.00237248, 0.9999901, 0.02559884,-0.99998414, -0.00418019, 0.00377331, -0.09545715,0.0041891, -0.99998845, 0.00235671, 0.01015661,0, 0, 0, 1]#Multiple thread support
multiple_thread: 1
use_gpu: 1
use_gpu_acc_flow: 0#feature traker paprameters
max_cnt: 350 # max feature number in feature tracking
min_dist: 30 # min distance between two features
freq: 10 # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image
F_threshold: 1.0 # ransac threshold (pixel)
show_track: 1 # publish tracking image as topic
flow_back: 1 # perform forward and backward optical flow to improve feature tracking accuracy#optimization parameters
max_solver_time: 0.04 # max solver itration time (ms), to guarantee real time
max_num_iterations: 8 # max solver itrations, to guarantee real time
keyframe_parallax: 10.0 # keyframe selection threshold (pixel)#imu parameters The more accurate parameters you provide, the better performance
# acc_n: 1.4402862002020933e-02 # accelerometer measurement noise standard deviation.
# gyr_n: 1.3752563738546138e-03 # gyroscope measurement noise standard deviation.
# acc_w: 5.3890784193863061e-04 # accelerometer bias random work noise standard deviation.
# gyr_w: 4.5861836272840561e-05 # gyroscope bias random work noise standard deviation.
# g_norm: 9.81007 # gravity magnitude
acc_n: 0.1 # accelerometer measurement noise standard deviation.
gyr_n: 0.01 # gyroscope measurement noise standard deviation.
acc_w: 0.001 # accelerometer bias random work noise standard deviation.
gyr_w: 0.0001 # gyroscope bias random work noise standard deviation.
g_norm: 9.81007 # gravity magnitude#unsynchronization parameters
estimate_td: 0 # online estimate time offset between camera and imu
td: 0.0 # initial value of time offset. unit: s. readed image clock td real image clock (IMU clock)#loop closure parameters
load_previous_pose_graph: 0 # load and reuse previous pose graph; load from pose_graph_save_path
pose_graph_save_path: /home/nvidia/vins_gpu_ws/output/pose_graph/ # save and load path
save_image: 1 # save image in pose graph for visualization prupose; you can close this function by setting 0
[注意]其中这两个量是控制是否运行gpu的我一开始全部置为1发现zed2实际测试太卡了后面就这么设置。
use_gpu: 1 use_gpu_acc_flow: 0
参考我的前面博客写一个bash文件进行一键启动操作
无人机避障——感知篇Orin nx采用zed2双目相机进行Vins-Fusion定位再通过位姿和深度图建图完成实时感知-CSDN博客
bash文件
# run.sh文件#!/bin/bash# Start roscore
gnome-terminal -- bash -c roscore
# Start RViz
#gnome-terminal -- bash -c cd ~/vins_gpu_ws/src/vins-fusion-gpu source devel/setup.bash roslaunch vins vins_rviz.launch# Start VINS-Fusion node
sleep 5
gnome-terminal -- bash -c cd ~/vins_gpu_ws/src/vins-fusion-gpu source devel/setup.bash rosrun vins vins_node src/VINS-Fusion-gpu/config/zed/zed2_stereo_config.yaml#回环检测
sleep 5
gnome-terminal -- bash -c cd ~/vins_gpu_ws/src/vins-fusion-gpu source devel/setup.bash rosrun loop_fusion loop_fusion_node src/VINS-Fusion-gpu/config/zed/zed2_stereo_config.yaml## 实时相机
sleep 5
gnome-terminal -- bash -c cd ~/vins_gpu_ws/src/vins-fusion-gpu source /home/nvidia/zed_ws/devel/setup.bash roslaunch zed_wrapper zed2.launch## 实时建栅格地图
sleep 5
gnome-terminal -- bash -c cd vins_ws source devel/setup.bash source /home/nvidia/ego_planner_grid/devel/setup.bash roslaunch plan_env grid_map.launch# Play rosbag
# sleep 5
# gnome-terminal -- bash -c source devel/setup.bash rosbag play /home/nvidia/data_set/MH_01_easy.bag# Keep the terminal open until you manually close it
echo Press Enter to close the terminals
read
最后展示结果