VIO单目评测算法:A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots

2023-05-16

A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots

飞行器单目VIO算法测评

算法方面总结:

MSCKF算法
优点:成功完成了所有序列,不受硬件平台影响,鲁棒性高。
缺点:太古老不考虑。新型算法以同样资源消耗获取更高的精度。
OKVIS:
优点:全平台保持精确,综合精确度与成功率仅次于VINS-Mono。
缺点:运算量大,帧更新率低,低配置平台失败率高,尤其在ODROID上。对运算能力敏感。
ROVIO
优点:精确度高,占用资源量稳定且固定。
缺点:对CPU主频敏感,无法在Up Board上运行。
VINS-Mono:
优点:考虑回环检测时最为精确,不考虑回环检测时通常最为精确。
缺点:资源使用率高(指使用回环检测时),回环检测无法在低运算能力硬件,如ODROID上运行。
SVO-MSF:
优点:效率最高
缺点:不适合。需要手动初始化,精度低。
SVO-GTSAM:
优点:精度高,仅次于使用回环检测时的VINS-Mono,效率也较高。
缺点:不适合。鲁棒性低,对图像质量敏感,成功率低,占用资源多。

硬件方面总结:

Intel NUC:条件允许的情况下的最佳选择。
Up Board:CPU主频最低,使用时考虑到大部分算法均对CPU主频较为敏感,其中ROVIO无法在该平台使用。运算能力尚可。
ODROID:CPU主频较低,可以满足所有算法的运行要求。运算能力差,使用时需考虑到部分算法运算量较大,其中VINS-Mono: 无法在该平台使用回环检测,OKVIS在该平台成功率极低。

综上所述,以下分为三种情况。
一、条件允许的情况下,在硬件平台的选取上最佳选择为Intel NUC,该平台下,若运算资源可以向视觉惯性测距算法倾斜时,选取VINS-Mono以获取最佳精度,同时需考虑其他模块时选取折衷的ROVIO,要求效率最大化精度要求低时考虑SVO-MSF算法。
该硬件平台需求较高的安装空间(尺寸最大),载重能力和电池电量(功率最大,为其他平台的两倍之多)
二、使用Up Board平台时,由于CPU主频极低,无法使用ROVIO算法。同一,VINS-Mono依然为最高精度算法,资源占用率也极大。折衷考虑的选择为OKVIS算法,该算法成功率与精度综合考虑仅次于V-M算法,资源占用率也更低。最高效率的选择同一中所述。
该平台为64位,尺寸略小于Intel NUC,功率仅有其一半不到。
三、当使用ODROID算法时,由于CPU主频较低,运算量最差,无法使用V-M算法的回环检测,OKVIS算法由于运算量大在该平台下成功率也较低。尽管如此,追求最佳精度的选择依然为V-M算法。折衷选择与最佳效率选择同一中所述。
该平台为32位,尺寸最小,功率最小,但均与Up Board相近。值得注意的是质量仅有59g。

