【论文阅读】Robust Object-based SLAM for High-speed Autonomous Navigation

news2024/9/22 23:16:26

一、问题概述

这篇文章是在QuadricSLAM的基础上进行的改进,也就是说依然使用了椭球对物体进行描述,论文中提到使用椭球本身是因为椭球其参数化表示可以完全通过相机的检测框来进行约束,二次曲面与对偶二次曲面可以参考链接,文章使用了对偶二次曲面的形式进行描述。

在SLAM的部分,文章将物体参数与相机位姿一起进行优化,因此SLAM的问题描述变为:
在这里插入图片描述
而我们需要的,就是最大化这一概率:
在这里插入图片描述
为了简化问题,论文假设有一个单独的前端来提供准确的位姿,因为论文进行了两个数据集上的实验,在这两个实验中分别使用ORBSLAM和一篇无人机SLAM来提供位姿信息。

二、ROSHAN系统介绍

包围框测量模型

由于使用了二次曲面对物体进行描述,二次曲面进行投影可以得到二维成像平面上的二次曲线,这一过程中投影可以表示为:
在这里插入图片描述
根据投影关系将二次曲面投影到二次曲线,由于二次曲线和切线存在相切关系,所以可以解出包围框四条边的坐标:
在这里插入图片描述
所以对于一个物体来说,预测的包围框可以表示为:
在这里插入图片描述

包围框测量模型

在QuadricSLAM中,作者考虑到不完全处在图像范围内的物体容易对物体产生不合适的约束,所以采用了缩圈的方式,将包围框缩小到图像范围内,利用范围内的包围框建立约束,在ROSHAN中,作者认为只有当包围框刚好包裹住物体时,提供的约束才更加准确。
考虑到这一点,作者将包围框的四条边分为两类:约束边和非约束边。对于QuadricSLAM中优化的情况,作者认为缩小过的边其实不是真正的物体边缘,所以将这种边看作是非约束边,除此之外,对于一些纹理、光流不合适的位置产生的包围框边缘,作者也认为是非约束边。
在这里插入图片描述
根据论文中的配图,两个窗户中偏右的那一个的窗户的右侧边缘和偏左窗户的右侧边缘都属于非约束边,也就是说非约束边本身应该就是在说不准确的边缘提取,根据图像范围缩小包围框本身缩小后的边缘就是不准确的,同时物体边缘一般存在有更加明显的梯度变化,所以上图中的两个窗户都检测出了非约束边。对于非约束边,ROSHAN直接进行舍弃处理,只用约束边进行后续的优化。

纹理平面测量模型

如果在前面包围框的部分物体能够很准确地进行检测,那么四条边就都是约束边,但对于九自由度的椭球,这四个约束还不够,论文又提出了纹理平面这一约束。
简单来说纹理平面就是根据2d包围框内部的特征点,对他们进行三角化之后,用3d特征点进行空间平面的拟合,这部分特征点按道理是落在物体表面上的,所以拟合出来的平面一定程度上也是物体某一角度下的切面。
在这里插入图片描述

语义形状先验

由于五个面依然无法确定物体的椭球形状,论文又使用语义先验信息,通过对不同类别的物体设置先验的形状信息,给椭球体一个基本的优化方向,用来弥补最后一个面的缺失。

单目物体初始化与在线优化

前面说的这一堆,其实都是用在了物体的优化上,在QuadricSLAM中,物体是先提取再和位姿一起进行优化,而提取过程QuadricSLAM的方法是需要多帧联合约束来初始化的,针对这一点的优化也才SO-SLAM中进行了,在ROSHAN中,初始化的方法变得更加粗暴,直接利用了三个假设:
①椭球体中心位于2d包围框中心的反向延长线上,深度为框内的平均深度。
②所有物体初始化方向相同。
③所有物体的形状为语义先验形状的平均值。
这三条假设实际上就将椭球体位置、朝向和形状九个自由度做了限制,直接给出了一个物体的椭球体初值,能够影响这个初值的,只有2d包围框以及语义先验信息。采用这种初始化的方式,虽然很直接但确实解决了QuadricSLAM里面需要多帧才能初始化的问题。

