无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

本文主要是介绍无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

墙体画线地图切分方案

针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等

·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位

方案思路

切分原理:切分地图基于关键帧位置,而非点云

理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关键帧之间距离足够大,对于切分的画线精度要求不高。

实现思路

这实际上是一种子地图模式,建议基于已有的大地图软件框架来做,把墙画线切分当作一种子图分割策略现有地图切分

第一步:MPE(地图离线编辑软件)沿墙体中心画线,共K条直线;

第二步:遍历关键帧,按关键帧的时间顺序逐个遍历,针对第i个关键帧,遍历K条直线,对每条直线执行LineSideTest(该函数返回—1/0/1,表示点在直线左侧、直线上、直线右侧),得到一个size为K的向量,该向量就可以表征这个关键帧属于哪个子地图,若该子地图已存在,则将i和该子地图关联;若该子地图不存在,先新建子地图对象,再将ⅰ和该子地图关联

说明:此方案有缺陷,考虑横竖两条直线,会分成4个子地图,按照第1—第4象限来区分,有可能第3、第4象限其实是一个房间,不该分成两个子图。所以应该还需要一个额外的指定子地图合并的功能。理论上如果直线改成线段(有起点和终点)去做切分,就不需要额外指定合并了,但是LineSideTest会很难算,不如额外指定合并。

实时定位

判断当前位于哪个子图(按LineSideTest),就用那个子图的关键帧地图进行定位建图不准问题

问题:地图切分预期能解决实时定位问题,前提条件是地图是准的;如果建图就因为墙两侧误匹配导致不准,怎么办?

一种解决思路:针对跨墙区域,使用切分方案拓展建图

.确保已有地图虽然有偏差,但在可控范围内(脑测,墙点云分层总宽<20cm)

ii.基于现有地图,墙中心画线段(需要有起点和终点吗?),将关键帧地图切分为两侧两个子地图,并确认哪个子地图将保留,哪个子地图将抛弃,同时墙中心线两侧+—40cm的区域设为墙体特征区.从保留子地图里开始拓展建图,判断当前帧的位置属于保留子地图时,仅使用保留子地图进行定位,新关键帧也属于保留子地图;判断当前帧进入抛弃子地图区域时,使用「保留子地图中墙体特征区之外的点云」+抛弃子地图区域内新建的关键帧地图进行定位

备注:

·拓展建图进入抛弃子地图区域时,不使用原有的抛弃子地图是因为原有的抛弃子地图已经不准了;

拓展建图进入抛弃子地图区域时,还需要使用墙体特征区之外的保留子地图点云,是因为在保留子地图的关键帧会扫到抛弃子地图区域内的有效特征,这些特征对于从保留子地图到抛弃子地图区域的建图一致性可能起到关键作用

其他细节:

拓展建图时,墙体特征区内不要新建关键帧

这篇关于无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1151882

相关文章

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再