VIO/VINS中关于能观性/可观性的详细讲解

这篇具有很好参考价值的文章主要介绍了VIO/VINS中关于能观性/可观性的详细讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以前大概写过一下,太烂了。。。也是没什么人写,再详细讲解一下

整体简洁一点尝试主要用文字说明这个比较关键的点,其实整体和多传感器融合也有很大的关联,无论是外感还是内感传感器,无外乎从运动出发或者从观测出发:

这个部分不需要扯到VIO里面非线性优化那块比较复杂的东西,直接列出线性高斯情况下的运动/观测方程:

运动方程:Xk=A(k-1)X(k-1)+Vk+Wk, k=1,....K

观测方程:Yk=CkXk+Nk, k=0,......,K

这2个式子大家应该都很熟悉了,随便敲的格式可能不是很好请忽略,重点是里面那一串矩阵,只列和能观性/可观性相关的核心矩阵:

A: 转移矩阵 C:观测矩阵

输入Vk其实还有个很重要的矩阵B,一般叫控制矩阵,理解为Vk=B*Uk

输入量Vk的噪声协方差矩阵Q,观测变量Yk的一次实现Ymeas协方差矩阵R

能观性/可观性实际上就是判断对应的运动/观测线性方程组是否有唯一解的过程。(VIO里的非线性优化也是一样,最终的方程组,无论是近似目标函数或者近似残差/误差函数,在能观性/可观性判断上是一致的,不要焦虑)。

判断是否有唯一解的标准条件就是:Q>0, R>0, rank(O)=N

首先除了运动和观测的噪声,系统一定还会有未知的偏差,比如视觉里程计的路标观测偏差,以及IMU的随机游走BIAS等,本身这些偏差分量的估计就是状态估计问题的一部分。通常有偏估计我们要加入一个积分器进行处理,在有偏差的运动与观测模型下,能观性矩阵O需进行增广处理,这里面的能观性矩阵O就是一个C,A与B构成的增广矩阵形式。

