第四篇: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 + 地图 + 机器人:完整定位系统架构解析
相关推荐
梦想的旅途212 分钟前
企业微信外部群消息自动推送实战
机器人·自动化·企业微信
FBI HackerHarry浩3 小时前
解决pip 安装 numpy 时元数据生成失败
numpy·pip
硅谷秋水3 小时前
Nautilus:从单一提示词到即插即用机器人学习
人工智能·深度学习·机器学习·机器人
砍材农夫4 小时前
python环境|pip|uv|venv|Conda区别
后端·python·conda·pip·uv
2501_941982054 小时前
Webhook 驱动:企业微信消息接收与自动回复
网络·机器人·自动化·企业微信
带娃的IT创业者5 小时前
从天津“工业机器人天团”看现代智能制造的技术架构演进
架构·机器人·制造·智能制造·运动控制·工业机器人·技术架构
旺财矿工5 小时前
OpenClaw 飞书机器人配置教程|一键对接飞书,实现聊天下达 AI 指令
人工智能·机器人·飞书·openclaw·龙虾
程序猿小白菜5 小时前
OpenClaw 飞书机器人搭建流程
ai·机器人·飞书·openclaw
深蓝学院5 小时前
Nature新刊Sensors:清华团队突破机器人触觉难题,多模态感知精度直逼人类指尖
机器人·触觉·具身智能
硅谷秋水14 小时前
HARBOR:一个面向具身智体机器人强化学习的驾驭框架
人工智能·深度学习·机器学习·机器人