vio

2023-05-16

VIO概述

0.IMU与视觉进行比较

IMU视觉
惯性测量单元利用图像的VIO
六自由度IMU,陀螺仪测量角加速度、加速度计测量加速度利用图像通过特征、像素(直接法)进行位姿估计
高频>=100hz,应对载体位姿变化比较快的情况以图像形式记录数据,频率在15hz-60hz,载体位姿不能变化太快,受外界环境影响
快速响应,不受成像质量影响,角速度普遍估计比较准确,可估计绝对尺度不产生漂移、直接测量旋转与平移
存在零偏,低精度IMU积分位姿发散,高精度价格昂贵受图像遮挡、运动物体干扰;单目视觉无法测量尺度;单目纯旋转运动无法估计;快速运动容易丢失
适合短时间、运动快时比较准适合长时间、运动慢时估计准

利用视觉信息估计IMU的零偏,减少IMU由零偏导致的发散和累积误差;利用IMU为视觉提供快速运动时的定位。
IMU虽然可以测得角速度和加速度,但这些量都存在明显的漂移(Drift),使得积分两次得到的位姿数据非常不可靠。好比说,我们将IMU放在桌上不动,用它的读数积分得到的位姿也会漂出十万八千里。但是,对于短时间内的快速运动,IMU能够提供一些较好的估计。这正是相机的弱点。当运动过快时,(卷帘快门的)相机会出现运动模糊,或者两帧之间重叠区域太少以至于无法进行特征匹配,所以纯视觉SLAM非常害怕快速的运动。而有了IMU,即370第14讲SLAM:现在与未来使在相机数据无效的那段时间内,我们还能保持一个较好的位姿估计,这是纯视觉SLAM无法做到的。
相比于IMU,相机数据基本不会有漂移。如果相机放在原地固定不动,那么(在静态场景下)视觉SLAM的位姿估计也是固定不动的。所以,相机数据可以有效地估计并修正IMU读数中的漂移,使得在慢速运动后的位姿估计依然有效。
当图像发生变化时,本质上我们没法知道是相机自身发生了运动,还是外界条件发生了变化,所以纯视觉SLAM难以处理动态的障碍物。而IMU能够感受到自己的运动信息,从某种程度上减轻动态物体的影响。
总而言之,我们看到IMU为快速运动提供了较好的解决方式,而相机又能在慢速运动下解决IMU的漂移问题——在这个意义下,它们二者是互补的。

1.IMU与多种定位方案融合

  • 自动驾驶中通常用 IMU+GPS/差分 GPS/RTK 的融合定位方案,形成 GNSS-INS 组合导航系统,达到厘米组定位精度。
  • 头戴式 AR/VR 头盔则多使用视觉 +IMU 的 VIO 定位系统,形成高帧率定位方案。

2.融合方案

  • 松耦合:卡尔曼滤波
  • 紧耦合:MSCKF、非线性优化

