当前位置: 首页 > news >正文

无人机避障——感知部分(Ubuntu 20.04 复现Vins Fusion跑数据集)胎教级教程

硬件环境:NVIDIA Jeston Orin nx

系统:Ubuntu 20.04

任务:跑通 EuRoC MAV Dataset 数据集

展示结果:

编译Vins Fusion

创建工作空间vins_ws

# 创建目录结构
mkdir -p ~/vins_ws/srccd ~/vins_ws/src# 初始化工作空间(生成 CMakeLists.txt)
catkin_init_workspace# 克隆官网的代码
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.gitcd ..catkin_make

遇到了不少报错,参考以下内容可以基本解决前期的编译问题。

将c++11 修改为c++14

用VScode搜索set(CMAKE_CXX_FLAGS "-std=c++11"),全部替换为set(CMAKE_CXX_FLAGS "-std=c++14"),图中我已经全部替换过了。

指定find_package中的OpenCV的版本

用VScode搜索find_package(OpenCV REQUIRED),全部替换为find_package(OpenCV 4 REQUIRED),图中我已经全部替换过了。

添加头文件

camera_models>include>camodocal>chessboard>Chessboard.h中添加

#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>

在以下文件:

camera_models/include/camodocal/calib/CameraCalibration.h
loop_fusion/src/pose_graph.h
vins_estimator/src/featureTracker/feature_tracker.h
loop_fusion/src/ThirdParty/DVision/BRIEF.h

加入以下的头文件:

#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

修改报错文件

在以下文件

VINS-Fusion/vins_estimator/src/KITTIGPSTest.cpp

VINS-Fusion/vins_estimator/src/KITTIOdomTest.cpp

其中,将 CV_LOAD_IMAGE_GRAYSCALE修改为cv::IMREAD_GRAYSCALE,同样的直接用VScode搜索 CV_LOAD_IMAGE_GRAYSCALE将其替换即可。

然后编译

usr/bin/ld: warning: libopencv_video.so.4.2, needed by /home/nvidia/vins_ws/devel/lib/libvins_lib.so, may conflict with libopencv_video.so.405
/usr/bin/ld: warning: libopencv_imgcodecs.so.405, needed by /home/nvidia/vins_ws/devel/lib/libvins_lib.so, may conflict with libopencv_imgcodecs.so.4.2
/usr/bin/ld: warning: libopencv_core.so.405, needed by /usr/local/lib/libopencv_video.so.4.5.5, may conflict with libopencv_core.so.4.2
/usr/bin/ld: warning: libopencv_video.so.4.2, needed by /home/nvidia/vins_ws/devel/lib/libvins_lib.so, may conflict with libopencv_video.so.405
/usr/bin/ld: warning: libopencv_imgcodecs.so.405, needed by /home/nvidia/vins_ws/devel/lib/libvins_lib.so, may conflict with libopencv_imgcodecs.so.4.2
/usr/bin/ld: warning: libopencv_core.so.405, needed by /usr/local/lib/libopencv_video.so.4.5.5, may conflict with libopencv_core.so.4.2
[ 98%] Built target kitti_odom_test
[ 98%] Built target kitti_gps_test
[100%] Linking CXX executable /home/nvidia/vins_ws/devel/lib/vins/vins_node
/usr/bin/ld: warning: libopencv_video.so.4.2, needed by /home/nvidia/vins_ws/devel/lib/libvins_lib.so, may conflict with libopencv_video.so.405
/usr/bin/ld: warning: libopencv_core.so.405, needed by /usr/local/lib/libopencv_video.so.4.5.5, may conflict with libopencv_core.so.4.2

编译虽然通过了,但是有警告,这里是因为在链接过程中存在 OpenCV 库版本冲突。系统检测到两个不同版本的 OpenCV 库(4.2 和 4.5.5)被同时链接 。

段错误

如果不解决上述OpenCV 库版本冲突问题,后续运行vins_node将会出现段错误:

解决OpenCV 库版本冲突问题。

最好的解决方法就是全部统一成一个OpenCV 4.5.5。

