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

根据所给文字范围,为您提供的总结标题为:“使用栅格法结合蚁群算法规划机器人全局路径

使用栅格法通过蚁群算法规划机器人全局路径上周帮实验室的学弟调他的机器人路径规划代码他对着满屏的栅格地图挠头明明地图里堵了个外卖柜为啥机器人非要往那撞后来聊到用蚁群算法做全局规划才发现不少人把栅格法和蚁群算法拆成俩东西硬套其实俩搭起来才是工业界入门级别的常用路子。先不说啥算法先讲栅格法到底是啥——其实就是把真实的机器人运行地图切成跟扫雷游戏一样的小格子每个格子要么是能走的平地标0要么是障碍物墙、外卖柜、充电桩标1起点和终点就标上坐标比如(0,0)是机器人当前位置(9,9)是要送外卖的目的地。这么一来复杂的连续地图就变成了离散的格子点电脑算起来就简单多了不用处理那种动不动就几百万像素的原图。举个最简单的例子我们整一个10x10的测试地图中间加个L型的外卖柜挡路import numpy as np import random grid_map np.zeros((10, 10), dtypeint) # 中间加L型障碍物模拟外卖柜挡路 grid_map[3:7, 4] 1 grid_map[4, 3:7] 1 # 起点(0,0)终点(9,9) start (0, 0) end (9, 9)这样跑出来的地图直接看的话就是中间卡了个方块机器人没法直接直线穿过去得绕路。接下来就是蚁群算法上场了这玩意儿完全是抄蚂蚁找吃的逻辑蚂蚁出门找食物走的路会留下一种叫“信息素”的东西别的蚂蚁路过的时候会更愿意选信息素浓的路。要是某条路特别短蚂蚁来回走的次数多信息素就会越来越浓后来的蚂蚁就全往这条路上挤最后整个蚁群就找到了最短路径。放到栅格地图里逻辑就更直白了每只蚂蚁从起点出发每次只能往上下左右四个方向挪一格毕竟机器人一般不会斜着走不能撞障碍物也不能走回头路不然就绕圈子了。每到一个格子就按概率选下一个要走的格子——不是瞎选也不是直接挑离终点最近的而是平衡了“走信息素多的老路”和“探索没走过的新路”。使用栅格法通过蚁群算法规划机器人全局路径这里贴一下选下一个格子的代码比干讲好懂# 初始化所有格子的信息素一开始大家都一样都是1 tau np.ones_like(grid_map, dtypefloat) # 启发式函数算当前格子到终点的曼哈顿距离倒数离终点越近数值越大 def heuristic(pos): return 1 / (abs(pos[0] - end[0]) abs(pos[1] - end[1]) 1e-6) # 蚂蚁选下一步的逻辑 def select_next_node(current_pos, visited): # 上下左右四个方向 dirs [(-1,0),(1,0),(0,-1),(0,1)] neighbors [] for d in dirs: x, y current_pos[0] d[0], current_pos[1] d[1] # 检查格子在地图里、不是障碍物、没走过 if 0x10 and 0y10 and grid_map[x][y]0 and (x,y) not in visited: neighbors.append((x,y)) if not neighbors: return None # 走到死路了 # 计算每个邻居的选择概率信息素多的离终点近的权重更高 prob [] total 0 for n in neighbors: # alpha是信息素权重beta是启发式权重调参全靠试 p tau[n[0]][n[1]]**1 * heuristic(n)**2 prob.append(p) total p # 按概率随机选一个不是硬选最大的留了探索的空间 prob [p/total for p in prob] return random.choices(neighbors, weightsprob, k1)[0]我最开始写这段代码的时候忘了加visited集合结果蚂蚁在一个格子里来回打转跟个无头苍蝇似的跑了半天都没结果——这就跟你出门买奶茶绕着同一个路口转三圈纯纯浪费时间。然后就是迭代的过程了一次迭代就是让所有蚂蚁都从起点出发要么走到终点要么走到死路。每只蚂蚁走完之后把它走过的路径上的信息素加一点路径越短加的信息素越多。同时还要给所有格子的信息素加一个“挥发”的操作——比如每过一段时间旧的信息素会消失一部分不然最早的蚂蚁走了弯路留的信息素会一直占着坑导致后来的蚂蚁都跟着走弯路这叫“早熟收敛”是蚁群算法最常见的坑。贴一下迭代和更新信息素的代码# 蚁群的超参数全靠调 n_ants 20 # 一次迭代的蚂蚁数量 n_iter 100 # 迭代次数 rho 0.1 # 信息素挥发率0.1就是每轮消失10% Q 100 # 信息素增量系数越大则短路径的信息素涨得越快 best_path None best_length float(inf) for iter in range(n_iter): all_paths [] for ant in range(n_ants): current_pos start path [current_pos] visited set(path) # 蚂蚁一直走直到到终点或者死路 while current_pos ! end: next_pos select_next_node(current_pos, visited) if next_pos is None: break current_pos next_pos path.append(current_pos) visited.add(current_pos) # 要是走到了终点就记录这条路径的长度 if current_pos end: path_length sum(abs(path[i][0]-path[i1][0]) abs(path[i][1]-path[i1][1]) for i in range(len(path)-1)) all_paths.append((path, path_length)) if path_length best_length: best_length path_length best_path path # 更新所有格子的信息素先挥发再加上每只蚂蚁留下的信息素 tau * (1 - rho) for path, length in all_paths: for (x,y) in path: tau[x][y] Q / length # 每10轮打印一下当前的最优结果看看进度 if iter % 10 0: print(f第{iter}次迭代当前最优路径长度{best_length})学弟最开始把rho设成了0.01结果跑了50轮还在乱逛后来改成0.1第30轮左右就收敛到了最优路径——说白了就是挥发率太低的话旧的信息素留太久新的好路径的信息素盖不过旧的就跟你刷到一个好视频忘了点赞算法过段时间就不给你推同类了。最后跑出来的最优路径其实很符合预期从(0,0)先往右走到(0,3)绕开障碍物的左边再往下走到(3,3)然后往右走到(3,7)再往下走到(9,7)最后往右走到(9,9)全程没有撞障碍物而且是最短的绕路方案。其实这套组合拳不是最快的路径规划算法比如A*算法跑这种小地图比蚁群快多了但蚁群算法胜在好理解调参也相对灵活而且群智能的逻辑特别有意思——你看一群没有脑子的蚂蚁居然能凑出来最优路径放到机器人身上也是一样单个机器人可能笨但一群机器人凑起来就能搞定复杂的路径规划。要是你想本地跑一下试试最后加个matplotlib可视化代码就行看着地图上画出来的红线圈出来的路径比看打印的日志直观多了。

