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

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

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」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也只需指向用于地图重定位的数据文件即可。


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

相关文章:

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

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/APaJheSbgTW3jNssWsp5Ng 地图数据来源于机器人算法模块,一般通过SLAM算法完成建图的过程。 建图过程中,基础数据涉及到各…...

使用机器学习进行语法错误检测/纠正

@francescofranco_39234 一、说明 一般的学习,特别是深度学习,促进了自然语言处理。各种模型使人们能够执行机器翻译、文本摘要和情感分析——仅举几个用例。今天,我们将研究另一个流行的用途:我们将使用Gramformer构建一个用于机器学习语法错误检测和纠正的管道。 阅读本文…...

从0到1快速入门ETLCloud

一、ETLCloud的介绍 ETL是将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程,目的是将企业中的分散、凌乱、标准不统一的数据整合到一起,为企…...

QT上位机开发(会员管理软件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了ini文件的解析办法,通过QSettings类就可以很轻松地访问ini文件里面的数据。除了ini文件之外,另外一种经常出…...

线性代数笔记3 1.1

学习视频: 2.2 矩阵运算(二)_哔哩哔哩_bilibili 包括内容: p10矩阵运算(二) p11特殊矩阵 p12逆矩阵(一) p13逆矩阵(二)...

2023年12月编程语言排行榜

TIOBE Index for December 2023 December Headline: C# on its way to become programming language of the year 2023 2023年12月的TIOBE指数:12月头条:c#将成为2023年最佳编程语言 Yes, I know, we have been here before. At the end of 2022, it looked like …...

Redis VS Memcached:选择哪个更适合您的应用?

目录 1、前言 2、概念简介 2.1 Redis 2.2 Memcached 3、数据模型 4、持久性 5、分布式能力 6、性能和扩展性 7、如何选择适合您引用的缓存系统 8、结语 1、前言 Redis和Memcached都是常见的内存缓存系统,用于提升应用程序的性能和可扩展性。它们都具有高…...

【HarmonyOS开发】共享包HAR和HSP的创建和使用以及三方库的发布

OpenHarmony提供了两种共享包,HAR(Harmony Archive)静态共享包,和HSP(Harmony Shared Package)动态共享包。 HAR与HSP都是为了实现代码和资源的共享,都可以包含代码、C库、资源和配置文件&…...

安装 Node.js、npm

安装 nodejs 安装Node.js的最简单的方法是通过软件包管理器。 Node.js官网:https://nodejs.org/en/download/ cd /usr/local/src/wget -c https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz xz -d node-v18.16.0-linux-x64.tar.xz tar -xf node…...

解决报错:找不到显卡

今天做实验碰到一个问题:torch找不到显卡: 打开任务管理器,独显直接没了,一度以为是要去修电脑了,突然想到上次做实验爆显存,屏蔽了gpu用cpu训练: import os os.environ["CUDA_DEVICE_OR…...

如何使用Node.js快速创建本地HTTP服务器并实现公网访问服务端

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【社交网络分析】课程考试复盘 + 相关资料补充

【社交网络分析】考试后复盘 相关资料补充 写在最前面论述1.描述Logistic回归模型构造损失函数的主要思想。它是如何把线性回归预测模型转化为二分类模型的。Logistic回归模型构造损失函数的主要思想Logistic回归如何将线性回归预测模型转化为二分类模型 2.社交网络分析中面临…...

算法——队列+宽搜(BFS)

队列这种数据结构大都服务于一个算法——宽搜(BFS)。宽搜还可以运用到二叉树、图、迷宫最短路径问题、拓扑排序等等 N叉数的层序遍历 N叉树的层序遍历 题目解析 给定一个 N 叉树,返回其节点值的_层序遍历_。(即从左到右&#…...

前端八股文(CSS篇)二

目录 1.css中可继承与不可继承属性有哪些 2.link和import的区别 3.transition和animation的区别 4.margin和padding的使用场景 5.::before和:after的双冒号和单冒号有什么区别? 6.display:inline-block什么时候会显示间隙 7…...

系统架构设计师笔记

第1章计算机组成与体系结构 1.1.1计算机硬件的组成 (1)控制器。控制器是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,所依据的是机器指令。控制器的组成包含如下。 ①程序计数器PC:存储下…...

Livox-Mid-360 固态激光雷达ROS格式数据分析

前言: Livox-Mid-360 官方采用livox_ros_driver2ROS功能包发布ROS格式的数据,livox_ros_driver2可以把Livox原始雷达数据转化成ROS格式并以话题的形式发布出去。 下面列举一些雷达的基本概念: 点云帧:雷达驱动每次向外发送的一…...

如何恢复 iPhone 上永久删除的照片?

2007年,苹果公司推出了一款惊天动地的智能手机,也就是后来的iPhone。你会惊讶地发现,迄今为止,苹果公司已经售出了 7 亿部 iPhone 设备。根据最新一项调查数据,智能手机利润的 95% 都进了苹果公司的腰包。 如此受欢迎…...

基于单片机的公交车站自动报站器设计与实现

一、摘要 随着城市交通的快速发展,公交车作为城市公共交通的主要工具,其便捷性和高效性得到了广泛的认可。然而,由于公交车站的广播系统存在一定的局限性,如人工报站容易出现失误、音量大小不一等问题,给乘客带来了不…...

python之Selenium WebDriver安装与使用

首先把python下载安装后,再添加到环境变量中,再打开控制台输入: pip install selenium 正常情况下是安装好的,检查一下“pip show selenium”命令,出现版本号就说明安装好了。 1:如果出现安装错误: 那就用“…...

基于Java+Vue+uniapp微信小程序国产动漫论坛系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…...

奇因子之和(C语言)

题意: 一个整数的因子,就是所有可以整除这个数的数。奇数指在整数中,不能被 2 整除的数。所谓整数 Z 的奇因子,就是可以整除 Z 的奇数。 给定 N 个正整数,请你求出它们的第二大奇因子的和。当然,如果该数只…...

简单FTP客户端软件开发——VMware安装Linux虚拟机(命令行版)

VMware安装包和Linux系统镜像: 链接:https://pan.baidu.com/s/1UwF4DT8hNXp_cV0NpSfTww?pwdxnoh 提取码:xnoh 这个学期做计网课程设计【简单FTP客户端软件开发】需要在Linux上配置 ftp服务器,故此用VMware安装了Linux虚拟机&…...

ArkTS开发实践

声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程,其实是组合组件的过程,声明式UI的思想,主要体现在两个方面: 描述…...

vue项目中实现预览pdf

vue项目中实现预览pdf 1. iframe <iframe :src"pdfSrc"></iframe> ​data() {return {pdfSrc: http://192.168.0.254:19000/trend/2023/12/27/5635529375174c7798b5fabc22cbec45.pdf,}},​iframe {width: 100%;height: calc(100vh - 132px - 2 * 20px -…...

【Vulnhub 靶场】【Looz: 1】【简单】【20210802】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/looz-1,732/ 靶场下载&#xff1a;https://download.vulnhub.com/looz/Looz.zip 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年08月02日 文件大小&#xff1a;2.1 GB 靶场作者&#xff1a;mhz_cyber &…...

计算机基础面试题 |03.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

SQL最消耗性能查询错误用法示例

查询性能的消耗主要取决于查询的复杂度、表的大小以及使用的索引等因素。以下是一些查询中常见的错误用法示例&#xff0c;它们可能导致性能问题&#xff1a; 全表扫描&#xff1a; 错误用法示例&#xff1a; SELECT * FROM your_table;这种查询会检索表中的所有行&#xff0c;…...

Python学习笔记(六)面向对象编程

最近准备HCIE的考试&#xff0c;用空余时间高强度学习python 介绍了Python中面向对象编程的基本概念&#xff0c;包括类、类的属性、类的方法、类的方法中实例方法、类方法、静态方法&#xff0c;在类与对象中动态添加属性和方法&#xff0c;以及继承、类变量、多态等概念 类…...

CCNP课程实验-05-Comprehensive_Experiment

目录 实验条件网络拓朴 基础配置实现IGP需求&#xff1a;1. 根据拓扑所示&#xff0c;配置OSPF和EIGRP2. 在R3上增加一个网段&#xff1a;33.33.33.0/24 (用Loopback 1模拟) 宣告进EIGRP&#xff0c;并在R3上将EIGRP重分布进OSPF。要求重分布进OSPF后的路由Tag值设置为666&…...

第3课 使用FFmpeg获取并播放音频流

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具&#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言&#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…...

个人接做政府网站/百度网盘24小时人工电话

主要差异如下&#xff1a;1、 对于待加密解密的数据&#xff0c;各自的填充模式不一样C#的模式有&#xff1a;ANSIX923、ISO10126、None、PKCS7、Zero&#xff0c;而Java有&#xff1a;NoPadding、PKCS5Padding、SSL3Padding2、 各自默认的3DES实现&#xff0c;模式和填充方式…...

wordpress特色图片/重庆seo关键词优化服务

ELK集群搭建 环境介绍 主机名备注web运行apache web服务node1作为elk节点1&#xff0c;kibana将安装在此节点node2作为elk节点2 所有主机修改主机名&#xff0c;以node1 [rootlocalhost ~]# hostnamectl set-hostname node1所有主机添加主机名解析 [rootlocalhost ~]# vim …...

视频网站做游戏分发/落实20条优化措施

对于企业来说&#xff0c;面试是最能够考察一个应聘者能力的方式&#xff0c;它和笔试不同&#xff0c;所有问题设置和问法都具有较强的随机性&#xff0c;通过突然地发问&#xff0c;也可以考察应聘者对于相关技术掌握的熟练程度。当然&#xff0c;问题和问法也并非无穷无尽&a…...

制作淘宝网页设计的代码/佛山快速排名seo

转眼消失快半年了&#xff0c;终于结束了紧张的学习和考试&#xff0c;重新回来心情平静许多&#xff0c;继续写点东西&#xff0c;记录一下自己的新生活。 转载于:https://www.cnblogs.com/zhuyx/archive/2009/05/14/10401945.html...

正规做兼职的网站/免费的推文制作网站

数组的实例上都有一个叫做 forEach 的方法&#xff0c;这个方法定义在 Array.prototype 上&#xff0c;所以数组的所有实例都可以使用 forEach 这个方法。 forEach 方法的语法结构如下&#xff1a;   1 var ary [1, 2, 3, 4, 5, 5, 6, 8, 9]; 2 ary.forEach(function(index,…...

职业做网站游戏的/抚州seo外包

今天搭建SpringCloud的ConfigServer时候一直报错 原因在于后台一直报SSL的异常could not be stablished because of SSL problems 找了无数的方法&#xff0c;最后无意间发现有一个配置 skip-ssl-validation属性&#xff0c;然后设置为true就好了&#xff0c;附上我的applicati…...