论文阅读:Distributed Initialization for VVIRO with Position-Unknown UWB Network

前言

Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章,本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。

对于位置未知的UWB锚节点,我们通过求解一个机器人辅助的分布式定位算法( Robot-aided Distributed Localization,RaDL )来初始化它们的位置。

对于机器人状态估计,我们将初始化锚点的测距测量值和视觉惯性测量值融合在一个一致滤波器中。将RaDL建模为基于一致性的优化问题,并采用分布式交替方向乘子法( Distributed Alternating Direction Method of Multipliers,D-ADM )算法进行求解。

为了识别不可观测的条件,我们提出了一种基于自包含Fisher信息矩阵( Fisher Information Matrix,FIM )的准则,该准则可以由每个锚节点直接使用本地保留的测距测量值进行评估。

我们使用协方差交集( Covariance Intersection,CI )来估计初始化锚点位置的协方差,以进行一致性数据融合。

一、问题背景

问题可以分为两个阶段:

1 .机器人辅助的UWB传感器网络定位问题;

2 .带有机载视觉惯性传感器和外部初始化UWB锚点的机器人状态估计问题

主要问题:

由于缺乏全局信息,VIO方法在长轨迹上存在定位漂移问题。

当UWB锚节点众多时,集中式方法容易导致整个网络严重的通信拥塞和中心节点的高计算复杂度。

在机器人辅助分布式定位( Radl )中存在两个主要的挑战:

1 .以分布式的方式求解优化问题;

现有的方法[ 22 ] [ 23 ]使用锚点的位置来评估FIM,这需要在评估FIM之前解决计算密集型的优化问题。

2 .识别不可观测条件,避免求解器发散。

由于与测距测量相对应的历史姿态被保存在状态的长窗口中[ 5 ],状态向量及其协方差随着UWB锚点数量的增加而膨胀,导致在应用于大规模UWB网络时面临挑战。

二、主要假设

未知位置UWB网络

基于滤波器的估计器

三、理论流程

RaLD方法

UWB网络被设计成对等结构,其中UWB锚点在簇中充当节点( Opt。图2中的节点)。UWB网络中的每个节点利用其本地保存的测距测量值(图2中的局部测距)来估计Fisher信息矩阵( FIM )的行列式,然后决定是否准备初始化(图2中的FIM基判据)。我们使用集中式的Levenberg - Marquard算法进行单锚点初始化。

VIRO估计器

如图2所示,机器人平台在多状态约束卡尔曼滤波( MSCKF )框架(图2中FEJ - VIRO)中融合视觉惯性测距测量。算法2给出了机器人平台上运行的程序,可以看作是两部分:第2行9机器人状态估计,第10行13将初始化的UWB锚点增强为CI状态。如果对应的UWB锚点没有被增强到机器人状态(线3⋅7),则在机器人平台上放弃测距测量。

基于FIM的判据

Fisher信息是一种度量一组测量携带的关于未知状态的信息量的方法。

高斯假设下的Fisher定义:

如( 5 )所示,如果我们用Ha估计det ( F ),锚点的位置Gpa需要估计,这需要求解一个计算密集型的优化问题。因此,我们利用Cauchy - Binet公式对det ( F )进行了几何解释,它具有如下形式:

其中( rj1 × rj2) · rj3等于如图3所示的平行六面体的体积.然后我们计算了四面体的体积| VOABC |,如图3 ( b )所示,其中( rj1 × rj2) · rj3是它的六倍。逆着图3 ( b )中{ rj1,rj2,rj3 }的方向,A,B,C三点对应图3 ( a )中的{ GpIj1,GpIj2,GpIj3 } .因此我们可以利用Heron型公式和Cayley - Menger行列式计算| VOABC |:

考虑到det( [ uj1 uj2 uj3 ]⊤) = 6 | VOABC |如图3 ( b )所示,我们可以用( 6 )计算det ( F )。此外,det ( F )可以随着新接收到的测距测量值进行增量更新。假设锚节点在tk时刻接收到一个新的测距量dk,用Υ k - 1计算det ( Fk - 1 ),其中Υ k - 1包含所有收集到的测距量,直到tk - 1。将dk和测距对{ di,dj }∈Υ k - 1以及对应的机器人位姿结合起来,利用式( 8 )计算det( [ uk uj ui ]⊤)2。然后将结果与det ( Fk-1 )相加,得到当前的FIM估计值det ( Fk )。由于det ( F )量化了已有的n个测距测量值所携带的信息,当det ( F ) > τ F时,我们可以设置一个阈值τ F来初始化UWB锚点的位置。

