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

前言

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

图片

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

图片

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

图片

最常见的最短路径算法包括 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.mfbz.cn/a/774088.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论② | 9.4 - 9.5

前言 第 9 章对应的内容选择题和案例分析都会进行考查,这一章节理论性较强,学习要以教材为准。本章分值预计在4-5分。 目录 9.4 项目生命周期和项目阶段 9.4.1 定义与特征 9.4.2 生命周期类型 9.5 项目立项管理 9.5.1 项目建议与立项申请 9.5.2 …

交换数字00

题目链接 交换数字 题目描述 注意点 numbers.length 2-2147483647 < numbers[i] < 2147483647 解答思路 不适用临时变量&#xff0c;可以先将numbers[0]和numbers[1]的信息都存到某个位置&#xff08;可以相加可以相减或其他位操作&#xff09;&#xff0c;然后另一…

昇思MindSpore学习笔记4-02生成式--DCGAN生成漫画头像

摘要&#xff1a; 记录了昇思MindSpore AI框架使用70171张动漫头像图片训练一个DCGAN神经网络生成式对抗网络&#xff0c;并用来生成漫画头像的过程、步骤。包括环境准备、下载数据集、加载数据和预处理、构造网络、模型训练等。 一、概念 深度卷积对抗生成网络DCGAN Deep C…

MMSC物料库位扩充

MMSC物料库位扩充 输入事务码MMSC&#xff1a; 回车后添加新的库位即可&#xff1a; 代码实现&#xff0c;使用BDC *&------------------------------------------------* *&BDC的定义 *&------------------------------------------------* DATA gt_bdcdata T…

【UE5.1】Chaos物理系统基础——03 炸开几何体集

目录 步骤 一、通过径向向量将几何体集炸开 二、优化炸开效果——让破裂的碎块自然下落 三、优化炸开效果——让碎块旋转起来 四、优化炸开效果——让碎块旋转的越来越慢 步骤 一、通过径向向量将几何体集炸开 1. 打开上一篇中&#xff08;【UE5.1】Chaos物理系统基础—…

百度出品_文心快码Comate提升程序员效率

1.文心快码 文心快码包含指令、插件 和 知识三种功能&#xff0c; 1&#xff09;指令包含Base64编码、Base64解码、JSON转TS类型、JSON转YAML、JWT解码喂JSON。 2&#xff09;插件包含 3&#xff09;指令包含如下功能&#xff1a; 官网链接

Jenkins 强制杀job

有时候有的jenkins job运行时间太长&#xff0c;在jenkins界面点击x按钮进行abort&#xff0c;会失败&#xff1a; 这时候点击&#xff1a; “Click here to forcibly terminate running steps” 会进一步kill 任务&#xff0c;但是也还是有杀不掉的可能性。 终极武器是jenkin…

Aigtek电压放大器参数有哪些

电压放大器是广泛应用于电子电路中的一种重要电路元件&#xff0c;它主要用于将输入信号的电压放大到所需的输出电压水平。在设计和使用电压放大器时&#xff0c;我们需要了解并考虑一系列的参数和特性。本文将详细介绍电压放大器的主要参数&#xff0c;包括放大倍数、带宽、输…

springboot校园购物网站APP-计算机毕业设计源码041037

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

【国产开源可视化引擎Meta2d.js】图层

独立图层 每个图元都有先后绘画顺序&#xff0c;即每个图元拥有一个独立图层&#xff0c;即meta2d.data().pens的数组索引。 可以通过meta2d.top/bottom/up/down等函数改变独立图层顺序。 分组图层 通过标签可以标识一个分组图层&#xff0c;通过meta2d.find(图层标签)获取…

己内酰胺纯化除杂的最佳工艺

己内酰胺纯化除杂的最佳工艺包括结晶法、离子交换树脂法、精馏法和萃取法等&#xff0c;每种方法都有其特定的应用场景和优缺点。以下是对这些方法的详细介绍&#xff1a; 最佳工艺介绍 ● 结晶法&#xff1a;通过调节pH值&#xff0c;使己内酰胺在特定条件下结晶&#xff0…

yolov8环境安装(可修改代码版本,源代码安装)

下载下来源文件以后&#xff0c;进去文件目录&#xff0c;然后输入pip指令&#xff0c;即可安装yolov8 cd ultralytics-main pip install -e . 直接使用pip安装的情况 当你使用pip install ultralytics这样的命令安装YOLOv8时&#xff0c;你实际上是在从Python包索引&#x…

C#实战|账号管理系统:通用登录窗体的实现。

哈喽,你好啊,我是雷工! 本节记录登录窗体的实现方法,比较有通用性,所有的项目登录窗体实现基本都是这个实现思路。 一通百通,以下为学习笔记。 01 登录窗体的逻辑 用户在登录窗输入账号和密码,如果输入账号和密码信息正确,点击【登录】按钮,则跳转显示主窗体,同时在固…

AI提示词:一个能让你的AI提升10倍逻辑能力的提示词,只有这几个字,Kimi和GPT都适用!

昨天晚上和朋友聊天&#xff0c;聊到AI提示词在实际使用过程中的逻辑能力问题。 他也是一个AI提示词的重度使用者&#xff0c;但是会经常遇到一个问题&#xff1a;明明觉得自己的提示词描述的很清楚了&#xff0c;可是AI输出的内容还是达不到自己想要的效果。 今天给大家分享…

认识不-物联网“六域模型”有哪些有什么作用

如下参考源于苏州稳联授权可见认知域-感知域-网络域-应用域-管理域-安全域-物联网六域模型 苏州稳联 (iotrouter.cn) 认识物联网“六域模型”&#xff1a;构成与作用 “六域模型”是一个有效的框架。这个模型通过将物联网划分为六个相互关联的域&#xff0c;帮助我们更好地理…

【网络安全】漏洞挖掘之Spring Cloud注入漏洞

漏洞描述 Spring框架为现代基于java的企业应用程序(在任何类型的部署平台上)提供了一个全面的编程和配置模型。 Spring Cloud 中的 serveless框架 Spring Cloud Function 中的 RoutingFunction 类的 apply 方法将请求头中的“spring.cloud.function.routing-expression”参数…

免费的二级域名分发,您确定不要试试吗?

这是可爱的小盆友做的一个免费的二级域名&#xff0c;目前上线就送114514个积分&#xff0c;名额有限~ 首先进入>路明二级域名分发 - 免费稳定的二级域名分发服务 (kmyl.top)< 进来是这个样子&#xff08;如下图所示&#xff09; 话不多说&#xff0c;进入教程~ 第一章…

创建react的脚手架

Create React App 中文文档 (bootcss.com) 网址&#xff1a;creat-react-app.bootcss.com 主流的脚手架&#xff1a;creat-react-app 创建脚手架的方法&#xff1a; 方法一&#xff08;JS默认&#xff09;&#xff1a; 1. npx create-react-app my-app 2. cd my-app 3. …

Redis 7.x 系列【19】管道

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 往返时间2. 管道技术3. 代码演示4. 其他批处理4.1 原生批处理命令4.2 事务4.3 脚本…

短链接学习day2

用户敏感信息脱敏展示&#xff1a; RequestParam 和 PathVariable的区别 注解是用于从request中接收请求的&#xff0c;两个都可以接收参数&#xff0c;关键点不同的是RequestParam 是从request里面拿取值&#xff0c;而 PathVariable 是从一个URI模板里面来填充。 PathVari…