查看“自动识别托盘取放货”的源代码
←
自动识别托盘取放货
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
<languages/> == 概述 / Overview == "自动识别托盘取放货"是 [[Special:MyLanguage/自动识别工位并取放货|自动识别工位并取放货]] 的特例:工位本身是一个独立的托盘(pallet)而非固定货架,车体到位后通过激光雷达识别托盘的 ''两个插孔''(叉车场景)或 ''两个边缘特征''(顶升 / 平板场景),完成对位 + 升降 + 离场。 "Auto-pallet pick & place" specialises [[Special:MyLanguage/自动识别工位并取放货|station-aware pick & place]] to pallets. The "station" is the pallet itself, not a fixed rack. Once the vehicle is roughly in front, the lidar locates the pallet's '''two fork-pockets''' (forklifts) or its '''two side edges''' (lift / flat-bed vehicles), then the car runs the alignment / lift / withdraw sequence. == 与货架取放的差异 / Difference from rack pick == {| class="wikitable" ! 项 / Item !! 货架(KIVA 类)/ Rack (KIVA) !! 托盘 / Pallet |- | 特征点 / Features || 4 条立腿 / 4 legs || 2 个叉孔或 2 条边 / 2 fork pockets or 2 edges |- | 进入方向 / Entry side || 任意(钻入式)/ any (slide-under) || 固定一侧(短边)/ fixed short edge |- | 升降高度 / Lift travel || 30–80 mm(顶升)/ 30–80 mm (jack) || 100–1800 mm(叉齿)/ 100–1800 mm (forks) |- | 误差容忍 / Tolerance || ±30 mm / ±2° || ±15 mm / ±1.5°(叉孔机械约束) |- | 主用 Movement || `AutoShelfFetching_ManyLegs` || `AutoFetchGood`, `PutGood` |- | 主用 Detector || `LidarDetectTray` (3-腿) / 4-腿 || `LidarDetectPallet`, `LidarBlobPairDetector` |} 托盘场景对车体姿态的容忍度比货架低,因为叉齿与叉孔的机械配合余量只有 10–15 mm;调试时务必先用 [[Special:MyLanguage/标定与校准|标定与校准]] 把外参打齐。 Pallet pickup tolerates less pose error than rack pickup because the fork-pocket/fork-tine clearance is only 10–15 mm. Always level the lidar and verify extrinsics via [[Special:MyLanguage/标定与校准|the calibration guide]] before tuning. == 工作流程 / Pipeline == # '''粗对位 / Coarse approach''': SimpleComposer 把 AGV 派到托盘前的 ''anchor 站点'',使用普通巡线 / 路径跟踪。<br />SimpleComposer dispatches the AGV to the anchor site in front of the pallet; ordinary line / path follow. # '''粗检测 / Coarse detect''': 启动 `LidarDetectPallet`,从前方激光帧中找出托盘的两个特征(叉孔中心 or 边缘中点)的近似位置。<br />Start `LidarDetectPallet` to extract approximate centers of the two pallet features from one or two lidar frames. # '''精对位跟踪 / Fine alignment''': 用检测出的两个点拟合托盘中轴线,`AutoFetchGood`(或 `PutGood`)开启跟踪,逼近期望停靠位姿。<br />Fit the pallet's midline from the two feature points; `AutoFetchGood` (or `PutGood`) opens a tracking thread to drive toward the docking pose. # '''升降 / Lift''': 到位后通过 `[[Special:MyLanguage/Medulla-API|Medulla 上位 IO]]` 触发叉齿 / 顶升机构动作。<br />On dock, fire the fork / jack actuator through Medulla upper-IO. # '''离场 / Withdraw''': 倒车(叉车)或推车前进(顶升)退出托盘正前方区域。<br />Reverse out (forklift) or roll forward (jack) to clear. <syntaxhighlight lang="csharp"> public void PickPallet(double approachX, double approachY, double palletX, double palletY) { Queue( async () => { // 1. Coarse approach DriveTask.WaitDriveTask(new SteeringLineFollowing { srcX = currentX, srcY = currentY, dstX = approachX, dstY = approachY, basespeed = 800 }.Follow()); }, async () => { // 2 + 3. Detect + fine alignment (encapsulated in AutoFetchGood) DriveTask.WaitDriveTask(new AutoFetchGood { aX = approachX, aY = approachY, bX = palletX, bY = palletY, initSpeed = 500, inShelfSpeed= 150, stopDist = 80, // tight: pocket / tine clearance width = 800 // pallet pocket span }.Get()); }, async () => { // 4. Lift via Medulla upper-IO (fork at 200 mm) MedullaAPI.SetUpperIO("forkHeight", 200); await WaitForUpperIO("forkAtTarget", timeoutMs: 5000); }, async () => { // 5. Withdraw 1.5 m DriveTask.WaitDriveTask(new SteeringLineFollowingReverse { srcX = palletX, srcY = palletY, dstX = approachX, dstY = approachY, basespeed = 400 }.ReverseFollow()); }); } </syntaxhighlight> == 调试要点 / Tuning == * '''叉孔检测假阳性 / False positive on fork pockets''': 缩窄 `LidarDetectPallet.widthMin/widthMax` 区间至 ±50 mm。 * '''托盘姿态偏 / Pallet pose drift''': 检查激光雷达水平度,重做 [[Special:MyLanguage/标定激光雷达外参|外参标定]]。 * '''叉齿与叉孔刮擦 / Tines scrape pocket walls''': 适当增大 `stopDist`(保留 20–30 mm 余量),或把 `inShelfSpeed` 降到 100 mm/s。 * '''码垛环境光斑干扰 / Beam glints in stacking yards''': 给托盘正面贴一段宽 50 mm 的吸光胶带可显著改善。 == 相关页面 / See also == * [[Special:MyLanguage/自动识别工位并取放货|自动识别工位并取放货]] * [[Special:MyLanguage/托盘识别|托盘识别]] — 检测器的纯算法细节 * [[Special:MyLanguage/使用叉车自动取托盘功能|使用叉车自动取托盘功能]] — 终端使用手册视角 * [[Special:MyLanguage/识别料框并堆垛拆垛|识别料框并堆垛拆垛]] [[Category:运动控制使用手册]]
返回
自动识别托盘取放货
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息