相关文章:

根据所给文字范围,为您提供的总结标题为:“使用栅格法结合蚁群算法规划机器人全局路径

使用栅格法通过蚁群算法规划机器人全局路径上周帮实验室的学弟调他的机器人路径规划代码,他对着满屏的栅格地图挠头:明明地图里堵了个外卖柜,为啥机器人非要往那撞?后来聊到用蚁群算法做全局规划,才发现不少人把栅格法…...

Claude Code 之父:AI 的改变不止于代码,程序员需要改变整个工作流

高水平工程劳动,正在离开手写代码。编译 | 王启隆出品丨AI 科技大本营(ID:rgznai100)这两天,Claude Code 以一种多少有点尴尬的方式被更多人看见了。不是因为新模型发布,也不是因为哪场演示太惊艳&#xff…...

基于单片机的井盖监测系统

摘 要 当前我国设计的井盖监测主要通过在井盖上放置标识等放置被盗,然后监测到被盗后,通过摄像头对其进行跟踪,导致当前还是存在很多井盖被盗,因此此次设计一款主要针对井盖防盗系统,监测到井盖移动时发送信息到管理人…...

Java协议解析慢得离谱?5个被90%团队忽略的字节级优化陷阱,今天必须修复!

第一章:Java协议解析慢得离谱?5个被90%团队忽略的字节级优化陷阱,今天必须修复!Java应用在高频网络通信场景(如金融行情推送、IoT设备接入)中,常因协议解析层性能瓶颈导致端到端延迟飙升——问题…...

【预测模型】基于VMD-SE-GRU+Transformer多变量时序预测 Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

Android compose 可见性动画未执行问题修复

