第四篇:Point-In-Polygon 是什么?——机器人电子围栏核心算法

引言

上一篇我们讲了:

《机器人为什么会"漂"?------RTK 漂移问题详解》

很多人现在已经知道:

复制代码
RTK ≠ 永远绝对精准

于是问题来了:

既然 RTK 会漂。

那机器人为什么:

  • 不会直接冲出边界?
  • 不会跑到马路上?
  • 不会撞到禁区?
  • 不会乱跑?

比如:

  • 割草机器人不会跑出草坪
  • 清扫机器人不会进入禁区
  • AGV 不会离开路线区域
  • 无人车不会越界

它们到底是怎么做到的?

今天我们就从工程视角,

真正讲透:

机器人电子围栏核心算法

Point-In-Polygon(点在多边形内判断)


一、什么是电子围栏?

所谓电子围栏。

本质上就是:

给机器人划一个"允许活动区域"

例如:

复制代码
草坪区域
仓库区域
巡检区域
停车区域

机器人只能:

复制代码
在这个区域内部活动

一旦超出:

系统就会:

  • 停止运动
  • 重新规划路径
  • 告警
  • 强制回退

二、电子围栏本质是什么?

很多人以为:

电子围栏很高级。

其实本质非常简单:

判断"一个点"是否在"一个区域"内

也就是:


输入

机器人当前位置:

复制代码
(x, y)

区域边界:

复制代码
多个顶点组成的多边形

输出

复制代码
在区域内?
还是区域外?

这就是:

Point-In-Polygon(PIP)


三、什么是 Polygon(多边形)?

机器人中的区域:

通常不是圆形。

而是:

复制代码
任意不规则区域

例如草坪:

可能长这样:

复制代码
A → B → C → D → E

这些点连接起来:

就形成:Polygon(多边形)


四、Point-In-Polygon 是什么?

翻译过来:

就是:

"点是否在多边形内"

简称:

PIP

这是:

机器人领域最经典算法之一。

广泛用于:

  • 割草机器人
  • AGV
  • 无人车
  • GIS 地图
  • 无人机
  • 地图系统

五、机器人是怎么判断"越界"的?

核心逻辑其实非常简单:


第一步

RTK 获取机器人当前位置:

复制代码
(x, y)

第二步

系统提前保存:

复制代码
电子围栏边界点

例如:

复制代码
[(0,0), (10,0), (10,10), (0,10)]

第三步

执行:

Point-In-Polygon 判断


第四步

如果:

复制代码
不在区域内

机器人立刻:

  • 停止
  • 回退
  • 告警

六、最经典算法:射线法(Ray Casting)

这是面试高频。

也是工程里最常用的方法。


核心思想

从当前点:

复制代码
向右发射一条射线

然后 统计:

射线与多边形边的相交次数


规则

奇数次

说明:点在内部

偶数次

说明:点在外部


举个例子

点在矩形内部

射线会穿过边界:1 次

于是:

奇数

→ 在内部

点在矩形外面

射线可能:

0 次

或 2 次

于是:

偶数

→ 在外部


七、为什么不用"距离判断"?

很多新人会想:

"我直接判断距离不行吗?"

其实不行。

因为机器人区域:

通常是:

复制代码
不规则区域

例如:

  • L 型草坪
  • 异形仓库
  • 曲线边界
  • 多边形区域

所以:

必须使用:

Polygon 算法


八、RTK 为什么之后还需要电子围栏?

RTK 只是"定位"

这是工程里的关键。

因为:RTK 只是"定位" 。它只负责:机器人在哪里

但:"能不能过去" 是围栏系统决定的。


举个例子

即使 RTK 已经知道:机器人在草坪边缘

但系统仍然需要判断:有没有越界

所以:RTK 与围栏:本质是: 两套系统


九、为什么机器人仍然可能"压线"?

这个非常真实。

原因包括:


1. RTK 本身有漂移

例如:

复制代码
真实位置在边界内
但 RTK 计算已经出界

2. 控制系统存在延迟

机器人 不是:

复制代码
瞬间停止

