ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

机器人避障为什么总在墙角“发疯”?我试了一种不靠训练的思路

机器人避障为什么总在墙角“发疯”?我试了一种不靠训练的思路 起因去年帮一个朋友调试扫地机。他说机器人在墙角老是反复撞换了更贵的传感器也没用。我看了日志发现不是传感器的问题。它“看”到了障碍但分不清——这是前方一堵墙还是在一个角落里传统做法是给每个传感器设阈值前方 0.8 就算有障碍 → 掉头。但墙角这个场景是这样的前方有障碍0.9左前也有障碍0.9左方有障碍0.6阈值判断只会说“前方有障碍 → 掉头”。结果掉头方向正好是墙继续撞。它缺的不是传感器是“看懂空间关系”的能力。试过的方案后来试过两种常见方案都有各自的硬伤方案一多传感器 机器学习把 8 个传感器读数拼成一个向量训一个分类器。问题要标注数据。真实场景标注成本很高——你得让机器人跑几百个小时人工标记每一帧是什么场景。换个新场景可能还要重新标。方案二激光雷达 SLAM建图、定位、路径规划。问题激光雷达贵算法复杂部署周期 2~4 周。对小厂来说门槛太高。换个思路去年读到一篇文章讲耦合振子的相位同步现象。大意是一群相互耦合的振子会自然演化到一个稳定的相位关系——这个稳定关系不依赖单个振子的初始状态只取决于它们之间的耦合结构。我突然想到空间关系本身不也是一种“耦合结构”吗8 个方向的传感器读数不是 8 个独立的数字它们之间有关系前方近 左前近 可能角落前方近 左方远 可能是前方墙如果把这些“关系”映射到一组耦合振子上让它自己演化稳定下来的状态会不会就是空间情景于是有了 A9 空间编码引擎 的雏形。它是什么简单说text输入8 个方向读数0.0~1.0↓映射到 8 个节点的相位耦合动力系统↓演化到稳定状态↓输出一个空间情景标签不训练不标注不调参。 8 个数进去一个标签出来。标签有 8 种open开阔、front_wall前方墙、corner角落、corridor走廊、dead_end死胡同、door门口、left_wall、right_wall。跟传统方法的区别传统阈值 A9看什么 单点超没超线 8 个方向的整体关系墙角 / 前方墙 分不清 能分清噪声 30% 识别率掉到 40~60% 识别率 100%部署 — 10 分钟训练 — 零训练我做了个测试器你可以自己验证口说无凭。我写了个网页你可以上传自己机器人的传感器日志看准确率。texthttp://42.193.123.239:8000/testCSV 格式csvr0,r1,r2,r3,r4,r5,r6,r7,label0.9,0.5,0.4,0.0,0.1,0.0,0.6,0.9,corner0.1,0.1,0.9,0.1,0.1,0.1,0.9,0.1,corridorr0~r78 个方向顺序是前、右前、右、右后、后、左后、左、左前label真值标签拖进去3 秒出报告准确率、按标签拆分、错误样本。你自己的数据你自己判断。如果测出来能用接入很简单Python 只要几行pythonimport requestsr requests.post(“http://42.193.123.239:8000/demo”,json{“readings”: [0.9, 0.5, 0.4, 0.0,0.1, 0.0, 0.6, 0.9]})print(r.json())→ {‘label’: ‘corner’, ‘confidence’: 1.0}/demo 不需要注册随便试。正式接入的话注册拿一个 Key调 /predict免费额度 1000 次/天。现在能用在哪扫地机器人分角落 / 沿墙 / 走廊避免反复撞AGV 仓储窄通道避障、货架间穿行无人机室内避障、编队飞行机械臂防碰撞游戏 / VRNPC 空间感知不限于物理世界。原理是通用的——只要能把输入映射成“关系”让关系自己演化就能得到稳定状态。比如金融时间序列多变量之间的关系 → 映射到动力系统 → 演化到状态 → 状态分类。一点感想做这个的初衷很简单能不能不靠训练让机器自己“感知”空间关系物理世界里的很多结构本来就是自组织的——水波、心跳、鸟群。我们习惯了用“识别 分类”的思路去做感知但也许有些东西用“动力学 演化”的思路更合适。A9 只是这个方向上的一个小尝试。测试器地址http://42.193.123.239:8000/test有兴趣的朋友可以试试用你自己的数据测。有问题欢迎交流303450069qq.com
返回列表