3.预备知识

  1. 三维刚体运动

    坐标系为from I to W
  2. 四元数

    具体运算详见SLAM14讲
    利用单位四元数可以表达三维空间内的旋转
    从四元数为什么能表示三维旋转去理解它有的运算
    模长为1的复数可以表示复平面内的纯旋转;四元数与复数类似,单位四元数(模长为1、取模操作)可以表示三维内的旋转。
    四元数不唯一,相同的旋转可以由互为共轭(共轭操作)的四元数表示。
    连续旋转,四元数相乘,单位四元数的乘积还是单位四元数。
    旋转的逆,四元数的逆,单位四元数的逆和共轭是一样的。(求逆的时候简便操作
    叉积结果中含有叉乘项,所以四元数相乘不能交换位置。
  • ** 用四元数表示旋转在程序代和数学表示有一些细微的差别。**
    例如,通过运算符重载,四元数和三维向量可以直接计算乘法,但在数学上则需要先把向量转成虚四元数,再利用四元数乘法进行计算,同样的情况也适用于变换矩阵乘三维向量的情况。总体而言,程序中的用法会比数学公式更灵
    活一些。

https://blog.csdn.net/shao918516/article/details/105305525
对于理解是:q1*q2得到实部不为0的普通四元数,这时没办法映射到三维超平面(总不能转着圈就转到了四维空间吧),结果与最初的点不在同一三维空间。为了解决这个问题,先对第四维(角度)旋转一半,再用逆或共轭旋转回来,这时正好将产生的第四维变为0,重新回到初始的三维超平面空间。
在这里插入图片描述
程序中使用
SO3的matrix形式和eigen下的旋转矩阵值相同,但是重载了opearator *运算

Sophus::SO3d R2_SO3=R1_so3*Sophus::SO3d::exp(w);//小量w对应李代数

eigen和Sophus库的使用,需要注意拉!!!
对旋转点和旋转矩阵求雅可比的注意点(都是对向量求雅可比,所以对连续旋转矩阵求雅可比时要先转换成向量,再对某一旋转矩阵乘上小量)
Q: PPTp31页,左右交换取矩阵,符号相反

4.习题解答

https://blog.csdn.net/hitljy/article/details/107320682?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&dist_request_id=09cd2f58-ed1c-455b-b651-62cdc347e517&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

1.2 有哪些常见的视觉 +IMU 融合方案?有没有工业界应用的例子?

VINS (单目+IMU、双目+IMU)
OKVIS (单目+IMU、双目+IMU)
ROVIO (单目+IMU)
RKSLAM (单目+IMU)
ORB_SLAM-IMU(单目+IMU)

AR/VR,自动驾驶,无人机,手机、无人机拍照防抖

重点关注李群的性质,看清是关于旋转点的雅可比还是连续旋转矩阵的雅克比

每一微小干扰都是作用在R上的,R(-1)p----->(Rexp(w))(-1)*p

习题3
习题4

5.我的补充理解等等

旋转向量θu,u是旋转轴向量,θ是向量的长度,也就是旋转的角度
旋转向量和旋转矩阵的变换公式、罗德里格斯公式等
https://blog.csdn.net/shao918516/article/details/105109278
该链接解释的非常详细清楚

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

vio 的相关文章

  • 似乎做VIO要注意相机和IMU的同步

    似乎做VIO要注意相机和IMU的同步 xff0c 我多次看到这个了 https blog csdn net sinat 16643223 article details 109108616 MAVROS里我居然专门看到一个消息类型就是 IM
  • KITTI数据集我也是多次见到了,这还包含VIO+GPS的数据集。

    https github com slightech MYNT EYE VINS FUSION Samples https blog csdn net sinat 16643223 article details 115293953 ops
  • 一种GPS辅助的多方位相机的VIO——Slam论文阅读

    34 A GPS aided Omnidirectional Visual Inertial State Estimator in Ubiquitous Environments 34 论文阅读 这里写目录标题 34 A GPS aided
  • VINS-FUSION代码超详细注释(VIO部分)/VIO入门(4)

    文章目录 0 前情回顾本次工作 1 updateLatestStates 和slideWindow 2 optimization 0 前情回顾 VINS FUSION代码超详细注释 xff08 VIO部分 xff09 VIO入门 1 讲到了
  • DM-VIO简析

    今天主要是针对DMVIO DM VIO的简析 xff0c 中文网上有的东西都太少了 xff0c 只能靠看完论文和组员们一起改代码 Lukas组这个东西在中文网被称为有史以来最好的VIO xff0c 但是实际过程中我们还是发现了许多不完美的地
  • VIO/VINS/VSLAM问题定位流程与思路

    首先假设读者是了解基础VSLAM xff0c 了解VIO基础 至少要会标定 xff0c 调过几个开源系统的 先说一下双目的VINS FUSION xff0c 大部分问题都是基线造成的问题 xff0c 简单点说就是如果使用较短的基线如5cm
  • 主流VIO框架分析及VINS部分解析

    本文为搜集的资料整理 xff1a C0包含位姿和运动信息 xff1b 对于T0来说 xff0c 不仅受rv10 rv11的视觉影响 xff0c 也受rb01的IMU的影响 上述方式繁琐 xff0c 故引入因子图 xff0c 便于思路梳理和理
  • VIO标定(相机和IMU的标定)

    VIO标定 VIO标定分为三个部分 xff0c 相机的标定 xff0c IMU的标定 xff0c 相机和IMU的联合标定 双目相机相机内参标定 xff08 单目相机可以用类似的方法 xff09 标定单目和标定双目的区别 标定单目相机就是简单
  • Vins-fusion 针对数据集Kaist进行修改Kimera_vio_ros针对DBOW2--CATKIN的修改

    1 config文件 xff1a realsense stereo imu config yaml 更改 xff1a gt topic 34 pose transformed 34 增加真值topic 修改代码 xff1a rosNodeT
  • Deploying T265 in Ubuntu20.04 (PX4_VIO)

    Release 转载请注明出处https blog csdn net qq 46037020 article details 123203784 该文章的中文为个人经验总结与提示 xff0c 英文部分为资料原文摘抄引用 xff0c 便于在
  • 20.9.24 msckf_vio学习——源码试用问题

    msckf vio学习参考文见 xff1a https zhuanlan zhihu com p 76347723 本文主要解决在运行时的一些报错问题 xff1a 1 编译时出现没有random numbers的问题 博文 2 测试时 xf
  • msckf_vio使用记录

    使用环境 xff1a ubuntu14 04 indigo indigo版本的ros默认支持的是opencv2 4 8 xff0c 其带的库cv bridge依赖于opencv2 但是 xff0c msckf vio使用的是Ubuntu 1
  • 视觉惯性里程计Visual–Inertial Odometry(VIO)概述

    周围很多朋友开始做vio了 xff0c 之前在知乎上也和胖爷讨论过这个问题 xff0c 本文主要来自于知乎的讨论 来自https www zhihu com question 53571648 answer 137726592 个人理解错误
  • 视觉惯导里程计VIO综述

    最近阅读了VIO中的一些论文 xff0c 在这里做个汇总方便以后查阅 xff0c 如有问题欢迎指正 一 背景 VIO xff08 Visual Inertial Odometry xff09 视觉惯导里程计 xff0c VINS xff08
  • VIO松耦合和紧耦合对比

    松耦合 xff08 结果级融合 xff09 xff1a 两个独立的运动估计过程中分别处理视觉和惯性测量的信息 xff0c 最终将他们的输出 xff08 位置和姿态 xff09 融合作为结果 紧耦合 xff08 特征级融合 xff09 xff
  • dm-vio-ros的安装(详细)

    前言 dm vio安装 参考博客 SLAM DM VIO ros版 安装和论文解读 在安装过程中 xff0c 有些地方提示的不是很清楚 xff0c 故写一篇记录避免再次犯错 在dm vio的一个子目录下创建ros工作空间 xff0c 如图所
  • 关于VINS-MONO与VIO轨迹漂移问题定位的一些方向

    整个VINS MONO系统 xff0c 较容易在系统静止或外力给予较大冲击时产生轨迹漂移 xff0c 原因是imu的bias在预积分中持续发散 xff0c 视觉重投影误差产生的约束失效 如静止 xff0c 先验约束可能会在LM的线性求解器中
  • 关于VIO零速更新(ZUPT)与控制三种约束的工程实践

    今天这篇是深度稍微高一些的 xff0c 尽量写细 xff0c 但是具体实践各家都有不同的方式与工程习惯 xff0c 就不多赘述了 小组工作比较忙 xff0c 代码还没来得及整理 xff0c 总体更新一下基础知识 VIO系统后端核心的三种约束
  • VIO与全局快门及轮速计的一些应用小技巧

    封面就用一个可爱的小车车 之前各种针对VIO xff0c VSLAM和VINS的工程注意事项都讲过了 今天的内容主要是针对VSLAM xff0c VIO的实用性 比如Td xff0c 同步对时 xff0c 内参 xff0c 外参这一串 最近
  • 【深蓝学院】手写VIO第2章--IMU传感器--笔记

    0 内容 1 旋转运动学 角速度的推导 xff1a 左 61 omega wedge xff0c 而

随机推荐

  • webpack4+react+antd从零搭建React脚手架(一)

    本人是在windows环境下搭建的 xff0c ios自行摸索 代码地址PreByter 项目初始化 首先就是项目初始化 xff0c 一定确保安装node或者yarn二者均可 xff0c npm init 或者 yarn init 此时会生
  • webpack4+react+antd从零搭建React脚手架(二)

    接着上文 xff0c 对webpack 的配置的优化和对css xff0c 图片的编译 以及引入antd 项目代码地址react project 优化webpack 生成的文件名添加Hash值 output filename 34 js n
  • 一线大厂面试必知必会大公开

    作者 代码随想录 来源 代码随想录 企业一般通过几轮技术面试来考察大家的各项能力 xff0c 一般流程如下 xff1a 一面机试 xff1a 一般会考选择题和编程题 二面基础算法面 xff1a 就是基础的算法都是该专栏要讲的 三面综合技术面
  • Python实现观测值o文件和精密星历sp3文件读取

    博主之前准备利用Python编写精密单点定位程序 xff0c 奈何写了一半的读取文件代码 xff0c 觉得太浪费时间 xff0c 就此作罢 xff0c 这些时间不如多用来研究现有代码 xff0c 把这部分放弃的代码拿出来 xff0c 希望给
  • webpack4+react+antd从零搭建React脚手架(四)-redux搭建

    redux 文档地址 redux是对数据的状态管理 xff0c 是react不可缺少的一部分 xff0c 具体的概念这里就不进行详细的介绍 本文主要是介绍怎么引入redux和使用redux 单向数据流 xff1a 从父组件流向子组件 xff
  • Python:入门到实践-安装

    Python 入门到实践 安装 安装python环境安装启动终端会话HelloWorld 安装python环境 写在前面 xff0c 本文是基于Windows10系统下学时 xff0c 其他环境下 请自行研究 python版本是3 6 1
  • 阿里云部署web项目

    开始 xff08 额 xff0c 主要是自己忘了 xff0c 别人可以跳过 xff09 修改终端登录密码 xff1a 在实例里面 xff0c 有一个更多 xff0c 来管理密码安装yum xff08 其实也可以用pipe进行安装 xff0c
  • 前端项目部署到阿里云

    由于本人是个前端这里只介绍前端项目的部署 xff08 后台的部署见下一篇 xff09 准备工作 下载两个软件Xshell和Xftp xff08 也可以使用WinSCP 我使用的是windows系统 xff09 购买阿里云 xff0c 看需要
  • 如何重启MySQL,正确启动MySQL

    RedHat Linux Fedora Core Cent OS 1 启动 xff1a etc init d mysqld start 2 停止 xff1a etc init d mysqld stop 3 重启 xff1a etc ini
  • 阿里云Ubuntu16.04 python升级

    Ubuntu16 04 python2 7升级python3 5 正常情况下 xff0c 你安装好ubuntu16 04版本之后 xff0c 系统会自带 python2 7版本 xff0c 如果需要下载新版本的python3 5 xff0c
  • react 脚手架 run eject 之后 打包生成map文件 体积过大

    react 脚手架 打包生成map文件 体积过大 写在前面 xff0c map文件是帮助我们查看报错的位置的 map文件由devtool属性控制 xff0c 然后全文搜索devtool 发现在webpack config js文件 150
  • 机器学习实战分享:用 Python 进行信用卡欺诈检测

    本文旨在使用 XGBoost 随机森林 KNN 逻辑回归 SVM 和决策树解决分类问题 xff0c 内容较长 xff0c 建议收藏 关注 点赞 案例简介 假设你受雇于帮助一家信用卡公司检测潜在的欺诈案件 xff0c 你的工作是确保客户不会因
  • 麻将算法之 ------ 胡牌算法

    麻将数据牌集合 span class hljs keyword private span span class hljs keyword int span cardDataArray 61 span class hljs number 0x
  • ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测

    前言 xff1a 很久之前 xff0c 用TK1玩过一段时间的ROS xff0c 再加上各种硬件 Arduino 激光雷达 编码电机等 xff0c 模仿着做过Turtlebot小车 xff0c 实现了部分Turtlebot部分的功能 xff
  • 享年94岁,图灵奖得主、计算复杂性理论先驱Juris Hartmanis逝世

    7月29日 xff0c 1993年图灵奖得主 计算复杂性理论创始人之一Juris Hartmanis去世 xff0c 享年94岁 从物理学到数学 xff0c 最终深耕计算机科学领域 Hartmanis于1928年7月5日出生于拉脱维亚 xf
  • DSST目标跟踪算法

    DSST算法也是基于KCF算法改的较好的一种 DSST xff08 Accurate Scale Estimation for RobustVisual Tracking xff09 是2015年BMVC xff08 InProceedin
  • 解决workman部署到Linux环境无法启动和连接的问题(结合TP6框架)

    0 检查Linux是否满足workman的环境要求 span class token function curl span span class token parameter variable Ss span www workerman
  • 按照 STAR 法则介绍自己做过的项目

    大家好啊 xff0c 我是大田 介绍项目注意两点 xff1a 1 自己真的做过 2 逻辑表达能力 为什么推荐你用 STAR 法则说呢 xff1f STAR 法则是结构化面试中非常重要的理论 面试官通过这样的描述全面了解你的测试知识 经验 技
  • 汇总最近遇到的 Linux 面试题

    大家好啊 xff0c 我是大田 今天汇总最近小伙伴遇到的 Linux 面试题 1 你之前在公司使 linux 命令做什么 xff1f 搭建测试环境 查看后台 志 2 在之前公司 xff0c 测试环境使 的是哪个 linux 版本 xff1f
  • vio

    VIO概述 0 IMU与视觉进行比较 IMU视觉惯性测量单元利用图像的VIO六自由度IMU xff0c 陀螺仪测量角加速度 加速度计测量加速度利用图像通过特征 像素 xff08 直接法 xff09 进行位姿估计高频 gt 61 100hz