而是:

  • 有惯性
  • 有刹车距离
  • 有控制延迟

所以:

即使检测到边界。

也可能:

复制代码
已经压过去一点

3. 地图误差

例如:

  • 建图不准
  • 围栏点误差
  • 坐标系误差

都会导致: 边界偏移。


十、真实机器人里的完整链路

真实工程通常是:

RTK

→ 获取位置

地图系统

→ 管理围栏

PIP 算法

→ 判断是否越界

运动控制

→ 决定停止/回退

所以:

电子围栏并不是"单独一个功能"

而是:

整个机器人定位系统的一部分


十一、Android / IoT 里怎么实现?

实际工程中:

很多机器人:

上层其实就是:

复制代码
Android

或者:

复制代码
Linux + C++

通常流程:


RTK 模块

输出:

复制代码
经纬度

上层系统

转换为:

复制代码
地图坐标

然后执行

复制代码
Point-In-Polygon 判断

最后

控制机器人运动。


十二、面试怎么回答?

如果面试官问:

"机器人电子围栏怎么实现?"

标准答案(面试版)

机器人电子围栏的核心:

本质上是:Point-In-Polygon(点在多边形内判断)

系统会:

  1. 使用 RTK 获取机器人当前位置
  2. 使用地图保存围栏边界
  3. 通过 PIP 算法判断当前位置是否在区域内

工程里:

通常会使用:射线法(Ray Casting)

判断:

点与多边形边界的相交次数。

奇数次在内部。

偶数次在外部。


十三、总结

一句话总结:

RTK 负责"机器人在哪"

Point-In-Polygon 负责"机器人能不能过去"

这两者 共同构成:

机器人电子围栏系统


下篇预告

下一篇我们继续:

《NMEA、RTCM、NTRIP 到底是什么?------RTK 数据链路详解》

深入讲透:

  • GNSS 模块到底输出了什么
  • NMEA 为什么像"GPS 日志"
  • RTCM 为什么是差分核心
  • NTRIP 为什么需要网络
  • 基站数据怎么传到机器人
  • Android / IoT 怎么接收 RTK 数据

这些:才是真正的 RTK 工程通信核心。


《RTK / GNSS 工程实战系列》

  1. 为什么机器人能厘米级定位?------一篇讲透 GPS、北斗 与 RTK
  2. RTK 为什么比 GPS 准?------差分定位原理详解
  3. 机器人为什么会"漂"?------RTK 漂移问题详解
  4. Point-In-Polygon 是什么?------机器人电子围栏核心算法
  5. NMEA、RTCM、NTRIP 到底是什么?------RTK 数据链路详解
  6. Android / IoT 如何接入 RTK 模块?------串口、蓝牙、TCP 工程实践
  7. RTK + 地图 + 机器人:完整定位系统架构解析
相关推荐
消失的旧时光-194310 小时前
第三篇 :机器人为什么会“漂”?——RTK 漂移问题详解
机器人·定位·rtk
kyle~20 小时前
机器视觉---熔池相机(穿透强光的视觉感知)
c++·数码相机·计算机视觉·机器人·焊接机器人
kyle~21 小时前
机器人时间链路---工程流程示例
c++·3d·机器人·ros2
wjc12313131 天前
蓝印RPA|企业微信机器人Agent配置说明
机器人·企业微信·rpa
数智工坊1 天前
【Inner Monologue论文阅读】: 首次将大语言模型嵌入机器人控制闭环,实现自我反思和动态行为调整
论文阅读·人工智能·算法·语言模型·机器人·无人机
互联圈运营观察1 天前
布局先行、技术深耕:国内端侧AI企业抢滩机器人与具身智能赛道
人工智能·microsoft·机器人
是三旬老汉。1 天前
宇树G1-D机器人端推理开发记录
python·机器人
生成论实验室1 天前
通用人工智能完整技术方案:一个基于字序生命模型(WOLM)认知决策层实时、安全、可交互的数字生命体
人工智能·机器人·自动驾驶·agi·安全架构
QYR-分析1 天前
智能化转型赋能升级!全球电力作业机器人行业发展现状与前景解析
人工智能·机器人