接着修改待办事项demo, 动画有问题, 导致初始不显示数据,其实数据库是有数据的。原代码如下:package com.example.testcompose1import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.Fa…...

3步高效获取电子课本:tchMaterial-parser让国家中小学智慧教育平台资源轻松到手

3步高效获取电子课本:tchMaterial-parser让国家中小学智慧教育平台资源轻松到手 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获…...

2026 AI简历工具排行榜:写出专业简历,助你直通面试

求职市场对人才的要求日益精细化,一份高质量的简历已成为开启职业大门的“敲门砖”。然而,对于许多求职者而言,“不会排版”、“不擅措辞”依然是制作简历时面临的两大难题。幸运的是,AI技术的飞速发展为我们带来了福音——AI简历…...

AI算力芯片黑马!“图灵进化”完成新一轮数千万级别融资

AI算力芯片赛道再添重磅玩家!近日,AI算力芯片创新企业图灵进化(TuringEvo)宣布完成新一轮数千万级别融资 ,本轮融资资金将主要用于核心产品量产、研发团队扩充及全球市场拓展。图灵进化定位于“覆盖云边端全场景AI算力…...

【Ease UI】2026-04-03组件更新:新增组件xly-china-map中国地图组件

🚀 即插即用的 Vue 3 业务组件库,让中后台开发回归简单Ease UI 是一套为「快速复制」而生的 Vue 3 业务组件库。每个组件都是独立的 .vue 单文件,不依赖任何外部样式或工具函数,直接复制到你的项目即可使用。它仅依赖 Element Plu…...

蓝桥杯备赛:Day3-P1102 A-B 数对

📚 算法笔记:P1102 A-B 数对 (枚举与哈希查找) 1. 题目简述 P1102 A-B 数对 - 洛谷 给出一个长度为 NNN 的正整数数列和一个整数 CCC,求有多少个不同的数对 (A,B)(A, B)(A,B) 满足 A−BCA - B CA−BC。 数据范围:N≤2105N \l…...

AI未来五年发展路径

AI的发展路径:生成能力-推理能力-Agent能力-数字虚拟人-具身机器人-脑机接口。(1)生成现在生成都已经渐入佳境:文本:文本报告生成、代码生成,如Claude Code语音:语音生成图片:图片生…...

【大模型智能体】【Harness Engineering】Natural-Language Agent Harnesses

摘要 智能体性能日益依赖于约束工程,然而约束设计通常深嵌于控制器代码与运行时特定规范中,难以作为科学对象进行转移、比较和研究。我们提出:智能体的高层控制逻辑能否被外化为一种可移植的可执行制品?我们引入了自然语言智能体约…...

模型评估体系架构解析

