VINS学习04———Omni教程
创始人
2024-03-19 11:53:12
0

1. 本文简介

本文依照港科大开源的代码和论文
文章主要内容:对无人机集群实现协同定位。参与融合的定位因子有以下4点

  1. 全向鱼眼相机的VIO定位:VINS-Fisheye
  2. 基于地图定位:视觉特征点协同建图
  3. 基于UWB协同定位:节点间测距
  4. 视觉检测定位

2.论文框架

请添加图片描述

3.算法安装与环境配置

3.1 创建工作空间

备注:3.2中安装插件cv_bridge中也创建过,不要重复创建,用一个即可

mkdir -p GDPt_ws/src
cd GDPt_ws/src
catkin_init_workspace

3.2 安装依赖插件

我写的VINS系列代码需要插件安装教程
注:这节看起来平平无奇,但是环境总是最难配的,所以我单独写了一篇

3.3 添加Omni-swarm所需核心功能包

①依赖功能包

cd GDPt_ws/src
git clone https://github.com/HKUST-Swarm/inf_uwb_ros.git
git clone https://github.com/HKUST-Swarm/bspline
git clone https://github.com/HKUST-Swarm/swarm_msgs.git

通过catkin_make编译,编译成功再走下一步。
可能会遇到eigen3,opencv,lib**类似问题,请点击3.2的链接参考我另外一篇文章

cd src
git clone https://github.com/HKUST-Aerial-Robotics/Omni-swarm
git clone https://github.com/HKUST-Swarm/swarm_detector

然后下载models,下载地址(大小655MB),解压缩之后放在swarm_loop文件夹下,如图
在这里插入图片描述

3.4 Debug

建议直接catkin_make,下边列出我出现的错误

①找不到Eigen3

Could not find a package configuration file provided by "Eigen3" with anyof the following names:Eigen3Config.cmakeeigen3-config.cmakeAdd the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set"Eigen3_DIR" to a directory containing one of the above files.  If "Eigen3"provides a separate development package or SDK, be sure it has beeninstalled.

首先确定你成功安装eigen3

pkg-config --modversion eigen3

如果显示版本,那么证明你成功安装,是搜索目录的问题,解决方法

②缺少 libXX

/usr/bin/ld: 找不到 -ldw
collect2: error: ld returned 1 exit status

有这几种可能
我是因为之前没有安装libdw
直接 sudo apt-get install libdw-dev

② camera_models
可以在VINS_Fusion的文件夹下找到
建议先下载VINS_Fusion,然后把camera_models文件夹拖到GDPT/src(GDPT是我的工作空间)
③ vins
是类似的 也是在VINS_Fusion 下可以找到
①②解决完的文件夹是这样的
在这里插入图片描述
注意!!!:如果你把VINS_fusion添加进来还是显示缺少vins-config,就先把OMni和swarm_detector先剪切出去,等其余功能包编译成功,再复制回来再次编译。
原理:功能包之间互相依赖的时候编译顺序是很重要的,正规做法是先单独编译被依赖的VINS_Fusion先单独编译,再共同编译。

③缺少Opencv 3.4.0
我电脑上之前有Opencv3.2.0,但是用不了,我是把3.2.0版本的卸载了,安装3.4.10教程
④缺少Torch
缺少Torch这个部分我奋斗了好几天,先总结以下我的经验,

由于OMni有目标检测的部分,所以用到了深度学习的pytorch库,那么pytorch又依赖CUDA,CUDA需要使用显卡他的安装又受显卡驱动的影响,所以是绝对不能在虚拟机上做的

给出比较好的一个教程,但是我个人是没有成功,我担心是由于硬件限制,所以决定不死磕了,因为我实际上做的是融合定位的部分,那目标检测的因子本来也不加上,所以把重点转移到如何修改Omni代码,不跑torch
所以以下是不用目标检测部分的代码调试!!!!!!!!!!!!!!!

详细修改内容
删除3.3中git clone的swarm_detector功能包
src/Omni-swarm/swarm_loop/CMakeLists.txt
h9set(USE_TENSORRT on)改为set(USE_TENSORRT off)
h43和h44 注释,具体内容如下

find_package(CUDA)
include_directories(${CUDA_INCLUDE_DIRS} ${TORCH_INCLUDE_DIRS})

src/Omni-swarm/swarm_localization/CMakeLists.txt
h59~h61 以及 h76之后 注释,具体注释内容如下

add_executable(${PROJECT_NAME}_simulatortest/swarm_local_sim.cpp)target_link_libraries(${PROJECT_NAME}_simulator${catkin_LIBRARIES}${CERES_LIBRARIES}${camera_models_LIBRARIES}${YAML_CPP_LIBRARIES}dwfaissOpenMP::OpenMP_CXX
)

在这里插入图片描述
编译catkin_make,我会有一个cmake的警告,但是问题应该不大:

至此编译成功,但是距离算法成功应用还有一段举例,未完待续…

4.下篇预告——omni-swarm 算法应用

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...