引言
上一篇我们讲了:
《机器人为什么会"漂"?------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(点在多边形内判断)
系统会:
- 使用 RTK 获取机器人当前位置
- 使用地图保存围栏边界
- 通过 PIP 算法判断当前位置是否在区域内
工程里:
通常会使用:射线法(Ray Casting)
判断:
点与多边形边界的相交次数。
奇数次在内部。
偶数次在外部。
十三、总结
一句话总结:
RTK 负责"机器人在哪"
Point-In-Polygon 负责"机器人能不能过去"
这两者 共同构成:
机器人电子围栏系统
下篇预告
下一篇我们继续:
《NMEA、RTCM、NTRIP 到底是什么?------RTK 数据链路详解》
深入讲透:
- GNSS 模块到底输出了什么
- NMEA 为什么像"GPS 日志"
- RTCM 为什么是差分核心
- NTRIP 为什么需要网络
- 基站数据怎么传到机器人
- Android / IoT 怎么接收 RTK 数据
这些:才是真正的 RTK 工程通信核心。
《RTK / GNSS 工程实战系列》
- 为什么机器人能厘米级定位?------一篇讲透 GPS、北斗 与 RTK
- RTK 为什么比 GPS 准?------差分定位原理详解
- 机器人为什么会"漂"?------RTK 漂移问题详解
- Point-In-Polygon 是什么?------机器人电子围栏核心算法
- NMEA、RTCM、NTRIP 到底是什么?------RTK 数据链路详解
- Android / IoT 如何接入 RTK 模块?------串口、蓝牙、TCP 工程实践
- RTK + 地图 + 机器人:完整定位系统架构解析