模型评估是量化系统表现的核心基准。本架构基于分类树结构,将系统切分为传统机器学习范式(ML Models)与检索增强生成代理(RAG Agent)两大赛道,并向下延展至具体的评估算子。 1. ML Models (传统机器学习模型…...

AI Agent架构入门到精通:LangChain重磅DeepAgents深度拆解,看这一篇就够了!

引言:为什么传统Agent总是"浅尝辄止"? 你有没有遇到过这样的尴尬场景: 让AI助手帮你完成一个复杂任务,比如"调研一下LangGraph技术,写一份技术报告,并创建相应的代码示例"。刚开始&a…...

7张图看懂Claude Code:从架构图解到工程实现

这篇文章用7张图架构图解的方式,系统讲解Claude Code的工程实现。 为什么要关注Claude Code? 2026年3月31日,Anthropic的Claude Code CLI工具因npm发布包意外暴露了.map文件,导致完整源码泄露。 这虽然说不是一次主动的开源&am…...

V数据库设计

一、章节核心定位第二章通常是数据库设计的需求分析与概念结构设计阶段,是整个数据库设计流程的核心起点,直接决定后续逻辑结构、物理结构设计的合理性,是从业务需求到数据模型的关键转化环节。二、核心知识点梳理1. 需求分析阶段&#xff08…...

算法会梦见电子羊,但人类需要学会与有偏见的AI共存 | 嗨点小圆桌

点击文末“阅读原文”即可参与节目互动剪辑、音频 / 卷圈 运营 / 卷圈 监制 / 姝琦 封面 / 姝琦 产品统筹 / bobo 场地支持 / AI原点社区我们避开关于算力和估值的宏大叙事,在 AI 原点社区的小圆桌旁,和两位刚刚从硅谷大厂“回归”实验室的科学家聊…...

ONES 签约全国汽车电子精密制造领先者——维科精密

ONES 签约全国汽车电子精密制造领先者 —— 维科精密。作为上市的国家级专精特新“小巨人”企业,维科精密凭借领先的技术实力与制造能力,成为全球知名客户高度信赖的汽车电子精密制造领域标杆。ONES 助力维科精密实现研发与制造流程的数字化升级&#xf…...

告别串口打印!用STM32F103C8T6和0.96寸OLED打造迷你温湿度计

用STM32F103C8T6和0.96寸OLED打造极简温湿度监测终端 在创客圈里,总有些小项目能让人眼前一亮——比如把枯燥的传感器数据变成桌面上的精致显示装置。今天我们要做的,就是用一个STM32F103C8T6开发板、0.96寸OLED屏幕和DHT22传感器,打造一个完…...

告别命令行手敲:用Python脚本自动化你的第一个OpenFOAM腔体流动模拟

用Python脚本解放双手:OpenFOAM腔体流动模拟自动化实战 每次打开终端,重复输入相同的OpenFOAM命令,修改几乎雷同的参数文件,这种机械操作是否让你感到效率低下?作为CFD工程师,我们真正应该投入时间的是分析…...

Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录

Linux下CST8XX触摸屏驱动调试实战:从I2C波形异常到内核崩溃的完整解决记录 在嵌入式Linux开发中,触摸屏驱动的调试往往是最具挑战性的环节之一。本文将详细记录CST8XX系列电容触摸屏在Linux平台上的完整调试过程,涵盖从硬件信号异常到内核崩溃…...

你的Spring Boot项目安全吗?快速排查并修复Fastjson2历史版本(<=2.0.26)的隐藏风险

Spring Boot项目安全自查:Fastjson2历史版本(≤2.0.26)风险排查与修复指南 最近在帮几个客户做代码审计时,发现不少Spring Boot项目还在使用Fastjson2的老版本。说实话,这个问题比想象中普遍——很多团队甚至不知道自…...

OpenClaw(小龙虾)Windows 避坑安装指南

最近“小龙虾”(OpenClaw)可以说是 AI 圈最火的话题之一,这个能真正执行任务的 AI 智能体让无数人看到了自动化的无限可能。作为一个热衷于折腾各种 AI 工具的开发者,我也第一时间在 Windows 上尝试部署,结果一上来就被…...

台湾大学最新研究:大语言模型也能像人类一样“拐弯思考“了?

在人工智能的世界里,让机器像人类一样思考一直是个巨大挑战。当我们遇到复杂问题时,会自然地分步骤思考,比如解数学题时会先分析条件、再列方程、最后求解。但对于能理解声音的AI模型来说,这种"拐弯思考"能力还不够强。…...

几何精度因子(GDOP)在GNSS定位中的关键作用与优化策略

1. 什么是几何精度因子(GDOP)? 当你用手机导航时,有没有遇到过定位漂移的情况?明明站在十字路口,地图上的小蓝点却在周围乱跳。这种现象很大程度上与GDOP值有关。简单来说,GDOP就像是一个"…...

在VMware Workstation上实战部署华为eSight网络管理平台

1. 环境准备:从零搭建虚拟化实验平台 第一次接触华为eSight时,我完全被它的企业级功能震撼了——但随之而来的问题是:如何在个人电脑上搭建测试环境?经过多次实践,我发现VMware Workstation是最理想的实验平台。这里分…...

【配网可靠性评估】含可再生能源的配电网可靠性评估方法Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

【电池容量提取+锂电池寿命预测】 基于Transformer-BiGRU的锂电池剩余寿命预测Matlab代码(单变量)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

保姆级教程:手把手教你理解电力线载波通信的MAC帧与MPDU(附避坑指南)

电力线载波通信MAC帧与MPDU实战解析:从协议规范到调试避坑 电力线载波通信(PLC)技术凭借其"无需额外布线"的天然优势,在智能电网、智能家居等领域持续渗透。但当你真正打开协议文档准备调试时,那些密密麻麻的…...