在初始化之后,物体和相机位姿一起在线优化来得到更加准确的椭球体表达式:
在这里插入图片描述
也就是说ROSHAN选择了另一种思路来对物体进行描述,初始化的初值可能并没有那么准确,但是胜在简单而且快速,多出来的时间用于在线的优化,只要优化足够准确,那么就可以弥补初始化的不足。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp-前端 二维码、扫码、长按、识别等问题

一&#xff1a;识别&#xff1a;图片二维码url&#xff1a; 后端返回二维码的图片url&#xff0c;则直接展示&#xff0c;做长按手势识别&#xff0c;再调用方法即可。 <mage>标签长按识别实现&#xff08;微信版本>2.7.0&#xff09; <image show-menu-by-long…

JS数组题

从0到1&#xff1a;JavaScript快速上手第六章课后习题 一、单选题1&#xff0e;下面有一个数组&#xff0c;该数组中数值最小和数值最大的元素的下标分别是&#xff08; &#xff09;。 var arr[3,9,1,12,36,50,21] A&#xff0e;2, 5 B&#xff0e;3, 6 C&#xff0e;2, 6 D&…

【刷题】144. 二叉树的前序遍历

144. 二叉树的前序遍历 一、题目描述二、示例三、实现总结 144. 二叉树的前序遍历 一、题目描述 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 二、示例 示例1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#…

第十五章行为性模式—命令模式

文章目录 命令模式解决的问题结构实例存在的问题适用场景 JDK 源码 - Runnable 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为类…

OW-DETR: Open-world Detection Transformer(论文翻译)

文章目录 OW-DETR: Open-world Detection Transformer摘要1.介绍2.开放世界检测的transformer2.1整体架构2.2.多尺度上下文编码2.3.注意力驱动的伪标签2.4 新类分类2.5.前景物体2.6.训练与推理 3.实验3.1.最新技术水平比较3.2.增量目标检测3.3 消融实验 4.与现有技术的关系5.结…

【干货收藏】 隔离驱动SLMi335/SLMi335H 电路方案分享

数明深力科SLMi33X系列SLMi335/SLMi335H首款单通道带DESAT保护功能的IGBT/SiC隔离驱动器。内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故障反馈、软关断功能以及可选择的自恢复模式&#xff0c;兼容光耦隔离驱动器。 SLMi33X系列SLMi335/SLMi335H的DESAT阈值…

如何搭建高质量的 B 端产品帮助体系?

在B2B市场中&#xff0c;产品的质量和支持服务对于企业的成功至关重要。帮助中心是B2B企业提供优质支持服务的重要组成部分。那么&#xff0c;如何搭建高质量的B端产品帮助体系呢&#xff1f;本文将为大家介绍一些关键的步骤和方法。 一、了解用户需求 首先&#xff0c;要搭建…

【ZYNQ】QSPI Flash 固化程序全攻略

普通的 FPGA 一般是可以从 Flash 启动&#xff0c;或者被动加载&#xff0c;ZYNQ 的启动是由 ARM 主导的&#xff0c;包括 FPGA 程序的加载&#xff0c;ZYNQ 启动一般为最少两个步骤&#xff0c;在 UG585 中也有介绍。 Stage 0&#xff1a;BootROM 阶段 在 ZYNQ 上电复位或者热…

前端异步请求并解决跨域问题(Ajax+axios框架)、后端响应多个数据(JSON)

目录 一、前后端同步异步请求 1.同步请求&#xff1a; 2.异步请求&#xff1a; 3.跨域问题&#xff08;前端问题&#xff09; 4.axios框架&#xff08;封装后&#xff09; 二、后端向前端响应多个数据-JSON 一、前后端同步异步请求 1.同步请求&#xff1a; 发送一个请求…

【Java多线程进阶】CAS机制

前言 CAS指的是Compare-And-Swap&#xff08;比较与交换&#xff09;&#xff0c;它是一种多线程同步的技术&#xff0c;常用于实现无锁算法&#xff0c;从而提高多线程程序的性能和扩展性。本篇文章具体讲解如何使用 CAS 的机制以及 CAS 机制带来的问题。 目录 1. 什么是CAS&…

