色带和磁条导航
概述 / Overview
色带和磁条导航是工业 AGV 最经典、最低成本的导航方式:在地面铺设一条 视觉色带或 磁条,车上装传感器实时测量与色带 / 磁条中线的横向偏差,反馈到转向回路实现自动巡线。MDCS 把这类车视为 自评估车:车体自行处理巡线,调度只下发"去哪个站点"的高层意图。
Tape and magnetic-strip navigation is the most classic, lowest-cost industrial AGV navigation: lay coloured tape (vision) or a magnetic strip on the floor; the AGV uses a sensor to measure lateral offset from the strip and steers to keep it centred. MDCS treats these as self-evaluating vehicles: the cart does its own line-following, the fleet just dispatches "go to site X" intents.
适用 / Use cases
- 低成本固定路径(仓储入库、装配线物料补给)
- 强干扰环境(金属反射多、纹理少,激光 SLAM 表现差)
- 老线改造(已有色带 / 磁条线路,复用基础设施)
- 安全要求极高、需要 物理路径可视可控的场景
- Low-cost fixed routes (binning, assembly-line restock).
- Environments hostile to laser SLAM (heavy metal reflection, no texture).
- Brown-field upgrades where tape / magnet routes already exist.
- Safety-critical use cases that demand a physically visible / controllable path.
系统组成 / System composition
| 部件 / Part | 色带导航 / Tape | 磁条导航 / Magnetic strip |
|---|---|---|
| 路径基础设施 / Path media | 反光色带、贴在地面 / reflective coloured tape on the floor | 磁条,1–3 mm 厚,可埋入地面或贴面 / magnetic strip 1–3 mm thick |
| 车上传感器 / On-board sensor | 线扫相机或多点光电 / line camera or photo-array | 磁导航传感器(霍尔阵列)/ Hall-array |
| 站点标记 / Site marker | 二维码 / 反光异型 / RFID tag near the tape | RFID 标签(最常见)/ RFID tag |
| 控制器 / Controller | 厂商 PLC / MCU | 厂商 PLC / MCU |
| 通讯 / Comm to fleet | Wi-Fi + RFID 站点回报 | Wi-Fi + RFID 站点回报 |
| 路径修改 / Route change | 重铺色带 | 重铺磁条 |
色带导航的优点:易铺设、易看见、可临时改路径;缺点:易污损。
磁条优点:耐用,污垢不影响;缺点:金属物体附近误读,改线难。
MDCS 适配 / MDCS adaptation
要点: 这类车在 SimpleCore / SimpleComposer 中是 自评估车(不跑 MDCS 车载),调度的工作止于"高层意图 + 站点回报"。
The vehicle is a self-evaluating car from MDCS's point of view: no on-board Clumsy, no Medulla. The scheduler's job is to send intent and observe site reports.
最小集成: Minimal integration:
- 在 SimpleComposer 中声明一个 `Car` 子类(不是 ClumsyCar),含 nested `AGV : AGVInterface`。
- `AGV.Go(srcId, dstId)` 把 站点意图翻译为 RFID 命令帧(或 Modbus 寄存器写入),通过 Wi-Fi 发送到车上 PLC。
- 车上 PLC 用 RFID 读到的站点 ID 自决定 下一步(前进 / 等待 / 转向 / 停止),并把 RFID + 状态周期上报。
- 在 `Car.keepAlive()` 中解析回报,更新 `(x, y, th, siteId, batt, error)`。
- 站点上锁仍由 SimpleCore 的 `TryLock / Leave` 控制,但 是否真的进入取决于车体识别到 RFID 标签。
模板代码(重要细节见 `D:\src\cookbook\adaption-reference\苏州凌鸟\Scenes\AMRScene1\Cars\MNavCar.cs` 293 行):
[CarType(Name = "TapeAGV", Title = "色带 / 磁条 AGV / Tape or magstrip AGV")]
public class TapeAGV : Car
{
public string plcIp;
public int rfidLastSeen;
public DateTime lastHeartbeat = DateTime.Now;
public class AGV : AGVInterface
{
private readonly TapeAGV car;
public AGV(TapeAGV c) { car = c; }
public void Go(double sx, double sy, int srcId,
double dx, double dy, int dstId, int routeId)
{
Queue(
async () => { TryLock(srcId, routeId); },
async () =>
{
// 把"去往 dstId"翻译为 RFID 帧
await car.SendRfidGoCommand(dstId);
// 等车真的到了
while (car.rfidLastSeen != dstId) await Task.Delay(100);
},
async () => { Leave(srcId); });
}
}
public override async Task keepAlive()
{
var status = await ReadPLC(plcIp);
// 把 PLC 状态映射到 Car
UpdatePose(status.X, status.Y, status.Heading);
rfidLastSeen = status.LastRfid;
lastHeartbeat = DateTime.Now;
}
}
站点定位 / Site localisation
色带 / 磁条本身只能告诉车 横向偏差,不能告诉车 我在路径上哪一段。所以这类车必须沿路径布 RFID 标签作为站点:
- 每个分叉前后必有 RFID。
- 长直线段每 5–10 m 一个 RFID 用于精确位姿恢复。
- 终点 / 工位前 RFID 触发停车 / 入位逻辑。
Tape / strip only gives lateral offset. RFID tags along the path provide which site I'm at — one before/after each branch, one every 5–10 m on long straight, one at each terminal / work position.
与 MDCS 其它定位的混用 / Hybrid with other localisation
有些项目把色带 / 磁条导航 作为 SLAM 失败时的 fallback:平时跑 激光 SLAM,在已知劣化区段(如户外、强光、临时遮挡)切到磁条 fallback。技术上可行,但工程实现复杂(两套传感器、两套控制律、切换瞬间的姿态一致性);除非现场要求否则不推荐。
Some projects use tape / magstrip as a SLAM fallback on known-degraded segments. Technically feasible, engineering-complex (two sensors, two controllers, transition continuity). Avoid unless the deployment really demands it.
调试与维护 / Debug & maintenance
- 色带磨损 / Tape wear: 每 3–6 个月巡线一次,发现 ≥ 5 cm 连续缺失立即重贴。
- 磁条覆盖物 / Magstrip cover: 磁条要避免被金属覆盖(货叉车叉齿掉落 / 临时金属板)。
- RFID 标签丢失 / RFID loss: 每天上电后做一次 全路径轮询;任何标签失效立即报警。
- 传感器外参 / Sensor extrinsics: 磁导航传感器中心要对齐车体中线 ±5 mm;偏太多巡线会偏。
失败模式 / Failure modes
- 丢线 / Loss of tape: 车体应停 + 灯闪 + 报告 SimpleComposer。
- RFID 漏读 / RFID miss: 心跳里包含 last_rfid + age;调度可据此判断车是否仍在路径。
- 重定位 / Re-localise: 没有重定位概念 —— 失线后只能人工把车搬到任一 RFID 上。
相关页面 / See also
- 如何基于SimpleCore核心库进行调度系统开发
- 纯二维码导航 — 类似思路,地标改为二维码
- 巡线行走 — MDCS Clumsy 巡线(基于位姿,不依赖物理标记)