扫地机器人如何利用图算法来进行避障策略和优化清扫路径的?

前言

扫地机器人是现代家庭中最常见的智能设备。其基本的核心组件由主控系统(大脑)、传感器等控制系统(感知系统)、动力供应系统(心脏)、清扫系统(四肢)组成。

图片

扫地机器人的智能、高效、灵活程度,最重要的核心技术便是路径的设计与规划,比如自主地实现避障,在不同地形如木地板、砖地板、地毯、地垫等以及各种障碍物的情况下进行实时决策、移动、清扫等任务。

图片

扫地机器人的路径规划是机器人学科中的一个重要研究领域,其中如何在清扫过程中规划出最优路径,确保覆盖整个区域并避开障碍物,这就需要借助算法了。

图片

最常见的最短路径算法包括 Dijkstra(迪杰斯特拉)算法、A* 算法、Bellman-ford(贝曼-福特)算法、Floyd-Warshall (佛洛依德-沃歇尔)算法等,这些都属于不同的最短路径算法。

嬴图数据库来建模扫地机器人的路径规划:

1、创建图模型[5] 

· [1] 可以代表扫地机器人可以访问的房间、走廊、墙角、家具等每个地点;

· 边 [2] 则用来表示点与点之间的连接,例如路径的长度,通行的难度(例如需要穿过狭窄的门或地毯)、路径类型(直线、曲线、斜坡等)等。

图片

2、节点属性:

· 每个节点可以具有属性,如节点的坐标、类型(起点、终点、障碍物等),是否被清扫过等状态信息。这些属性均可以帮助扫地机器人进行路径[3] 规划和决策。

在我们日常中,呈现出的上层应用显示见下图:

图片

3、最短路径[4] 算法:
基于以上的建模信息,扫地机器人可以通过 Dijkstra 算法、A* 算法等来快速找到从起点到终点的最优路径。

1) Dijkstra(迪卡斯特拉)算法:在离散化的清扫区域网格中,机器人可以根据这个算法计算出一条能够有效覆盖整个区域的路径。

该算法的主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。

图片

图中各边上的每个数字表示从起始节点到终止结点的距离(这里定义为权值/权重)。那么,如上图所示,V1到各点之间的最短路径是哪些?使用方法如下:

起点

终点

最短路径

距离

V1

V2

V1—V2

2

V1

V3

V1—>V2—>V3

4.5

V1

V4

V1—>V4

3

V1

V5

V1—>V2—>V3—>V5

7

V1

V6

V1—>V2—>V3—>V5—>V6

8

V1

V7

V1—>V2—>V3—>V5—>V6—>V7

13

2)A*(A-Star)算法:扫地机器人通过 A*算法结合启发式函数,可以在清扫过程中动态地规划最短路径,并充分去考虑房间的布局和障碍物的分布,从而提高路径规划效率。

A*算法的优点是速度快,它通过评估每个节点到终点的距离,选择最优的路径来搜索最短路径。A*算法使用一个路径优劣评价公式为:

f ( n ) = g ( n ) + h ( n )

这里面还涉及到一个扫地机器人如何执行避障算法的问题。扫地机器人可以使用基于图搜索的算法如 A*来规划避开障碍物的路径,确保在清扫过程中不会与障碍物碰撞。

如图,假设我们需要从 A 点到目标点,这两点之间有一堵墙。我们把地图栅格化,把每一个方格的中心称为节点;父节点 A 周围共有 8 个子节点。这个特殊的方法把我们的搜索区域简化为了 2 维数组。数组的每一项代表一个格子,它的状态就是可走 (walkalbe) 和不可走 (unwalkable) 。通过计算出从 A 到 目标点需要走过哪些方格,就找到了路径。一旦路径找到了,便从一个方格的中心移动到另一个方格的中心,直至到达目的地 T。

图片

3)最小生成树(Minimum Spanning Tree,MST)算法:这些算法可以用于优化机器人的清扫路径,确保覆盖整个区域的同时减少路径长度,提高清扫效率。

最小生成树算法是一种试图选出权重[6] 和最小的边,从而使全图节点尽可能连通的算法。它属于图论中的一个基本概念,主要应用于路径优化、寻求最低成本等降本增效的求解场景中。以下是最小生成树算法的常用参数。

图片

在实际应用场景中,是会遇到动态变化以及要考虑各种复杂性的,图数据库可以支持动态的更新点和边,这就使得扫地机器人在路径规划时,可以根据实时环境的变化随时进行调整。(值得注意的是,图要考虑可能有环的问题,这意味着我们可从一个节点出发,走一圈后又回到这个节点。我们只要每绕环一次,总权重都会增加。因此,绕环的路径不可能是最短的路径。)

