当前位置: 首页 > news >正文

论文阅读: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扩展到多机器人系统。

相关文章:

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

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

scrapy爬虫中间件和下载中间件的使用

一、关于中间件 之前文章说过&#xff0c;scrapy有两种中间件&#xff1a;爬虫中间件和下载中间件&#xff0c;他们的作用时间和位置都不一样&#xff0c;具体区别如下&#xff1a; 爬虫中间件&#xff08;Spider Middleware&#xff09; 作用&#xff1a; 爬虫中间件主要负…...

手敲单链表,简单了解其运行逻辑

1. 链表 1.1 结构组成 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 链表的结构如下图所示&#xff0c;是由很多个节点相互通过引用来连接而成的&#xff1b;每一个节点由两部分组成&#xff0c;分别数据域&…...

Redis RDB

基于内存的 Redis, 数据都是存储在内存中的。 那么如果重启的话, 数据就会丢失。 为了解决这个问题, Redis 提供了 2 种数据持久化的方案: RDB 和 AOF。 RDB 是 Redis 默认的持久化方案。当满足一定条件的时候, 会把当前内存中的数据写入磁盘, 生成一个快照文件 dump.rdb。Redi…...

Elasticsearch一些函数查询

1. 根据价格分组统计数量&#xff0c;每组区间为2000&#xff0c; filter_pathaggregations 设置查询结果只展示函数结果 也有date_histogram函数根据日期分组等等 GET order/_search?filter_pathaggregations {"aggs": {"hist_price": {"histogr…...

竞赛选题 : 题目:基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…...

Linux expect命令详解

在Linux系统中&#xff0c;expect 是一款非常有用的工具&#xff0c;它允许用户自动化与需要用户输入进行交互的程序。本文将深入探讨expect命令的基本语法、使用方法以及一些最佳实践。 什么是Expect命令&#xff1f; expect 是一个用于自动化交互式进程的工具。它的主要功能…...

ubuntu18编译Android8的Failed to contact Jack server问题

环境 ubuntu18.04 Android8.1.0 步骤 安装环境 apt install git-core apt install gnupg apt install flex apt install bison apt install gperf apt install build-essential apt install curl apt install libc6-dev apt install libssl-dev apt install libncurses5-dev:…...

FindSecBugs支持的检测规则

很多SAST集成了FindSecBugs这个开源工具&#xff0c;其好处是直接对Class文件进行检测&#xff0c;也就是直接检测二进制问题&#xff0c;可以直接检测war、jar&#xff0c;还是非常方便的。虽然误报率较高&#xff0c;但是这些检测出来的安全漏洞很多是安全从业人员耳熟能详的…...

【WPF.NET开发】WPF.NET桌面应用开发概述

本文内容 为何从 .NET Framework 升级使用 WPF 进行编程标记和代码隐藏输入和命令控件布局数据绑定图形和动画文本和版式自定义 WPF 应用 Windows Presentation Foundation (WPF) 是一个与分辨率无关的 UI 框架&#xff0c;使用基于矢量的呈现引擎&#xff0c;构建用于利用现…...

态势感知是什么

在当今高度信息化的时代&#xff0c;信息安全风险已经成为企业、政府和个人的重要关注点。为了有效应对这些风险&#xff0c;态势感知成为了一种日益重要的能力。态势感知是一种基于环境的、动态、整体地洞悉安全风险的能力&#xff0c;是以安全大数据为基础&#xff0c;从全局…...

Spring MVC常用的注解, Controller注解的作用,RequestMapping注解的作用 @ResponseBody注解的作用

文章目录 Spring MVC常用的注解和注解的相关作用Controller注解的作用RequestMapping注解的作用ResponseBody注解的作用PathVariable和RequestParam的区别 Spring MVC常用的注解和注解的相关作用 RequestMapping&#xff1a;用于处理请求 url 映射的注解&#xff0c;可用于类或…...

「Verilog学习笔记」自动贩售机1

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 自动贩售机中可能存在的几种金额&#xff1a;0&#xff0c;0.5&#xff0c;1&#xff0c;1.5&#xff0c;2&#xff0c;2.5&#xff0c;3。然后直接将其作为状态机的几种状…...

【大模型】更强的 ChatGLM3-6B 来了,开源可商用

【大模型】更强的 ChatGLM3-6B 来了&#xff0c;开源可商用 简介ChatGLM3-6B 环境配置环境搭建安装依赖 代码及模型权重拉取拉取 ChatGLM3-6B拉取 ChatGLM3-6B 模型权重及代码 终端测试网页测试安装 gradio加载模型并启动服务 参考 简介 ChatGLM3-6B ChatGLM3-6B 是 ChatGLM …...

Maxscript到Python转换工具教程

Maxscript到Python转换器教程 Maxscript到Python转换器采用MAXScript程序&#xff0c;将其解析为语法树&#xff0c;然后从语法树中生成等效的Python代码。通过提供python的自动翻译&#xff0c;帮助python程序员理解maxscript示例。 【项目状况】 将正确解析最正确的maxcript…...

Spark_日期参数解析参数-spark.sql.legacy.timeParserPolicy

在Apache Spark中&#xff0c;spark.sql.legacy.timeParserPolicy是一个配置选项&#xff0c;它控制着时间和日期解析策略。此选项主要影响如何解析日期和时间字符串。 在Spark 3.0之前的版本中&#xff0c;日期和时间解析使用java.text.SimpleDateFormat&#xff0c;它在解析…...

C语言之结构体

一.前言引入. 我们知道在C语言中有内置类型&#xff0c;如&#xff1a;整型&#xff0c;浮点型等。但是只有这些内置类 型还是不够的&#xff0c;假设我想描述学⽣&#xff0c;描述⼀本书&#xff0c;这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要名字、年龄、学号、⾝⾼、体…...

【蓝桥杯软件赛 零基础备赛20周】第5周——高精度大数运算与队列

文章目录 1. 数组的应用–高精度大数运算1.1 Java和Python计算大数1.2 C/C高精度计算大数1.2.1 高精度加法1.2.2 高精度减法 2. 队列2.1 手写队列2.1.1 C/C手写队列2.1.2 Java手写队列2.1.3 Python手写队列 2.2 C STL队列queue2.3 Java队列Queue2.4 Python队列Queue和deque2.5 …...

C#:程序发布的大小控制

.net不讨喜有个大原因就是.net平台本身太大了&#xff0c;不同版本没有兼容性&#xff0c;程序依赖哪个版本用户就要安装哪个版本&#xff0c;除非你恰好用的是操作系统默认安装的版本——问题是不同版本操作系统默认安装的不一样。 所以打包程序就很头疼&#xff0c;不打包平台…...

Python中的split()、rsplit()、splitlines()的区别

split、rsplit、splitlines的区别 1、split()2、rsplit()3、splitlines() Python提供了三种字符串分割的方法&#xff1a;split()、rsplit()和splitlines()&#xff1b;本文主要通过案例介绍这三种字符串分割函数的区别 1、split() split()主要用于从左向右匹配分割符进行分割…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...