分布式优化

我们通过求解一个非线性优化问题来初始化UWB锚节点的位置,该问题是在基于一致性的优化框架中重新制定的。求解器的初始值由文献[ 27 ]给出,如文献[ 5 ]。

我们假设一个UWB锚点在时间步长tk (见图1中的Ready UWB Anchor)满足基于FIM的准则,并且存在n - 1个初始化的UWB锚点(见初始化UWB锚点图1)。对于这些n个UWB锚点,我们有det ( Fi ) > τF ( i = 1,2 , · · · , n)。优化问题:

在[ 19 ]的基础上,我们用分布式交替方向乘子法( D-ADMM )求解( 10 ) .在D - ADMM算法中,我们将一个对偶变量λ ij与每个约束xci = xcj( i , j = 1 , · · · , n)相关联。每个Opt。图2中的节点保留一个局部决策估计xci和一个对偶变量的向量λ ji,其中j < i .每个Opt。图2中的节点交替更新本地状态和对偶变量:

节点由UWB锚节点的ID进行排序。在每次迭代中,选择.节点更新分两步进行。首先,他们用利文贝格-马夸德( LM )求解( 12 ),以更新局部决策估计,并进一步用( 13 )更新对偶变量。其次,他们将新的决策估计值xci,k + 1和新的对偶变量λ k + 1ji发送给他们的后继者进行下一次迭代.

一致性VIRO滤波器

在这一部分中详细描述了在机器人上运行的基于滤波器的第一估计雅克比视觉惯性测距( FEJVIRO ),它在MSCKF框架中融合了UWB、相机和IMU的测量。我们只介绍[ 5 ]中的不同部分,读者可以参考我们先前的工作[ 5 ]来获得更多的细节。

[5]S. Jia, Y. Jiao, Z. Zhang, R. Xiong, and Y. Wang, “Fej-viro: A consistent first-estimate jacobian visual-inertial-ranging odometry,” arXiv preprint arXiv:2207.08214, 2022.

向量情况:

距离测量及其雅可比:

带CI的协方差

尽管带CI的协方差恢复运行在新初始化的UWB锚点上,但我们在这个模块中描述它,因为它的目标是在机器人状态中增加初始化的锚点位置时保持VIRO滤波器的一致性。通过恢复锚点位置的协方差Paa的上界来保证一致性。

锚点协方差:

注意到Ω = { P1 · · · PM }是Pxx的6 × 6对角子矩阵。由( 24 )式,我们需要Pxx的上界来计算Paa的上界。根据协方差交集理论[ 25 ],Pxx的上界由下式给出

