扫地机器人地图与用户终端的同步

扫地,机器人,地图,用户,终端,同步 · 浏览次数 : 385

小编点评

## CreateMapData 内容分析 CreateMapData 内容是机器建图过程中基础数据的一个重要部分,包含以下信息: * **分辨率**: 表示每个点占据的物理空间大小,用像素数量表示。 * **位置特征**: 表示每个点类型,如障碍物、悬空点、可通行区域等。 * **其他位置信息**: 包括充电桩的坐标等。 * **压缩信息**: 包括地图数据压缩后的格式和压缩效率。 CreateMapData 数据包含两个部分: * **图形信息**: 包括绘制地图的实际图形数据。 * **重定位信息**: 包括用于地图重定位的额外数据。 CreateMapData 的数据量视乎地图的具体大小,一般来说,地图数据越大,数据量也会越大。为了提高效率,CreateMapData 通常使用文件存储和传输,以减少数据传输的成本。 CreateMapData 的同步过程需要考虑以下因素: * **实时地图更新**: 机器人根据传感器实时数据更新CreateMapData。 * **云端多地图**: 用户可能需要在不同地方获取同一份地图,需要设计存储和管理机制。 * **地图稳定性**: 为了确保地图数据的准确性和完整性,需要引入地图稳定性信息。 * **文件格式**: CreateMapData 通常使用压缩格式存储,如 LZ4,可以提高数据传输效率。

正文

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng


地图数据来源于机器人算法模块,一般通过SLAM算法完成建图的过程。

建图过程中,基础数据涉及到各种实时的传感器,比如陀螺仪、激光雷达、线激光等等。这些传感器并不都是需要的,而是按照实际设计方案要求添加。比如目前市面上的那些扫地机器人里,廉价的最多只用了陀螺仪,主流的用了激光雷达,高档新潮的可能还加上线激光来达到宣称的三维建图,甚至有的还宣称用了摄像头达到AI识别障碍物。

why & what ?

内容

地图数据里边一般会包含分辨率,长宽方向的点数和每个点的位置特征。分辨率用来表明每个点占据多大空间,代表着物理世界位置的尺寸单元。点的位置特征,通常表示为点的类型,用来分辨每个点代表什么东西,比如这个点是障碍物,悬空点或者正常的可通行位置。

地图里也会包含其它的一些位置信息,比如充电桩的坐标等。现在的自主式移动机器人都是使用电池供电的,因此充电桩也需要配套有。

其它需要包含的信息视乎需求而定。

数据量

由于地图数据包含了每个点的特征,因此数据量的总大小视乎地图的面积大小,面积越大地图数据也会越大。

既然地图数据大,那么就有必要在同步之前对数据进行压缩了。一般业内都采用LZ4的格式来压缩地图数据。

关于LZ4,看看官方的介绍

LZ4 is lossless compression algorithm, providing compression speed > 500 MB/s per core (>0.15 Bytes/cycle). It features an extremely fast decoder, with speed in multiple GB/s per core (~1 Byte/cycle). LZ4 library is provided as open source software using a BSD license.

https://lz4.github.io/lz4/

意思就是LZ4压缩和解压的速度非常快,而且是无损压缩哦。压缩每秒可以去到500MB,解压每秒可以去到GB等级,用来处理一般的地图数据而言,绰绰有余了。LZ4源代码工程遵循BSD授权,所以是免费使用的。

分类

外部节点需要做的事情无非就是提供个可视化的界面给用户,用户再从中了解接收到地图的相关信息,重点是看得到的地图信息。那么,算法模块产生的地图数据就可以划分为两部分,一部分是只包含了图形化的信息(方便绘制地图),另一部分就包含了算法重定位的信息。

how ?

为了分离数据与外部节点的同步过程,地图数据的外发需要交给一个单独的模块处理,这里使用网络代理模块来称呼。

1.实时地图更新上传

自主移动式机器人在移动过程中,根据传感器的实时数据,算法模块生成地图数据,然后传递给网络代理模块,网络代理模块负责实时发往手机app等用户终端程序。

由于数据量大,如果数据经过任何第三方转发,比如IOT云,势必会挤占IOT云的带宽,导致IOT云的负担过重,所以这种大数据的传输只会从点到点,也就是我们常常用到的P2P传输方法。

地图数据在压缩后通常使用文件的形式来暂存,传输也以文件为单位把内容发送出去。

虽然地图数据走P2P的通道传送,但是传送的数据量毕竟比较大,一直传输地图数据会占用大量的本地带宽,而且接收端还得不断更新和对比接收到的数据。如果用户端在某些时段压根就不想要接收地图数据,比如使用的手机app页面切换到了和地图无关的设置界面,app这时就不需要接收任何的地图数据和浪费算力在这些无用的数据上面。

那么,可以通过设计一套心跳机制,只要app在一定的时间范围内有下发心跳包给到机器,机器的网络代理模块就知道在什么时候需要上传地图数据。