《机器学习算法竞赛实战》-chapter4特征工程

《机器学习算法竞赛实战》学习笔记&#xff0c;记录一下自己的刷题过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 特征工程 特征工程是算法竞赛中工作量最大&#xff0c;决定参赛者能否拿到较好名次的关键部分。吴恩达老师说过&#xff1a;“机器学习在本质上还是特…

Maven Compile时报错 [ERROR] [X Group Enforcer Rules] find DuplicateClasses

类冲突 [ERROR] [Ctrip Group Enforcer Rules] find DuplicateClasses Found in: net.jpountz.lz4:lz4:jar:1.3.0:compile org.lz4:lz4-java:jar:1.7.1:compile Duplicate classes: net/jpountz/xxhash/AbstractStreamingXXHash32Java.class net/jpountz/lz4/LZ4BlockInputStre…

Arduino+ESP8266 MCU开发板 ----带你开发 (TCP)双向局域网通信 项目-----可开发成为小远程控制

目录 本次需要下载的代码链接&#xff1a; 文章项目引用&#xff1a;本次实现可依据之前的文章就行举一反三的操作 本次开发项目步1&#xff1a;下载Aeduino软件 本次开发项目步2&#xff1a; 更替代码片段1 第13行 代替账号和密码 更替代码片段2 第20行 …

软件科技项目验收有哪些注意事项?第三方软件验收测试的好处在哪?

软件科技项目的验收是软件生产周期中非常重要的一个环节。它主要目的是验证软件产品是否满足用户需求&#xff0c;达到预期的质量和性能要求。因此&#xff0c;在进行软件科技项目验收时&#xff0c;有一些注意事项需要遵循。 一、软件科技项目验收的注意事项 1、明确验收标准…

JS使用随机数生成随机验证码

一 随机数测试 在JavaScript中&#xff0c;我们可以使用random&#xff08; &#xff09;方法来生成0&#xff5e;1的一个随机数。random&#xff0c;就是“随机”的意思。需要注意的是&#xff0c;这里的0&#xff5e;1包含0但不包含1&#xff0c;也就是[0, 1&#xff09;。在…

ubuntu20.04 ROS 环境下使用velodyne激光雷达

ROS 环境下使用velodyne激光雷达 系统版本:ubuntu 20.04 ROS版本&#xff1a;noetic 激光雷达型号&#xff1a;velodyne VLP-16 1.系统环境配置 sudo apt install ros-noetic-velodyne #安装ROS依赖 mkdir-p velodyne_ws/src …

PyQt重绘事件处理函数paintEvent

PyQt中的重绘和Windows编程中的重绘差不多&#xff0c;但是Qt的重绘更有特色&#xff0c;更加智能。基础部件类QWidget提供的paintEvent函数是一个纯虚函数&#xff0c;继承它的子类想用它&#xff0c;就必须重新实现它。下列4种情况会发生重绘事件&#xff1a; &#xff08;1…

全网最全的Salesforce营销云管理员认证考点梳理!

Marketing Cloud管理员认证适用于在Marketing Cloud套件中具有设置和维护各种模块&#xff08;Studios/Builders&#xff09;和功能的经验的营销专业人员。Salesforce建议备考者拥有3到6个月的Marketing Cloud管理员和数字营销人员实践经验。 营销云管理员认证 考试内容&#…

IOS发布:App Store Connect Operation Error。SDK Version Issue.

错误描述&#xff1a; App Store Connect Operation Error SDK Version Issue. This app was built with the iOS 15.0 SDK. all iOS apps submitted to the App Store must be built with the iOS 16.1 SDK or later, included in Xcode 14.1 or later. 问题原因&#xf…

ESP32 的多种睡眠模式以及如何让 ESP32 进入深度睡眠模式

ESP32 因其 BLE 兼容性功能以及更低的成本而受到广泛关注。它还带有 32 个 GPIO 引脚和一个 32 位双核 CPU。虽然,它提供了很多功能,但在正常使用模式下似乎很耗电。当应用程序由市电供电时,没有急事,但是当它们由电池供电时,我们必须非常注意 ESP32 的功耗。 ESP32 提供…