注:以上所述最优先考虑条件为成功率。当仅在平稳环境中运行时可以考虑SVO-GTSAM算法,该算法在简单平稳的环境中有着最为出色的综合表现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VIO单目评测算法:A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots 的相关文章

  • PX4自主飞行相关问题

    调试入坑 赶在回去之前把10月1日新校区试飞相关问题记录一下 首先是调试相关问题 调试具体流程 在校准遥控器时经常出现校准一半就停止的问题 xff0c 期初认为是固件问题 xff0c 换了1 6 5 1 6 3 xff0c 1 5 5三个固
  • PID控制器及其C++实现

    PID控制器原理 PID控制器实际上是对偏差的控制 其原理图如下 其数学的表达如下 u x 61 K p e r r t 43 1 T e r r t d t 43 T D d e r r t d t u x
  • Oracle Systimestamp 函数

    在Oracle PLSQL中 xff0c Systimestamp 函数返回本机数据库上当前系统日期和时间 包括微秒和时区 Systimestamp 函数的语法是 xff1a systimestamp 应用于 xff1a Oracle 9i
  • px4源码解读之fw_att_control

    目录 程序和控制流程源码解读总结 程序和控制流程 个人简单的总结了一下整个程序的流程如下 整个的控制流程图可以在官网中找到 源码解读 在解读源码之前 需要提几个公式 第一个就是协调转弯中的偏航控制 也就是流程图中为什么输入是空速 p 61
  • 安装Mavlink generator出现UnicodeEncodeError错误

    最近在看mavlink 在执行官网的操作时出现了问题 问题如下 span class hljs constant Exception span span class hljs keyword in span span class hljs
  • mc_att_control基础知识:向量运算和罗德里格斯旋转

    向量的叉乘和点乘 在我们的mc att control中有我们的向量的点乘和叉乘 一般遇到的都是三维的运算 S O 3 S O 3 李群 向量点乘 假设向量 a 61 a 1 a 2 a 3
  • 低通滤波器和高通滤波器的程序实现原理推导

    傅立叶变换 拉普拉斯变换和Z变换 对于信号分析而言 傅立叶变换是必不可少的 我们都知道傅立叶变换是把系统从时域变换到频域进行分析 那么拉普拉斯变换和Z变换是干什么的 简单的来说 由于傅里叶变换的收敛有一个狄利克雷条件 xff0c 要求信号绝
  • PX4源码解读之fw_pos_control_l1

    固定翼的位置控制是一个很重要问题 它不同于旋翼的控制 需要对速度和高度进行解耦控制 并且其不能像旋翼那样进行悬停 其转弯的时候有一个转弯半径 本博客不会对源码进行详细的解读 主要是分享一些自己读源码时的资料 自己读的过程中也有注释 想要的同
  • 四元数表示旋转的理解

    哈密尔顿 为了纪念四元数的发明者哈密尔顿 爱尔兰于1943年11月15日发行了下面这张邮票 哈密尔顿简直是个天才 哈密尔顿从小到进入大学之前没有进过学校读书 xff0c 他的教育是靠叔父传授以及自学 他找到了法国数学家克莱罗 xff08 C
  • mc_att_control源码解析

    目录 源码分析内环控制外环控制 之前写了博客分析了一下旋翼姿态控制的基础知识 mc att control基础知识 这次就对照代码将整个旋翼姿态控制过程呈现一遍 先看一下整个程序的框图 从图中可以看到 实际上整个控制分成内外两个环进行控制
  • PX4下载指定版本代码和刷固件的三种方式

    由于之前下载的是1 7版本的代码 现在v5版本的px4需要最新的代码固件 因此这里记录一下 查看自己代码版本 查看自己仓库代码版本的命令如下 git describe always tags 输出 v1 7 0 rc3 9 g0e1c7eb
  • Python怎么调用matlab的

    文章目录 环境的安装安装合适的python环境安装用于 Python 的 MATLAB 引擎 API 环境的安装 安装合适的python环境 研究这个也是在知乎上突然看到的 xff0c 以前python写的多 xff0c 现在由于工作需要
  • insert语句中sequence的使用方法

    我们常常在表中需要插入一些自动增长的值 一方面 我们可以手动添加这些值 xff0c 另一方面 oracle提供的sequence可以帮助我们实现插入的值自动增长 而不需要我们手动的提供值 我们需要做的就是设置好sequence的初值和增长值
  • Ubuntu 安装 vnc server

    查看Ubuntu系统版本 xff1a sudo lsb release a 安装Xfce桌面环境 xff1a sudo apt install xfce4 xfce4 goodies 配置gnome桌面环境 xff0c 参考 xff1a h
  • 嵌入式Linux(4):应用层和内核层数据传输

    文章目录 简介1 如果在应用层使用系统IO对设备节点进行打开 xff0c 关闭 xff0c 读写等操作会发生什么呢 xff1f 写个例子2 假如驱动层的file operations里面没有实现read之类的操作函数 xff0c 会发生什么
  • 嵌入式Linux(5):物理地址到虚拟地址映射

    文章目录 理论知识1 使能了MMU以后有什么好处呢 xff1f 2 MMU非常复杂 xff0c 那么我们如何完成物理地址到虚拟地址的转换呢 xff1f 3 如何查看哪些物理地址被映射过了呢 xff1f 实例 RK3568 理论知识 在Lin
  • 嵌入式Linux(6):驱动模块传参

    文章目录 1 什么是驱动传参 xff1f 2 驱动传参有什么作用 xff1f 3 怎么给我们的驱动传参数 xff1f 传递普通参数传递数组 1 什么是驱动传参 xff1f 驱动传参就是在安装驱动模块 xff08 ko文件 xff09 的时候
  • 嵌入式Linux(7):字符设备驱动--申请设备号

    文章目录 1 字符设备和杂项设备的区别2 注册字符类设备号的两个办法第一种 xff1a 静态分配一个设备号第二种 xff1a 动态分配注销设备号 写代码不带参数测试 xff08 动态分配 xff09 xff1a 带参数测试 xff08 静态
  • 嵌入式Linux(8):字符设备驱动--注册字符类设备

    文章目录 前言上代码 前言 杂项设备 注册杂项设备 xff1a span class token function misc register span span class token punctuation span span clas
  • 嵌入式Linux(9):字符设备驱动--自动创建设备节点

    文章目录 前言1 怎么自动创建一个设备节点 xff1f 2 什么是mdev3 什么是udev 4 怎么自动创建设备节点 xff1f 5 创建和删除类函数 自动生成类代码 6 创建设备函数 自动生成节点代码 前言 在上一节中 xff0c 使用

随机推荐