最后,扫地机器人的机智程度还需依托无线传感技术来及时观测发现,其中,该技术在无线传感网络中的应用也会用到最小生成树算法。该算法将实时观测到的环境信息、设备、路由等所有的网络进行建模,一旦当某个因素出现变化时,那么物理距离上代表图中的边上的权重也会实时更新,随之边权重相关的最小生成树计算必然也会实时调整,最终确保扫地机器人在清扫过程中轻松应对障碍物阻塞或各种突发情况。

图片

小结:

综上所述,随着物联网的普及,算法的应用正在为日常生活带来更多智能化的体验,尤其随着人工智能和机器学习技术的不断进步,未来将有更多的技术为家庭生活带来更多的便利和舒适。(文/Emma wanyi)

【注释

【1】点 (Node):代表真实世界中的实体,即图论中的顶点(Vertex),在嬴图系统中也称作节点。
【2】边 (Edge):代表真实世界中实体间的关系,连接两个实体。嬴图系统中的边均为有向边。边的两个端点可以相同也可以不同,相同时称为自环边(Self-loop)。
【3】路径 (Path):有确定的起点和终点、由点边交替相连构成的序列称为路径。路径中点可以重复出现,边不能重复出现。路径中所有点、边组成的序列可看作为路径的唯一标识符。
【4】最短路径 (Shortest Path):从起点经过最少的边(至少一条)到达终点的路径称为该起点到该终点的最短路径。当边带有权重时,“最少的边”应理解为“权重和最小的边”。
【5】图模型 (Graph Model):图中所有 schema 和属性的定义,表达图所描述的具体场景。
【6】权重(weight):狄克斯特拉算法用于每条边都有关联数字的图,这些数字称为权重(weight)。带权重的图称为加权图(weighted graph),不带权重的图称为非加权图(unweighted graph)。

END

图片

对图算法更多了解,请阅读嬴图系列2024年度新书——《图算法:行业应用与实践》,本书是继《图数据库原理、架构与应用》的姊妹篇。

图片

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Redisson实现分布式锁

基于redisson实现分布式锁 之前背过分布式锁几种实现方案的八股文,但是并没有真正自己实操过。现在对AOP有了更深一点的理解,就自己来实现一遍。 1、分布式锁的基础知识 分布式锁是相对于普通的锁的。普通的锁在具体的方法层面去锁,单体应…

一款EF Core下高性能、轻量级针对分表分库读写分离的解决方案

ShardingCore项目介绍 ShardingCore是一款开源、简单易用、高性能、普适性,针对EF Core生态下的分表分库的扩展解决方案,支持EF Core2的所有版本,支持EF Core2的所有数据库、支持自定义路由、动态路由、高性能分页、读写分离的一款EF Core拓展…

使用大漠插件进行京东联盟转链

由于之前开发了一套使用api转链的接口在前面几个月失效了。因为京东联盟系统升级,导致之前可以转的链接现在必须要升级权限才可以。但是升级条件对于我们这些自己买东西转链想省点钱的人来说基本上达不到。 所以,基于这种情况。我之前研究过大漠插件&am…

代码转换成AST语法树移除无用代码console.log、import

公司中代码存在大量,因此产生 可以使用 @babel/parser 解析代码生成 AST (抽象语法树),然后使用 @babel/traverse 进行遍历并删除所有的 console.log 语句,最后使用 @babel/generator 生成修改后的代码。 这里有一个网址,可以线上解析代码转换成AST语法树: https://astex…

mysql 9 新特新

mysql9新特性 新特性Audit Log NotesC API NotesCharacter Set SupportCompilation NotesComponent NotesConfiguration NotesData Dictionary NotesData Type NotesDeprecation and Removal NotesEvent Scheduler NotesJavaScript ProgramsOptimizer NotesPerformance Schema …

MAS马氏数控制榫机控制面板维修显示屏MDK3113B

马氏数控榫头机触摸屏/显示面板维修型号:MX3810A;MDK3113B;MXK2815B MAS马氏数控开榫机触摸屏/显示面板维修型号: MX2108B;MD2108A;MJ105А 数控面板维修包括:马氏数控榫头机、开榫机、制榫机…

eclipse基础工程配置( tomcat配置JRE环境)

