查看“双车/多车联动”的源代码
←
双车/多车联动
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
<languages/> {{Note|status=design|本页描述的是 MDCS 双车 / 多车联动的设计与目标 API。当前 SimpleCore 中仅实现了 `AbstractCar.haveCoordination` 占位字段,运动控制与车间通讯仍按本页设计待实施。This page documents the design and target API for twin- / multi-car coordination in MDCS. As of writing, only the `AbstractCar.haveCoordination` placeholder field exists in SimpleCore; the motion control and inter-car telemetry described below are still being implemented.}} == 概述 / Overview == 在重载、长货物或异构车队场景下,单台 AGV 无法独立完成搬运。MDCS 双车联动让两台或多台 AGV 在物理上协同抬升或装载同一件货物,同时在调度层把它们视为一个不可分割的执行单元。典型应用包括: * 重载贮箱 / 长板材搬运(两台 10 T 重载 AGV 头尾对接,浮动载货台承载货物) * 大型构件总装线(多台全向 AGV 抬升航空件、风电叶片等) * 异构联动(前车叉式取货 + 后车浮动平台跟随) * 设备跟随联动(AGV 跟随手推叉车、卷料车等非 AGV 设备) Two or more AGVs jointly carry a single payload when no single vehicle can. MDCS exposes coordination both as a low-level motion contract (rear-lidar pose tracking + AP heartbeat) and as a scheduling constraint (`haveCoordination` flag → an inseparable execution unit). Typical scenarios are heavy tanks/long sheets carried by paired 10 T omni-AGVs, large assembly components lifted by a swarm of forklifts, heterogeneous master/follower pairs, and AGVs shadowing manually-driven vehicles. == 系统组成 / System composition == === 重载双车联动参考方案 / Reference configuration: heavy-load twin-car === '''参数 / Parameters''': {| class="wikitable" ! 项 / Item !! 取值 / Value !! 说明 / Notes |- | 单车规格 / Per-vehicle spec || 10 T 全向重载 AGV / 10 t omni-directional heavy-load AGV || 差动舵或四舵 / steer-differential or quad-steer |- | 极限联动距离 / Max inter-car distance || ~20 m || 假设车长 2 m + 货物长 17 m / vehicle length 2 m + cargo length 17 m |- | 极限带载速度 / Max loaded speed || 0.6 m/s || 全程激光雷达避障开启 / lidar obstacle avoidance always on |- | 工况坡度 / Slope || ≤ 7° || 浮动载货台吸收俯仰差 / floating platform absorbs pitch |- | 操作模式 / Operating mode || 操作工遥控前车,后车自动跟随 / Operator drives leader; follower auto-tracks || 半自主,符合搬运安全规范 / semi-autonomous, complies with handling safety codes |} '''车尾传感器布局 / Tail sensor layout''': 两车车尾相对,每台车尾部安装一台水平观测激光雷达 + 一个 V 形特征槽。前车 V 形槽作为后车激光雷达的观测目标,宽高比小于 8(可凹可凸),目的是让 V 槽在 2D 激光点云中形成明显的角点特征,便于姿态解算。 Cars line up tail-to-tail. Each tail carries a 2D lidar plus a V-shaped feature groove (concave or convex, W/H < 8). The leader's groove gives the follower's lidar a strong corner feature for relative-pose estimation. '''激光雷达选型 / Lidar selection''' (依分辨率 D = L · tan(δ · π/180), L=20 m): {| class="wikitable" ! 型号 / Model !! 角分辨率 δ !! 20 m 处空间分辨率 D !! 适用 / Suitable |- | SICK LMS1xx || 0.25° || 87 mm || 满足载货台 ±100 mm 浮动量 |- | SICK LMS5xx || 0.167° || 58 mm || 推荐 / Recommended — 冗余更大 / better margin |} '''浮动载货台 / Floating cargo platform''': 为吸收联动误差与坡度,每台车配浮动载货台,浮动能力如下;货物锁定在载货台后由载货台与车体的浮动机构吸收变形: To absorb coordination error and slope-induced misalignment, each car carries a floating cargo platform with the following compliance. Cargo is locked to the platform; deformation is taken up by the platform-vehicle interface, not transmitted to the cargo. * X / Y 方向 / X-Y translation: ±100 mm * 绕 Z 轴旋转 / yaw: ±5° * 绕 Y 轴俯仰 / pitch: ±7° === 异构联动 / Heterogeneous coordination === 异构联动指两台车型不同(例如叉车 + 顶升车,或 ClumsyCar + 自评估磁导航车)的联动。常见模式: * '''主从模式 / Master-Slave''': 主车规划完整路径,从车跟随主车位姿(同上)。 * '''分工模式 / Specialization''': 一台车做取货动作(如叉车叉起一端),另一台做支撑(如顶升车顶住另一端)。两车按动作序列分别下发任务,调度层保证时序。 A heterogeneous pair couples different vehicle types (e.g. a forklift + a lift-AGV, or a ClumsyCar + a magnet-navigated self-evaluating car). Two common patterns: master/slave pose-following, and a specialization split where each car performs a distinct physical role and the scheduler enforces a temporal ordering. == 联动流程 / Coordination workflow == 重载双车联动的典型流程(操作工在环 / operator-in-the-loop): # 操作工遥控前车与后车到取货点。两车车尾相对,车间距与货物长度一致,车体中轴线对准。<br />Operator brings both cars to the pickup point, tail-to-tail, with spacing matching the cargo length and center-lines aligned. # 操作工在遥控手柄上启动 "联动 / Couple" 功能。<br />Operator presses "Couple" on the handheld remote. # 后车通过尾部激光雷达观测前车 V 槽,解算相对位姿,自动调整本车姿态,使后车中轴线与前车中轴线重合(车间距保持不变)。<br />Follower's tail lidar locks onto the leader's V-groove; the follower auto-aligns so its centerline matches the leader's, while preserving the inter-car distance. # 双车车灯切换颜色,提示联动已就绪。<br />Both vehicles' indicator lights change colour to signal "coupled". # 操作工引导吊装工把货物落到双车的浮动载货台上,并把货物锁定在载货台上。<br />Operator guides the rigging crew to lower the cargo onto the platforms and lock it. # 操作工遥控前车(前车此刻作为联动的"领头车")驶向终点。联动带载极限速度 0.6 m/s,全程激光雷达避障开启。<br />Operator drives the leader to the destination at ≤ 0.6 m/s; obstacle-avoidance lidars stay active on both vehicles. # 到达终点、吊装卸货完成后,操作工在手柄上结束联动。<br />After unloading at the destination, operator presses "Decouple" on the handheld remote. == 运动控制原理 / Motion-control principle == 浮动载货台允许吸收一定的横向、纵向与俯仰误差,且 AGV 本身相对货物较小,因此采用 '''后车观测前车 + 车间无刚性约束跟随''' 的策略,而不是用机械结构强制约束。 The floating platform absorbs a bounded coordination error, and each AGV is small relative to the cargo. We therefore use '''follower-tracks-leader without a rigid mechanical link''', rather than a physical drawbar / chain. The follower closes a feedback loop on: * 测量量 / Measured: 前车 V 槽在后车激光坐标系下的 (距离, 横偏, 夹角) / leader-groove pose in follower-lidar frame: (range, lateral offset, heading) * 期望量 / Target: 距离 = 联动启动时锁定的固定值;横偏 = 0;夹角 = 0 / range = locked initial value; lateral offset = 0; heading = 0 * 控制量 / Output: 后车差动舵或四舵的速度 + 转向角 / follower's steer-differential or quad-steer command 车间心跳与控制信号通过车载 AP(Wi-Fi)传输:每台车广播自己的 `(execTick, x, y, th, batteryOK, eStopOK)`,并订阅伙伴车的同一通道。任一通道断流超过阈值(默认 200 ms)即触发联动解体保护。 Inter-car heartbeat and command signals are exchanged via on-board Wi-Fi APs. Each vehicle broadcasts its own `(execTick, x, y, th, batteryOK, eStopOK)` and subscribes to its partner's identical channel. A 200 ms gap on either side triggers a coordinated graceful stop. '''角加速度约束 / Angular-acceleration bound''': 底盘的差动舵切换有响应滞后,为避免因突变指令导致路径偏移、进而把误差打到货物上,应在底盘运控层设置最大角加速度(建议 ≤ 0.25 rad/s²)。 The follower's differential steer wheel has a finite response time. A bounded angular-acceleration set-point (≤ 0.25 rad/s² is a reasonable default) keeps the path smooth and prevents error from being transferred to the cargo. == 调度集成 / Scheduling integration == SimpleCore 把联动车队视为一个不可分割的调度单元。已经埋下的钩子: * `[[Special:MyLanguage/AGV任务运行逻辑|AGV任务运行逻辑]]` 中的 `AbstractCar.haveCoordination` 字段(`D:\src\Simple\SimpleCore\PropType\AbstractCar.cs:57`)。设为 `true` 后,调度内核会把同 `haveCoordination` 分组的车辆作为整体寻路、整体上锁。 * `Car.actualSendScript()` 仍按单车下发 TopazScript,但脚本中含 `WaitPartner(carId)` 同步原语,保证两车动作时序对齐。 The scheduler treats a coordinated set as one unit. The currently-in-place hook is the `AbstractCar.haveCoordination` boolean field. Setting it on the relevant cars makes the scheduler co-pathfind and co-lock for the group. Mission scripts still dispatch per-car, but a `WaitPartner(carId)` primitive in the per-car TopazScript serialises across vehicles. === 目标 API / Target API === 设计中的(未实施)/ Designed (not yet implemented): <syntaxhighlight lang="csharp"> // In SimpleCore — group cars into a coordination set var pair = new CoordinatedSet { Leader = carA, Followers = new[]{ carB } }; pair.LockingPolicy = LockingPolicy.AsUnit; // lock route segments for the whole group pair.MotionPolicy = MotionPolicy.LeaderFollows; // followers track leader via rear lidar // In a mission script (TopazScript) agv.AcquireCoordination(partner="CarB", role="Leader"); agv.Go(srcX, srcY, srcid, dstX, dstY, dstid, speed: 600); agv.WaitPartner("CarB"); agv.ReleaseCoordination(); </syntaxhighlight> == 当前实现状态 / Implementation status == {| class="wikitable" ! 模块 / Module !! 状态 / Status !! 文件 / File |- | `AbstractCar.haveCoordination` 字段 / flag || ✅ 已实施 / Implemented || `Simple\SimpleCore\PropType\AbstractCar.cs:57` |- | 调度整体寻路 / Group pathfinding || 🚧 设计中 / Designed || (计划在 SimpleCore 调度内核扩展 / pending SimpleCore extension) |- | `CoordinatedSet` 数据结构 || 🚧 设计中 / Designed || — |- | `WaitPartner(carId)` TopazScript 原语 || 🚧 设计中 / Designed || — |- | 后车 V 槽位姿解算 / Follower V-groove pose solver || 🚧 设计中 / Designed || 计划放入 Clumsy MovementDefinition / planned as a Clumsy Movement |- | 车间 AP 心跳通道 / Inter-car AP heartbeat || 🚧 设计中 / Designed || 复用 Medulla DObject 跨网/多机扩展 / extends Medulla DObject for inter-vehicle pub/sub |- | 浮动载货台机械方案 / Floating-platform mechanical design || 📐 已规范 / Specified || `D:\src\cookbook\双车联动技术方案.pdf` §2.3 |} == 参考 / References == * 技术方案文档 / Design spec: `D:\src\cookbook\双车联动技术方案.pdf` (4 pages, §2.1–§2.5) * `[[Special:MyLanguage/调度内核运行原理|调度内核运行原理]]` — 调度内核如何把车组当作整体决策的算法基础。 * `[[Special:MyLanguage/DPS调度算法详解|DPS调度算法详解]]` — DPS 算法的多车死锁检测可作为联动组的前提。 * `[[Special:MyLanguage/AGV任务运行逻辑|AGV任务运行逻辑]]` — 任务下发流程,联动组扩展将复用同一通路。 == 相关页面 / See also == * `[[Special:MyLanguage/设备跟随联动|设备跟随联动]]` — AGV 跟随非 AGV 设备(手推叉车、卷料车等)。 * `[[Special:MyLanguage/联动天眼系统进行装卸车|联动天眼系统进行装卸车]]` — 多车联动 + 视觉天眼的装卸车应用。 [[Category:特殊技术方案]] [[Category:开发手册]]
本页使用的模板:
模板:Note
(
查看源代码
)
返回
双车/多车联动
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息