这种思路不会影响到算法模块对地图数据的生成。

2.云端多地图

有些用户希望可以在不同的地方,比如不同的楼层各有一份地图,并且保存下来方便在终端app随时调用。这就引出了对多地图的管理需求。

无论是云端还是本地,地图存在哪里都是可以的。不过,由于嵌入式的片内或者板上存储资源比较紧张,机器在本地一般只会存一份当前的临时地图数据文件。而其它的地图数据需要存放在云端,然后通过终端app调用管理。

鉴于有多份地图,那么终端app怎么区分哪一份云端地图和机器当前地图是对应的呢?这就需要在地图数据中引入地图ID的信息,这个ID由机器自分配和云端无关。

云端管理多地图,包括保存、删除、切换等。

保存

将机器本地中的当前地图,以文件的形式上传到云端,上传的目的地址URL由云端分配。上传的数据包括图形化的地图数据以及用于地图重定位的信息,共两份。

但是,如果机器建图还没完成就触发了保存到云端,这样岂不是不合理?所以又有必要在地图数据中引入一个量来表示地图是否稳定,终端app可以根据这个量来判断是否允许保存到云端。

删除

删除保存在云端的地图数据,操作过程仅涉及云端,无需机器参与。

切换

通过下发指定的云端地图URL给到机器,由机器自主下载使用。由于云端保存的地图数据有两部分,机器其实只需要用到地图重地位的信息,那么下发的URL也只需指向用于地图重定位的数据文件即可。


其实,上面的内容也适合扫地机之外的移动机器人,关于地图还有很多可以聊,不过暂时聊到这,下次见...

与扫地机器人地图与用户终端的同步相似的内容:

扫地机器人地图与用户终端的同步

今天就来聊一聊,关于扫地机器人的地图是怎么同步到云端的,主要聊思路,没有代码,但是干货满满,走过路过,不要错过啦!

Llama2-Chinese项目:7-外延能力LangChain集成

本文介绍了Llama2模型集成LangChain框架的具体实现,这样可更方便地基于Llama2开发文档检索、问答机器人和智能体应用等。 1.调用Llama2类 针对LangChain[1]框架封装的Llama2 LLM类见examples/llama2_for_langchain.py,调用代码如下

上新啦KIT

HMS Core上新啦!分析服务区服分析全新上线;机器学习服务OCR新增手写识别服务;3D建模续扫能力更新;视频编辑服务支持自定义上传素材……更多#HMS Core#能力可点击网页链接了解。 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gite

CH57x/CH58x/CH59x获取从机广播信息

有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等 以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的; 1、获取广播包 所有的函数在库函数中都可以找到,具体实现函数如下: case GAP_DEVICE_INFO_EVENT: {

你听说过OTA吗?

我在这里和大家聊聊关于OTA的那些事儿,就以扫地机器人或者类似的其他电子产品为例吧。希望和同行多多交流,或许我所说的都是错的。

NebulaGraph实战:1-NebulaGraph安装和基础操作

以前使用Neo4j图数据库,考虑到生产环境需要最终选择了NebulaGraph图数据库。对于数据要求比较高的领域,比如医疗、财务等,暂时还是离不开知识图谱的。后面主要围绕LLM+KG做一些行业解决方案和产品,涉及的技术主要是对话、推荐、检索这3个大的方向,可用于客服系统和聊天机器人等。 1.安装Ne

[转帖]什么是pagecache/dentries/inodes?

https://ixyzero.com/blog/archives/3233.html =Start= 缘由: 最近因为新上了一个扫描功能导致大范围内的机器告警,新上的功能代码其实非常简单: find / -type f -name "ffmpeg" -executable 2>/dev/null

分类算法(Classification Algorithm)需求记录

[toc] 比如说,在WEB扫描器场景中。一个扫描器在扫描过程中,它可以自动识别接口类型并采用相应分类规则进行漏洞检测的算法,这种通常属于一种称为"智能扫描"(Intelligent Scanning)或"漏洞扫描引擎"的技术。 这些算法利用机器学习、深度学习和模式识别等技术,通过分析网络流量、响应

学node 之前你要知道这些

初识nodejs 19年年底一个偶然的机会接到年会任务,有微信扫码登录、投票、弹幕等功能,于是决定用node 来写几个服务,结果也比较顺利。 当时用看了下koa2的官方文档,知道怎么连接数据库、怎么映射表实体,怎么处理http,怎么处理异常等,就可以直接写起来了。从应用层面上来说 nodejs 入门

[转帖]TiKV 内存调优

TiDB试用 来源:TiDB 浏览 87 扫码 分享 2023-05-09 09:02:19 TiKV 内存参数性能调优 参数说明 TiKV 内存使用情况 TiKV 机器配置推荐 TiKV 内存参数性能调优 本文档用于描述如何根据机器配置情况来调整 TiKV 的参数,使 TiKV 的性能达到最优。你