举2个最直观的二维小车的例子!(来自:“机器人学中的状态估计")

  1. 针对运动方程,如果这个偏差来自于加速度,则系统能观/可观,运动方程有唯一解! 如果偏差同时来自于速度v与加速度a,会使能观性矩阵O出现相同的列,导致O的秩不再等于N,系统不能观/不可观。

  2. 针对观测方程,如果这个系统无偏,则其能观/可观;而当其路标产生偏差时,系统的能观性矩阵O将出现相同的列,导致不能观/不可观。这个非常好理解,即当小车和路标同时移动时,测量不变。

最后是结论:

对于整个机器人状态估计,如VIO,我们最终的目标是求解正定方程:Ax=b,它有3种情况,要么无解,要么唯一解,要么无穷多组解。而在我们的批量BA优化器中,实际是有无穷多组解。

回到VINS系统,4自由度不可观(3平移+yaw),roll和pitch因重力存在而可观。因此我们的初始化才会如此重要,目的就是对状态进行一个初始的估计,确定Pbc,Qbc,GC0,Bias等,而我们在运行过程中的解依赖于我们对初始条件的选取,从另一个角度来说,初始时刻引入的偏置将一直存在于系统中。文章来源地址https://www.toymoban.com/news/detail-690886.html

到了这里,关于VIO/VINS中关于能观性/可观性的详细讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【20年VIO梳理】

    1. 开源代码介绍: DSM Direct Sparse Mapping(DSM)是一个采用直接法的单目视觉SLAM系统,可以看成是DSO的一个增强版本。DSM与DSO最大的不同在于,DSM可以处理地图点的重观测。 为此,DSM借鉴了ORB-SLAM2中的局部窗口和共视关系等概念。DSM最大的优点在于代码的模块化做的很好,程序的

    2024年02月08日
    浏览(29)
  • VINS学习03——使用Realense_D435i运行Vins_Fusion

    上一篇跑了一下VINS_Fusion自带的demo,用的是几个常用的开源数据集,这篇文章主要是将VINS_Fusion用在自己的实验室设备上,在进行前期参数标定、config文件修改、精度验证过程中对算法有更深次理解,也方便后期开展 代码阅读 。 realsense_d435i是一个很常用的相机,主要包含话

    2024年02月11日
    浏览(37)
  • VIO主流SOTA算法介绍

          VIO(Visual-Inertial Odometry视觉惯性里程计)即结合相机与惯性测量单元IMU实现局部状态如位置、姿态、速度、路标点的最优状态估计。完整的SLAM系统还包括闭环检测(位置识别和相对状态求解)、全局地图构建(位姿图或者全局BA)等,理论上说这些模块可以在不同的VI

    2024年02月07日
    浏览(18)
  • Vivado之VIO原理及应用

    虚拟输入输出(Virtual Input Output,VIO)核是一个可定制的IP核,它可用于实时监视和驱动内部FPGA的信号,如图所示。 可以定制VIO的输入和输出端口的数量与宽度,用于和FPGA设计进行连接。由于VIO核与被监视和驱动的设计同步,因此应用于设计的时钟约束也适用于VIO核内的元件。

    2024年02月15日
    浏览(29)
  • UART 通信-使用VIO进行板级验证

    串口系列知识分享: (1)串口通信实现-串口发送 (2)串口通信发送多字节数据 (3)串口通信实现-串口接收 (4)UART 通信-使用VIO进行板级验证 (5)串口接收-控制LED闪烁 (6)使用串口发送实现ACX720开发板时钟显示 (7)串口发送+RAM+VGA传图 本章将学习 UART 通信的原理及

    2024年02月09日
    浏览(30)
  • VIO第2讲:IMU标定实验

    参考代码 5.1.1 c++代码分析 下面代码确实是高斯噪声连续到离散除以 sqr(δt) ,偏差随机游走则是乘以 sqr(δt) 。 运动模型:利用p求出v,a;通过欧拉角的导数求出角速度w,根据时间变量t来产生数据。 5.1.2 生成ros包数据   GitHub同时提供了 ros 代码,我们直接用这套代码生成

    2024年02月21日
    浏览(30)
  • Vivado中VIO IP核的使用

      Vivado中的VIO(Virtual Input/Output) IP核是一种用于调试和测试FPGA设计的IP核。它允许设计者通过使用JTAG接口读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与FPGA内部寄存器进行交互。通过使用

    2024年02月06日
    浏览(88)
  • SLAM-VIO视觉惯性里程计

    VIO(visual-inertial odometry)即视觉惯性里程计,有时也叫视觉惯性系统(VINS,visual-inertial system),是融合相机和IMU数据实现SLAM的算法,根据融合框架的区别又分为紧耦合和松耦合,松耦合中视觉运动估计和惯导运动估计系统是两个独立的模块,将每个模块的输出结果进行融合

    2024年02月11日
    浏览(40)
  • px4+vio实现无人机室内定位

    文章主要讲述px4 如何利用vins_fusion里程计数据实现在室内定位功能。 文章基于以下软、硬件展开。 硬件 软件 机载电脑: Intel NUC 系统:Ubuntu 20.04 相机: Intel Realsense D435i ros:noetic 飞控:Pixhawk 2.4.8 固件:PX4 1.14.0 完整vins_to_mavros 功能包地址: https://github.com/rotorcraftman/px4ctr

    2024年02月03日
    浏览(48)
  • Vins-Fusion代码跑通

    首先是Ubuntu2004 电脑里面有opencv3和opencv4共存, 现象:编译的时候ros指向opencv4版本之间的不兼容导致 源码安装vins-mono算法问题整理(ROS Melodic + opencv 4.1.1) - 创客智造/爱折腾智能机器人社区 测试环境 :Jetson Xavier NX+ Jetpack4.4 + Ubuntu 1804 + ROS Melodic + opencv 4.1.1   问题一  编译时

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包