通过上述两式可以得到锚点协方差的上界。如果{ G ( pai,( Paa ) }在机器人状态中没有被增广,我们只将其增广到状态和协方差。如果状态已经包含了它的估计位置Gpai,s和协方差Paa,s,我们用CI融合现有的值和新的估计值:

四、实验方案

基于OpenVINS [ 1 ]实现了Consistent VIRO Filter它是目前最先进的基于滤波器的视觉惯性估计器。基于机器人操作系统( Robot Operating System,ROS )实现了分布式UWB初始化方法。

仿真实验

真实环境实验

五、创新总结

方法:

第一阶段:

对于第一个挑战,我们通过共识形成( [ 18 ] )来重新表述集中式问题,并使用一种流行的称为分布式ADMM [ 19 ] [ 20 ]的对偶方法来解决。

对于第二个挑战,传感器位置的可观测性通常由Fisher信息矩阵( Fisher Information Matrix,FIM )进行分析。通过利用几何解释,我们提出了一种增量方法,直接利用锚点的局部测量来评估FIM的行列式,从而产生基于FIM的在线准则启动优化。

第二阶段:

在这项工作中,我们用协方差交叉( CI )恢复优化锚点的协方差[ 24 ] [ 25 ],这是一致融合和协方差恢复的有用技术[ 26 ]。我们将机器人关键帧的位姿和小的边缘协方差广播到UWB网络中,然后用CI计算全协方差的上界。因此,每个锚点可以在优化后恢复其协方差,然后将位置和协方差传输给机器人以进行一致的状态增强。在机器人状态中增加一个锚点i后,机器人通过机器人与锚点i之间的距离测量来更新状态。

综上所述,本文的主要贡献如下:

·提出了一种基于位置未知UWB网络的视觉-惯性-测距一致性里程计分布式初始化方法DC - VIRO;

·将UWB初始化问题重新纳入一致性优化框架,并采用D - ADMM算法进行求解。我们还提出了一种基于FIM的准则来识别不可观测的情况,该准则是自容式的,并且只需要局部测距测量。

·我们使用CI技术有效地恢复了锚点位置的协方差。在机器人状态下,将恢复的协方差和优化的锚点位置进行增广,从而得到准确和一致的VIRO滤波器。

本文提出了一个分布式系统,它将来自相机、IMU和UWB的测量进行一致融合,以估计机器人的位姿和UWB锚点的位置。机器人平台和所有装有机载计算机的UWB锚点都是集群中的计算节点,它们之间只传输状态值和边缘协方差。机器人运行一个轻量级且一致的VIRO滤波器来估计机器人位姿。而UWB网络一旦满足基于FIM的准则,就用D - ADMM估计锚节点的位置。将估计的锚点位置发送给机器人,并与CI技术一致地增强到VIRO滤波器中。在未来的工作中,将尝试将DC - VIRO扩展到多机器人系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/201011.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决:ModuleNotFoundError: No module named ‘qt_material‘

解决&#xff1a;ModuleNotFoundError: No module named ‘qt_material’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named qt_material背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时&#xff0c;报错&…

Django快速搭建静态网页

Django的快速搭建 这个是例子 这个是一个目录 项目名称&#xff1a;项目似乎被命名为DJ0928&#xff0c;这是Django项目的根目录。 文件都是Django项目的核心配置文件。 settings.py 包含了项目的配置设置。urls.py 定义了项目的URL路由。wsgi.py 和 asgi.py 分别用于Web服务器…

力扣刷题篇之分治

系列文章目录 目录 系列文章目录 前言 一、分解问题 二、解决子问题 三、合并结果 总结 前言 刷题按照&#xff1a; [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 - 力扣&#xff08;LeetCode&#xff09; 参考&#xff1a; 「五大常用算法」一文搞懂分治算法…

爬虫学习 异步爬虫(五)

多线程 多进程 协程 进程 运行中的程序 线程 被CPU调度的执行过程,操作系统 运算调度的min单位 在进程之中,进程中实际运作单位 from threading import Thread#创建任务 def func(name):for i in range(100):print(name,i)if __name__ __main__:#创建线程t1 Thread(target …

异步操作的方法

在高级语言中已经有了异步的原语言&#xff0c;而在C 中的最好的方式就是 libevent 的方式,我这还是相当认同的&#xff0c;高级语言就不需要在苦哈哈的&#xff0c;事件转圈了&#xff0c;但是原理还是以事件为基础的 一句话就是在一个循环中等着他执行完,这个循环中有很多其他…

CodeMeter软件保护及授权管理解决方案(二)

客户端管理工具 CodeMeter Runtime是CodeMeter解决方案中的重要组成部分&#xff0c;其为独立软件包&#xff0c;开发者需要把CodeMeter Runtime和加密后的软件一起发布。CodeMeter Runtim包括以下组件用于实现授权的使用&#xff1a; CodeMeter License Server授权服务器 Co…

Leetcode(面试题 08.01.)三步问题

文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下Leetcode(面试题 08.01.)三步问题相关的内容 一、题目分析 1.小孩可以上一阶&#xff0c;两阶&#xff…

2948. 交换得到字典序最小的数组 (分组排序)

Problem: 2948. 交换得到字典序最小的数组 文章目录 题目思路Code 题目 给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。 在一次操作中&#xff0c;你可以选择任意两个下标 i 和 j&#xff0c;如果 满足 |nums[i] - nums[j]| < limit &#xff0c;则交换…

Python之数据可视化

文章目录 一、1、matplotlib简单应用1.1、绘制带有中文标签和图例的图1.2、 绘制散点图1.3、绘制饼状图1.4、多个图形一起显示 一、 1、matplotlib简单应用 matplotlib模块依赖于numpy模块和tkinter模块&#xff0c;可以绘制多种形式的图形&#xff0c;包括线图、直方图、饼状…

05_MySQL主从复制架构

任务背景 ##一、真实案例 某同学刚入职公司&#xff0c;在熟悉公司业务环境的时候&#xff0c;发现他们的数据库架构是一主两从&#xff0c;但是两台从数据库和主库不同步。询问得知&#xff0c;已经好几个月不同步了&#xff0c;但是每天会全库备份主服务器上的数据到从服务…

一文详解Python中常用数据类型

文章目录 Python 中常用的数据类型包括&#xff1a;Python 中布尔类型(bool)Python 中的数字类型概述Pyhon中的字符串概述Python 中的List概述Python 中的元组类型(tuple)Python中的字典&#xff08;Dictionary&#xff09;Python中的集合&#xff08;Set&#xff09;Python中的…

Python---练习:求某同学成绩的总分及平均分

需求&#xff1a; 已知某同学的语文(70)、数学(90) 、英语(80)、历史(75)、地理(85)五门课的成绩,编程求该同学的总分以及平均分。 思考&#xff1a; 要求是算总分和平均分&#xff0c;先看总分&#xff0c;已经知道了各科成绩&#xff0c;那么可以用把成绩赋值给每个学科的…

使用Postman创建Mock Server

这篇文章将教会大家如何利用 Postman&#xff0c;通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧&#xff0c;可以在没有依赖项的情况下进行单元测试。通常情况下&#xff0c;Mock 与其他方法的主要区别就是&#xff0c;用于取代代码依赖项的模拟对…

Linux下Docker 离线安装详细步骤,亲测成功

1.离线原因&#xff1a;公司新创不能使用开元linux&#xff0c;使用了一个变种centOS&#xff0c;致使yum被禁 2.步骤&#xff1a; 2.1 下载docker tar包&#xff0c;下载地址&#xff1a;Index of linux/https://download.docker.com/linux/ 2.2 新建自己的软件目录&am…

IELTS学习笔记_grammar_新东方

参考&#xff1a; 新东方 田静 语法 目录&#xff1a; 导学简单句… x.1 导学 学语法以应用为主。 基础为&#xff1a;单词&#xff0c;语法 进阶为&#xff1a;听说读写译&#xff0c;只考听说读写。 words -> chunks -> sentences, chunks&#xff08;语块的重要…

嵌入式设备与PC上位机通信协议设计的几点原则

嵌入式设备在运行中需要设置参数&#xff0c;这个工作经常由PC机来实现&#xff0c;需要为双方通信设计协议&#xff0c;有代表性协议是如下三种&#xff1a; 从上表可以看到&#xff0c;一般嵌入式设备内存和运算性能都有限&#xff0c;因此固定二进制是首选通信协议。 一&am…

使用 Docker 安装和配置 MySQL 数据库简介

目录 一、使用镜像安装 1、查询镜像 2、拉取镜像 3、查看本地镜像 4、启动docker镜像 二、使用Docker Compose安装 1、安装Docker和Docker Compose 2、创建Docker Compose文件&#xff1a; 3、启动MySQL容器 4、验证MySQL容器是否正常运行 5、连接到MySQL容器 6、停止…

智能优化算法应用:基于水循环算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于水循环算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于水循环算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水循环算法4.实验参数设定5.算法结果6.参考文献7.…

Error running OrderServiceBoot. Command line is too long.

微服务启动不成功&#xff0c;报Error running OrderServiceBoot. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun. 解决&#xff1a; 方法一&#xff1a; 右上角启动小三角 -->Edit configuration–>-右侧…

【Python】基础练习题_组合数据类型_2

dictMenu f’卡布奇洛’:32,‘摩卡’:30,‘抹茶蛋糕’:28,‘布朗尼’:26}&#xff0c; dictMenu 中存放了你的双人下午套餐&#xff08;包括咖啡2份和点心2份)的价格,请编写程序,让Python帮忙计算并输出消费总额。 dictMenu {卡布奇洛: 32, 摩卡: 30, 抹茶蛋糕: 28, 布朗尼: 2…
最新文章