# 卸载通过 apt 安装的 OpenCV
sudo apt purge -y '^libopencv.*' '^opencv.*'# 清除残留配置文件
sudo rm -rf /usr/local/include/opencv* /usr/local/lib/libopencv* /usr/local/share/opencv* \/usr/include/opencv* /usr/lib/x86_64-linux-gnu/libopencv* \~/.local/lib/python*/*/site-packages/cv2*# 更新系统库缓存
sudo ldconfig# 更新下
sudo apt-get updatesudo apt-get upgrade# 下载Opencv 4.5.5源码
wget https://github.com/opencv/opencv/archive/refs/tags/4.5.5.zip# 解压
unzip opencv-4.5.5.zip	# 安装依赖
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config# 编译安装
mkdir buildcd buildcmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON  -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF  -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..make -j8
sudo make install# 环境配置
sudo gedit /etc/ld.so.conf.d/opencv.conf# 添加以下路径
/usr/local/lib# 保存后,终端执行
sudo ldconfig # 更新路径
sudo gedit /etc/bash.bashrc# 最后添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH# 保存后,终端执行
source /etc/bash.bashrc
sudo updatedb

然后编译Vins Fusion 发现没有 cv_bridge

ither need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):Could not find a package configuration file provided by "cv_bridge" withany of the following names:cv_bridgeConfig.cmakecv_bridge-config.cmakeAdd the installation prefix of "cv_bridge" to CMAKE_PREFIX_PATH or set"cv_bridge_DIR" to a directory containing one of the above files.  If"cv_bridge" provides a separate development package or SDK, be sure it hasbeen installed.
Call Stack (most recent call first):VINS-Fusion/loop_fusion/CMakeLists.txt:9 (find_package)-- Configuring incomplete, errors occurred!
See also "/home/nvidia/vins_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/nvidia/vins_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

如果用这条ROS相关的安装cv_bridge的指令还会报错:

# 安装 ROS Noetic 的 cv_bridge
sudo apt-get install ros-noetic-cv-bridge

 原因是系统安装了OpenCV 4.5.5,但通过ROS官方源安装的cv_bridge是针对OpenCV 4.2编译的。而我们的代码需要OpenCV 4.5.5,因此可能需要重新编译cv_bridge以匹配我们安装的OpenCV版本。

重新编译cv_bridge以匹配OpenCV 4.5.5版本

# 1. 卸载旧版本(重要!)
sudo apt remove ros-noetic-cv-bridge# 2. 创建工作空间
mkdir -p ~/cv_bridge_ws/src
cd ~/cv_bridge_ws/src# 3. 获取vision_opencv源码(noetic分支)
git clone -b noetic https://github.com/ros-perception/vision_opencv.git# 4. 关键:修改编译配置
sed -i 's/find_package(OpenCV 3 REQUIRED)/find_package(OpenCV 4.5 REQUIRED)/g' vision_opencv/cv_bridge/CMakeLists.txt# 5. 编译安装
cd ~/cv_bridge_ws
catkin config -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=/path/to/opencv4.5.5/build
catkin build cv_bridge# 6. 添加环境变量(永久生效)
echo "source ~/cv_bridge_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

如果安装完还是报错:

# 查找 cv_bridge 的实际安装位置
find / -name "*cv_bridge*Config.cmake" 2>/dev/null

得到下面这个路径

/home/nvidia/cv_bridge_ws/devel/share/cv_bridge/cmake/cv_bridgeConfig.cmake 

在VINS-Fusion的CMakeLists.txt中(具体是loop_fusion/CMakeLists.txt)的find_package(cv_bridge)之前加入:

set(cv_bridge_DIR "/home/nvidia/cv_bridge_ws/devel/share/cv_bridge/cmake")

最后编译成功,没有warning也没有报错:

最后结果:

 
roslaunch vins vins_rviz.launchrosrun vins vins_node src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yamlrosrun loop_fusion loop_fusion_node src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml# 数据集去Vins-Fusion github官网上进行下载
rosbag play MH_01_easy.bag


文章转载自:

http://QnwBOnlz.tbbhj.cn
http://rMYx8Tmx.tbbhj.cn
http://4p0V1utW.tbbhj.cn
http://espJ1wy7.tbbhj.cn
http://0yFfVSy6.tbbhj.cn
http://L3c1ZFUI.tbbhj.cn
http://y6z1EIfM.tbbhj.cn
http://2mN8MYbv.tbbhj.cn
http://hiEjHPhC.tbbhj.cn
http://bQ92Fgka.tbbhj.cn
http://RhR2z26m.tbbhj.cn
http://PsAq6iCB.tbbhj.cn
http://B9Y1OyHj.tbbhj.cn
http://rX2vChAt.tbbhj.cn
http://lQ5bWeua.tbbhj.cn
http://oUWfhxRd.tbbhj.cn
http://nHSoshXN.tbbhj.cn
http://IkgcgOIx.tbbhj.cn
http://p55nzblG.tbbhj.cn
http://rB0TaS4Z.tbbhj.cn
http://5f5OfUgq.tbbhj.cn
http://J58E5NOX.tbbhj.cn
http://CBKHvEBX.tbbhj.cn
http://UYGJsB5s.tbbhj.cn
http://XOVU2DfE.tbbhj.cn
http://bt9XO2iA.tbbhj.cn
http://OqniKtDQ.tbbhj.cn
http://7ri4NhZe.tbbhj.cn
http://2ShNjBUs.tbbhj.cn
http://nvQJcyEq.tbbhj.cn
http://www.dtcms.com/a/228575.html

相关文章:

  • 网络安全厂商F5推出AI Gateway,化解大模型应用风险
  • 车载雷达:超声波雷达、毫米波雷达、激光雷达相关技术场景介绍和技术比较
  • 每日八股文6.3
  • 基于c++面向对象的设计(下)
  • 【AI论文】VF-Eval:评估多模态大型语言模型(MLLM)在生成人工智能生成内容(AIGC)视频反馈方面的能力
  • 【TMS570LC4357】之相关驱动开发学习记录2
  • C# Onnx 动漫人物人脸检测
  • 【设计模式-3.7】结构型——组合模式
  • 当 AI 超越人类:从技术突破到文明拐点的 2025-2030 年全景展望
  • 奥威BI+AI数据分析:企业数智化转型的加速器
  • Vue 渲染三剑客:createRenderer、h 和 render 详解
  • 工厂方法模式深度解析:从原理到应用实战
  • 使用ArcPy生成地图系列
  • win11中使用grep
  • 国产高性能pSRAM选型指南:CSS6404LS-LI 64Mb QSPI伪静态存储器
  • 【Visual Studio 2022】卸载安装,ASP.NET
  • VS下C++及C#项目打包发布方法
  • Cursor + Claude 4:微信小程序流量主变现开发实战案例
  • C++ 中的依赖注入(Dependency Injection)
  • 【论文阅读】Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting
  • 菲尔斯特非接触测温技术的核心应用与选型指南
  • 网络安全问题及对策研究
  • 5分钟申请edu邮箱【方案本周有效】
  • Linux 与 Windows:哪个操作系统适合你?
  • 用 Vue 做一个轻量离线的“待办清单 + 情绪打卡”小工具
  • 计算A图片所有颜色占B图片红色区域的百分比
  • 简简单单探讨下starter
  • 手动移植UGUI
  • 网络原理1
  • Baklib内容中台AI重构智能服务