<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki2.lessokaji.com/index.php?action=history&amp;feed=atom&amp;title=%E8%89%B2%E5%B8%A6%E5%92%8C%E7%A3%81%E6%9D%A1%E5%AF%BC%E8%88%AA</id>
	<title>色带和磁条导航 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki2.lessokaji.com/index.php?action=history&amp;feed=atom&amp;title=%E8%89%B2%E5%B8%A6%E5%92%8C%E7%A3%81%E6%9D%A1%E5%AF%BC%E8%88%AA"/>
	<link rel="alternate" type="text/html" href="https://wiki2.lessokaji.com/index.php?title=%E8%89%B2%E5%B8%A6%E5%92%8C%E7%A3%81%E6%9D%A1%E5%AF%BC%E8%88%AA&amp;action=history"/>
	<updated>2026-05-16T15:06:32Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki2.lessokaji.com/index.php?title=%E8%89%B2%E5%B8%A6%E5%92%8C%E7%A3%81%E6%9D%A1%E5%AF%BC%E8%88%AA&amp;diff=1012&amp;oldid=prev</id>
		<title>Artheru：​Initial bilingual draft (auto-published)</title>
		<link rel="alternate" type="text/html" href="https://wiki2.lessokaji.com/index.php?title=%E8%89%B2%E5%B8%A6%E5%92%8C%E7%A3%81%E6%9D%A1%E5%AF%BC%E8%88%AA&amp;diff=1012&amp;oldid=prev"/>
		<updated>2026-05-16T11:26:57Z</updated>

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