<?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%87%AA%E5%8A%A8%E8%AF%86%E5%88%AB%E5%B7%A5%E4%BD%8D%E5%B9%B6%E5%8F%96%E6%94%BE%E8%B4%A7</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%87%AA%E5%8A%A8%E8%AF%86%E5%88%AB%E5%B7%A5%E4%BD%8D%E5%B9%B6%E5%8F%96%E6%94%BE%E8%B4%A7"/>
	<link rel="alternate" type="text/html" href="https://wiki2.lessokaji.com/index.php?title=%E8%87%AA%E5%8A%A8%E8%AF%86%E5%88%AB%E5%B7%A5%E4%BD%8D%E5%B9%B6%E5%8F%96%E6%94%BE%E8%B4%A7&amp;action=history"/>
	<updated>2026-05-16T15:01:32Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki2.lessokaji.com/index.php?title=%E8%87%AA%E5%8A%A8%E8%AF%86%E5%88%AB%E5%B7%A5%E4%BD%8D%E5%B9%B6%E5%8F%96%E6%94%BE%E8%B4%A7&amp;diff=1001&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%87%AA%E5%8A%A8%E8%AF%86%E5%88%AB%E5%B7%A5%E4%BD%8D%E5%B9%B6%E5%8F%96%E6%94%BE%E8%B4%A7&amp;diff=1001&amp;oldid=prev"/>
		<updated>2026-05-16T11:15:20Z</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;