文章目录 I eclipse1.1 工程配置1.2 编译工程1.3 添加 JRE for the project build pathII tomcat配置JRE环境2.1 Eclipse编辑tomcat运行环境(Mac版本)2.2 Eclipse编辑tomcat运行环境(windows版本)2.3 通过tomcat7W.exe配置运行环境(windows系统)I eclipse 1.1 工程配置 …

探索人工智能在电子商务平台与游戏发行商竞争中几种应用方式

过去 12 年来,电脑和视频游戏的发行策略发生了巨大变化。数字游戏的销量首次超过实体游戏的销量 在20132020 年的封锁进一步加速了这一趋势。例如,在意大利,封锁的第一周导致数字游戏下载量 暴涨174.9%. 展望未来,市场有望继续增…

如何改善提示词,让 GPT-4 更高效准确地把视频内容整体转换成文章?

(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费) 让我们来讨论一下大语言模型应用中的一个重要原则 ——「欲速则不达」。 作为一个自认为懒惰的人,我一直有一个愿望:完成视频制作…

React+TS前台项目实战(二十四)-- 全局常用绘制组件Qrcode封装

文章目录 前言Qrcode组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示(pc端 / 移动端) 总结 前言 今天要封装的Qrcode 组件,是通过传入的信息,绘制在二维码上,可用于很多场景,如区块链项目中的区块显示交易地址时就可以用到…

HMI 的 UI 风格创造奇迹

HMI 的 UI 风格创造奇迹

Prometheus + Grafana 监控系统搭建使用指南-mysqld_exporter 安装与配置

使用mysqld_exporter 实现Prometheus 监控Mysql 系列文章目录 Prometheus 的安装部署Grafana的安装部署Linux服务器接入Prometheus监控-Node Exporter 安装指南Prometheus 接入SpringBoot微服务监控Mysql 接入 Prometheus RocketMQ 接入Prometheus 监控ElasticSearch 接入 Pr…

如何在 Odoo 16 中向新视图添加字段

例如,让我们看看如何在新视图或新操作窗口中创建“many2one”字段。 请考虑下面的屏幕截图,它表示不包含任何字段的新视图类型或客户端操作窗口。 我们现在可以将与“res.partner”关联的“多对一”字段引入到我们的新视图或客户端操作窗口中。 为了实现这一点,在 XML 模板…

指标和量化交易那些事儿

最近很多朋友都在给我说,我要盘中打板的指标,我要盘中自动交易。今天我们来梳理下关于指标和量化交易这些事儿! 第一:什么是指标?股票指标是属于统计学的范畴,依据一定的数理统计方法,运用一些…

C语言 | Leetcode C语言题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; int robRange(int* nums, int start, int end) {int first nums[start], second fmax(nums[start], nums[start 1]);for (int i start 2; i < end; i) {int temp second;second fmax(first nums[i], second);first temp;}retur…

【Matlab 路径优化】基于蚁群算法的XX市旅游景点线路优化系统

基于蚁群算法的XX市旅游景点线路优化系统 &#xff08;一&#xff09;客户需求&#xff1a; ①考虑旅游景点的空间分布、游客偏好等因素&#xff0c;实现了旅游线路的智能规划 ②游客选择一景点出发经过所要游览的所有景点只一次&#xff0c;最后回到出发点的前提下&#xf…

2024年洗地机哪个牌子好?内行人最建议这4个:清洁力口碑公认都不错

在当代生活中&#xff0c;洗地机可以称得上是一款必备“神器”&#xff0c;劳累的清洁、繁忙的时间、漫天纷飞的宠物毛发&#xff0c;都是家庭清洁面前的一座座大山。而洗地机的出现&#xff0c;完美解决了这些问题&#xff0c;既节约出了很多时间&#xff0c;又达到了很好的清…

14-11 2024 年的 13 个 AI 趋势

2024 年的 13 个 AI 趋势 人工智能对环境的影响和平人工智能人工智能支持的问题解决和决策针对人工智能公司的诉讼2024 年美国总统大选与人工智能威胁人工智能、网络犯罪和社会工程威胁人工智能治疗孤独与对人工智能的情感依赖人工智能影响者中国争夺人工智能霸主地位人工智能…

PyTorch - 神经网络基础

神经网络的主要原理包括一组基本元素&#xff0c;即人工神经元或感知器。它包括几个基本输入&#xff0c;例如 x1、x2… xn &#xff0c;如果总和大于激活电位&#xff0c;则会产生二进制输出。 样本神经元的示意图如下所述。 产生的输出可以被认为是具有激活电位或偏差的加权…

学会python——用python制作一个登录和注册窗口(python实例十八)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.登录和注册窗口 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…