基于视觉重定位的室内AR导航项目思路(1):最初的项目思路(SLAM)
文章目录
- 最初的项目思路(SLAM):
- 后文:
前情提要:
是第一次做项目的小白,文章内的资料介绍如有错误,请多包含!
最初的项目思路(SLAM):
由于我们在日常生活中,大多会在手机端上使用到地图导航这一功能,所以在大创项目的开始,我将手机确定为应用设备,传感器确定为相机。
但是因为知识储备较为稀少,对SLAM不够了解,在头一次接触SLAM时,我认为这会是解决这个项目的最佳方案。
(其实SLAM中最吸引我的是其构建点云地图和视觉重定位的能力,我所需要的并非是整个SLAM,但是这时我还没有意识到)
于是乎项目陷在了SLAM的学习和研究中,先是从普通的SLAM中进一步选择,在视觉SLAM(VSLAM)和激光SLAM中选择了视觉SLAM。
视觉SLAM以相机为传感器,但SLAM还有更多种传感器配合的方案。
考虑到手机上配备的传感器(手机上不止相机一种传感器),于是选择了视觉-惯性 SLAM (VISLAM) ,即视觉和惯性测量单元 (IMU)结合的SLAM方案,其中较为优秀的算法就是ORB-SLAM3。
注意:如果你在网上搜索的搜索过程中同时带着SLAM和导航这俩关键词,那么你大概会看见一系列的关于机器人导航的内容,机器人导航需要使用稠密的点云地图,但是就人的AR导航而言,稀疏点云地图就可以做到。
ORB-SLAM3构建的地图还正好是稀疏点云地图,于是将项目最初的方案思路定为:
将ORB-SLAM3做安卓端的移植,既在手机端直接建图,也在手机端做导航功能
但是遇到了一个问题:相关资源极其稀少
网络上关于ORB-SLAM3的安卓端移植的资源和博客寥寥无几,能找到的就三四篇,去掉没有介绍和配不成功的,我只找到了一篇。
资源链接:
https://nijiproject.coding.net/public/hitomi/hitomi-android/git/files
作者效果视频链接:
https://www.bilibili.com/video/BV1ph411x7d7/?spm_id_from=333.337.search-card.all.click
如果在安卓设备上在线建图,会出现如下问题:
1、帧率不高,最高不超过20fps,卡顿略微明显;
2、在线建图极大程度占用了手机上的计算资源,容易引起设备发热,加快手机电量的消耗;
3、相机视角移动快速或是存在快速移动的景物,相机位姿容易丢失,建图过程不是很流畅。上文开源项目的作者本人建图的演示视频中,建图视频是1.5倍速的,尚且有点慢,一倍速的行走速度可想而知
如果不使用该开源项目,仅考虑自身的编程能力,我暂时还不具备自己将ORB-SLAM3完全地移植到安卓端上且不产生任何错误的能力,况且在设备上切实存在的物理问题目前是无法解决的。
既然我无法在手机上完成使用ORB-SLAM3进行在线建图的功能,只好寻求其他解决的方案。
于是只能换种角度想,它是放错位置的功能,建图这个部分的任务,手机不是很好的载体。
在后续的思考过程中,我回想起了在使用虚拟机上的 Ubuntu18.04上配置完ORB-SLAM3后使用数据集进行离线建图的过程。
在电脑上建图或许是个不错的选择。
其实我真正需要的是ORB-SLAM3其中点云地图的构建功能,还有视觉重定位提供的位姿信息,我大可以分开做两部分的功能。
所以在这一时间段,我开始逐步转变我的想法:
将建图和导航分为了两个部分处理,在电脑上实现建图这个部分,在手机上使用软件完成导航。
在思考进行到这一步的时候,虽然已经浪费了一个月的时间将工作集中于SLAM的学习和项目的思路探索中,但是好歹有所进展。
后文:
基于视觉重定位的室内AR导航项目思路(2):改进的建图和定位分离的项目思路
如果你觉得这篇文章写的不错,多多点赞~收藏吧!
相关文章:
基于视觉重定位的室内AR导航项目思路(1):最初的项目思路(SLAM)
文章目录 最初的项目思路(SLAM):后文: 前情提要: 是第一次做项目的小白,文章内的资料介绍如有错误,请多包含! 最初的项目思路(SLAM): 由于我们在…...
小白学go基础05-变量声明形式
和Python、Ruby等动态脚本语言不同,Go语言沿袭了静态编译型语言的传统:使用变量之前需要先进行变量的声明。 变量声明形式使用决策流程图 这里大致列一下Go语言常见的变量声明形式: var a int32 var s string "hello" var i 13 …...
高可用Kuberbetes部署Prometheus + Grafana
概述 阅读官方文档部署部署Prometheus Grafana GitHub - prometheus-operator/kube-prometheus at release-0.10 环境 步骤 下周官方github仓库 git clone https://github.com/prometheus-operator/kube-prometheus.git git checkout release-0.10 进入工作目录 cd kube…...
ardupilot 安装gcc-arm-none-eabi编译工具
目录 文章目录 目录摘要0简介1.下载网站2.安装摘要 本节主要记录ardupilot使用的编译器安装过程。 0简介 gcc-arm-none-eabi是GNU项目下的软件,是一个面向裸机arm的编译器。那么说了这么多介绍,它都包含什么具体功能又怎么安装与使用呢,我们继续。 1.下载网站 gcc-arm-n…...
ORACLE集群管理-19C RAC重新配置IPV6
1 问题概述 数据库已经配置和IPV6和 IPV4双线协议,需要重新配置IPV6 2 关闭相关资源 1 root用户执行 ./srvctl stop scan_listener -i 1 ./srvctl stop scan ./srvctl stop listener -n orcldb1 ./srvctl stop listener -n orcldb2 ./srvctl stop vip -n orcldb…...
Mybatis实体类属性与数据库字段的对应关系
方法一:起别名 select t_id(数据库字段) tId(类的属性), ... , ...from 表名 方法二:开启驼峰映射 <!-- 开启驼峰映射 数据库 s_id java类 sId--><setting name"mapUnderscoreToCamelCase" value"true"/> 当java类中属性命名…...
Unity(三) Shader着色器初探
学习3D开发技术的时候无可避免的要接触到Shader,那么Shader是个什么概念呢?其实对于开发同事来说还是比较难理解的,一般来说Shader是服务于图形渲染的一类技术,开发人员可以通过其shader语言来自定义显卡渲染页面的算法࿰…...
苹果电脑要安装杀毒软件吗?mac用什么杀毒软件好?
对于这个问题让人很是纠结,Mac不需要杀毒这个理论一直都深入人心,Mac OS X权限管理特性可以防毒的说法也一直甚嚣尘上,很多小伙伴如我一样搞不清楚到底要不要安装杀毒软件。,毕竟当前个人信息安全泄露泛滥不穷的年代,我…...
MySQL——索引
索引在 MySQL 数据库中分三类: B 树索引Hash 索引全文索引 目的:在查询的时候提升效率 b树 参考:https://blog.csdn.net/qq_40649503/article/details/115799935 数据库索引,是数据库管理系统中一个排序的数据结构…...
110. 平衡二叉树
题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 递归法: 我的代码: *** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* Tree…...
遗忘因子递推最小二乘参数估计(FFRLS)
基于遗忘因子的最小二乘法电池参数辨识 最小二乘法是系统辨识中最常用的一种估算方法。为了克服最小二乘法存在”数据饱和”的问题,我们通常采用含有遗忘因子的递推最小二乘法(Forgetting Factor Recursive Least Square,FFRLS)算法进行电池模型的参数辨识。 1、二…...
【redis进阶】基础知识简要回顾
1. 常见功能介绍 聚合统计 使用list集合的差集、并集来统计 排序统计 SortedSet(ZSet)统计,再利用分页列出权重高的元素 二值状态统计 BitMap存储,获取并统计 SETBIT uid:sign:3000:202008 2 1 GETBIT uid:sign:3000:202008 2…...
HTML5-3-表格
文章目录 属性边框属性标题跨行和跨列单元格边距 HTML 表格由 <table> 标签来定义。 tr:tr 是 table row 的缩写,表示表格的一行。td:td 是 table data 的缩写,表示表格的数据单元格。th:th 是 table header的缩…...
Spring Boot + Vue的前后端项目结构及联调查询
Spring Boot Vue的前后端项目结构及联调查询 当你刚开始学习前后端开发时,可能会感到有些困惑和不知所措。下面是一些建议,希望能为你的学习之旅提供一些启示: 建立坚实的基础知识:学习前后端开发的第一步是建立坚实的基础知识。…...
Transformer貌似也是可以使用state递归解码和训练的
import paddle import numpy as npclass HeadLoss(paddle.nn.Layer):def __init__(self):super(HeadLoss, self).__init__()...
振弦采集仪应用地铁隧道安全监测详细解决方案
振弦采集仪应用地铁隧道安全监测详细解决方案 随着城市化进程的不断加快,地铁作为一种高效、便捷、环保的交通方式已经成为现代城市不可或缺的一部分。因此,对地铁的安全性也越来越重视,一般二三线以上的城市在不断发展中,地铁做…...
2023 IntelliJ IDEA下载、安装教程, 附详细图解
文章目录 下载与安装IDEA推荐阅读 下载与安装IDEA 首先先到官网下载最新版的IntelliJ IDEA, 下载后傻瓜式安装就好了 官网下载地址:https://www.jetbrains.com/ 1、下载完后在本地找到该文件,双击运行 idea 安装程序 2、点击 Next 3、选择安装路径&…...
波卡生态重要动态一览:w3ndi 推出,首尔、新加坡、里斯本活动接踵而至
Web3 市场冷却,但新的社区合作与推进仍在发生,技术和产品依然不断迭代。OneBlock 为你介绍波卡生态近期值得你关注的动态,以及接下来重要的行业活动。 波卡生态重要进展 1、最新 Referendum#110,提议对验证器配置进行多项修改&a…...
成都瀚网科技有限公司:抖音商家怎么免费入驻?
随着抖音成为全球最受欢迎的短视频平台之一,越来越多的商家开始关注抖音上的商机。抖音商家的进驻可以帮助商家扩大品牌影响力和销售渠道。那么,如何免费进入抖音成为商家呢?下面就为大家介绍一下具体步骤。 1、抖音商家如何免费注册…...
vue Router从入门到精通
文章目录 介绍使用多级路由实例 路由的query参数传递参数接收参数实例 命名路由作用使用 params参数声明接收params参数传参接收参数实例 props配置实例 router-link的replace属性编程式路由导航作用使用实例 缓存路由组件两个新的生命周期钩子实例 路由守卫作用分类全局守卫独…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