== 概述 / Overview ==&lt;br /&gt;
&amp;quot;自动识别工位并取放货&amp;quot;指 AGV 行驶到工位附近后，使用激光雷达自动识别工位（料架、托盘、卷料、料框、机台口等）的精确位姿，然后调整车体姿态并完成取放货动作。整个过程不依赖工位上的固定二维码 / 反光板 / 磁条，而是直接从工位本身的几何特征反推位姿，因此对工位精度、地面平整度、初始停靠精度的容忍度大幅提升。&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Auto station-aware pick &amp;amp; place&amp;quot; lets an AGV detect the exact pose of a workstation (rack, pallet, coil, kit-bin, machine port, …) from its 2D-lidar geometry once the car is roughly in front of it, then auto-trim its own pose and complete the pick/place motion. No fiducial (QR / reflector / magnetic strip) is required, so tolerance to placement error and floor irregularity is far better than dead-reckoning approaches.&lt;br /&gt;
&lt;br /&gt;
== 适用场景 / Scenarios ==&lt;br /&gt;
* 潜伏顶升车（KIVA 类）从料架下方钻入，自动对齐货架四脚 / Lift-AGV slides under a 4-legged rack and auto-aligns.&lt;br /&gt;
* 叉车 / 拖车 取放料架、托盘 / Forklift or tractor handling racks and pallets.&lt;br /&gt;
* 重载平板车 在工位口对接（如机台进出料口）/ Heavy flat-bed AGV docking at a machine's I/O port.&lt;br /&gt;
* 异型工位（如卷料 V 型托架、料筐侧立位）/ Irregular stations such as V-cradles for coils or upright kit-bins.&lt;br /&gt;
&lt;br /&gt;
== 工作原理 / Principle ==&lt;br /&gt;
工位识别共用一套 ''检测 → 跟踪 → 终止'' 的流水线，差异在于检测器（detector）和跟踪器（tracker）的选型。MDCS 在 Clumsy 中以 `MovementDefinition` 的形式封装：&lt;br /&gt;
&lt;br /&gt;
The station-identification pipeline is uniform: ''detect → track → stop''. Only the detector and tracker components differ between station types. In Clumsy each variant is packaged as a `MovementDefinition` subclass.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 阶段 / Stage !! 任务 / Task !! 关键类 / Key class&lt;br /&gt;
|-&lt;br /&gt;
| 检测 / Detect || 从激光点云中找出工位特征点 / pull station features from the cloud || `LidarDetectTray`, `Lidar2dDetect3LegTray`, `LidarBlobPairDetector`, `LidarDetectPallet`&lt;br /&gt;
|-&lt;br /&gt;
| 跟踪 / Track || 用工位特征点驱动差动 / 全向轮，逼近期望停靠位姿 / drive wheels toward the target docking pose using the detector output || `SlotFollowing`, `SteeringLineFollowing`, `ForwardTracker`&lt;br /&gt;
|-&lt;br /&gt;
| 终止 / Stop || 到达 stopDist 或 inshelfMillis 后停车、释放跟踪线程 / stop on `stopDist` or `inshelfMillis`, release thread || `DriveTask.WaitDriveTask`&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
具体的 MovementDefinition 在 `D:\src\Clumsy\ClumsyDance\ClumsyDance\Movements\` 下，常用例如：&lt;br /&gt;
The actual MovementDefinitions live under `D:\src\Clumsy\ClumsyDance\ClumsyDance\Movements\`. Representatives:&lt;br /&gt;
&lt;br /&gt;
* `AutoShelfFetching_ManyLegs` — 多腿料架（≥ 2 对腿）的循序对齐 / multi-leg rack with two or more leg pairs&lt;br /&gt;
* `AutoShelfFetching_3Legs` — 三腿料架（V/T 形托架）/ three-leg rack (V / T shaped cradle)&lt;br /&gt;
* `AutoFetchGood` / `PutGood` — 通用取 / 放的高层调用 / generic high-level pick / place&lt;br /&gt;
&lt;br /&gt;
== 使用方法 / Usage ==&lt;br /&gt;
任务编写者（Clumsy 任务 / SimpleComposer 业务脚本）按以下方式调用，参数从工位 CAD 配置或 Detour 站点中获取：&lt;br /&gt;
&lt;br /&gt;
Mission authors (Clumsy job, SimpleComposer scenario script) invoke it as follows, with parameters drawn from the station's CAD record or the Detour site.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// In a Clumsy AGV method that derives from SimpleAgvInterface&lt;br /&gt;
public void FetchAtStation(double srcX, double srcY, int siteId)&lt;br /&gt;
{&lt;br /&gt;
    Queue(async () =&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        // 1. Drive to the front of the station using a coarse line follow&lt;br /&gt;
        DriveTask.WaitDriveTask(new SteeringLineFollowing&lt;br /&gt;
        {&lt;br /&gt;
            srcX = currentX, srcY = currentY,&lt;br /&gt;
            dstX = srcX,     dstY = srcY,&lt;br /&gt;
            basespeed = 600&lt;br /&gt;
        }.Follow());&lt;br /&gt;
&lt;br /&gt;
        // 2. Run the station-aware fetch&lt;br /&gt;
        DriveTask.WaitDriveTask(new AutoFetchGood&lt;br /&gt;
        {&lt;br /&gt;
            aX = srcX, aY = srcY,        // approach anchor&lt;br /&gt;
            bX = dstX, bY = dstY,        // pickup anchor&lt;br /&gt;
            initSpeed   = 600,           // 6 mm tick&lt;br /&gt;
            inShelfSpeed= 200,&lt;br /&gt;
            stopDist    = 400,&lt;br /&gt;
            width       = 1150,          // leg-pair span&lt;br /&gt;
            startingSlot= 10&lt;br /&gt;
        }.Get());&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
工位的关键参数（腿距、入位深度、对齐速度）通常存在 CAD 配置中，由 [[Special:MyLanguage/开发手册 - SimpleComposer界面开发 - CAD工具|CAD工具]] 编辑生成。运行时 SimpleComposer 把这些参数注入到对应的 MovementDefinition 字段。&lt;br /&gt;
&lt;br /&gt;
Per-station geometry (leg span, entry depth, alignment speed) is normally maintained in the CAD layer via the SimpleComposer CAD tool. SimpleComposer injects them into the MovementDefinition fields at runtime.&lt;br /&gt;
&lt;br /&gt;
== 调试要点 / Tuning tips ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 参数 / Param !! 建议值 / Default !! 含义 / Meaning&lt;br /&gt;
|-&lt;br /&gt;
| `initSpeed` || 600 mm/s || 进入识别阶段前的逼近速度 / approach speed before detection&lt;br /&gt;
|-&lt;br /&gt;
| `inShelfSpeed` || 200 mm/s || 进入工位后的精细对位速度 / fine alignment speed inside the station&lt;br /&gt;
|-&lt;br /&gt;
| `stopDist` || 400 mm || 距腿距离剩余多少时停止 / distance to legs at stop&lt;br /&gt;
|-&lt;br /&gt;
| `width` || 工位实测腿距 / measured leg span || 检测器用此值过滤伪检测 / detector rejects pairs outside this width&lt;br /&gt;
|-&lt;br /&gt;
| `lookahead` || 500 mm || 跟踪器纯跟踪前瞻 / pure-pursuit look-ahead&lt;br /&gt;
|-&lt;br /&gt;
| `resolution` || 40–50 mm || 点云聚类粒度 / cloud-clustering bin&lt;br /&gt;
|-&lt;br /&gt;
| `slots` || 30 || 跟踪槽数（即沿 Y 方向离散化的格数）/ track-slot count&lt;br /&gt;
|-&lt;br /&gt;
| `dfac` || 10 || 距离衰减因子（越大越保守）/ distance weight (higher = more conservative)&lt;br /&gt;
|-&lt;br /&gt;
| `inshelfMillis` || 1000 || 进入工位后跟踪超时 / in-station tracking timeout (ms)&lt;br /&gt;
|-&lt;br /&gt;
| `deaccMillis` || 500 || 收尾减速时间 / final deceleration time (ms)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''排错清单 / Troubleshooting''':&lt;br /&gt;
* 检测器拿不到腿 → 调大 `LidarDetectTray.blobDist`，或检查激光雷达水平度。&lt;br /&gt;
* Detector misses legs → bump `LidarDetectTray.blobDist`, or check lidar horizontality.&lt;br /&gt;
* 入位后车体抖动 → 减小 `dfac` 或增大 `inshelfMillis`。&lt;br /&gt;
* Vehicle oscillates inside → reduce `dfac` or increase `inshelfMillis`.&lt;br /&gt;
* 完成姿态偏差大 → 用 `[[Special:MyLanguage/使用手册 - 双雷达标定手册|双雷达标定]]` 核对外参。&lt;br /&gt;
* Large terminal pose error → re-calibrate via the dual-lidar guide.&lt;br /&gt;
&lt;br /&gt;
== 相关页面 / See also ==&lt;br /&gt;
* [[Special:MyLanguage/使用叉车自动取托盘功能|使用叉车自动取托盘功能]]&lt;br /&gt;
* [[Special:MyLanguage/自动识别托盘取放货|自动识别托盘取放货]]&lt;br /&gt;
* [[Special:MyLanguage/托盘识别|托盘识别]]&lt;br /&gt;
* [[Special:MyLanguage/使用自动对准料架功能|使用自动对准料架功能]]&lt;br /&gt;
* [[Special:MyLanguage/使用叉车料架堆叠功能|使用叉车料架堆叠功能]]&lt;br /&gt;
&lt;br /&gt;
[[Category:运动控制使用手册]]&lt;/div&gt;</summary>
		<author><name>Artheru</name></author>
	</entry>
</feed>