复合卷料机械手叉车
概述 / Overview
"复合卷料机械手叉车"是 MDCS 中的复合机器人形态:把 叉车+机械手+卷料专用夹具组合在一台 AGV 上,实现卷料(钢卷、纸卷、塑料卷、布卷等)的自动取放与上下料。它是 叉车适配 + 卷料夹具适配 + 机械手协同的综合案例。
The "composite coil-handling robotic forklift" combines forklift + robotic arm + coil-specific gripper on one AGV to autonomously handle coils (steel, paper, plastic, fabric, …). It's the composite of forklift adaptation + coil-gripper adaptation + manipulator coordination.
业务场景 / Business scenarios
- 钢卷仓库 / Steel-coil yard: 单卷重 5–25 t,堆叠 3–5 层
- 造纸 / 卷烟生产线 / Paper / cigarette lines: 中等卷重,节拍紧
- 汽车冲压线 / Auto stamping: 卷料上料 + 废料下料
- 纺织 / Textile: 布卷搬运 + 上下料
硬件组成 / Hardware
| 部件 / Part | 规格 / Spec |
|---|---|
| 底盘 / Chassis | 重载叉车 / 牵引车 / heavy-load forklift or tractor |
| 机械手 / Arm | 6-DoF 工业臂或 SCARA / 6-DoF or SCARA |
| 卷料夹具 / Coil gripper | V 形托架 + 夹紧机构 / V-cradle + clamp; 或 C 形钩 / C-hook |
| 视觉 / Vision | 3D 相机扫卷端面识别中心 + 直径 / 3D camera for coil-end ID |
| 激光雷达 / Lidar | 前向 + 侧向(多激光融合) |
| 负载传感 / Load sensor | 称重模块;溢出阈值即报警 |
机械手的关注点:足够长以触到地面卷 + 提到货架;足够强以拿动单卷重量;末端夹具与卷料 V 形配合好。 Key arm requirements: long enough to reach a floor coil and lift to rack, strong enough for single-coil weight, end-effector matches the V-cradle profile.
1. Medulla 适配 / Medulla side
比标准叉车多了机械手 + 卷料夹具的 IO: On top of a standard forklift, add IO for the arm + the coil-specific gripper:
public class CoilFork : CartDefinition
{
// 底盘 IO(同 LB14 forklift)/ Chassis IO same as a regular forklift...
// 机械手 IO / Arm IO
[AsUpperIO] public float[] armJointTgt = new float[6];
[AsUpperIO] public bool gripperClose;
[AsLowerIO] public float[] armJointEst = new float[6];
[AsLowerIO] public bool gripperClosed;
[AsLowerIO] public float coilWeight;
// 卷料夹具 IO / Coil gripper IO
[AsUpperIO] public bool vCradleLift; // V 托架升起
[AsUpperIO] public bool clampOn; // 夹紧
[AsLowerIO] public bool clampForceOK; // 夹紧力到位
[AsLowerIO] public bool coilDetected; // 卷在槽内
[AsInitParam] public string armConfig = "armconfigs/UR10.json";
}
2. Clumsy 自动驾驶适配 / Clumsy side
卷料场景多了几个特定 Movement: A few coil-specific Movements:
- `CoilApproach` — 用 3D 相机识别卷端面,AGV 居中对位
- `CoilPickWithArm` — 机械手放 V 托架 → 卷滚入托架 → 升起 → 夹紧
- `CoilPlaceOnRack` — 把卷放到 V 形支架 (rack saddle)
- `CoilDestackFromGround` — 地面堆叠的卷分层取下
public void PickCoilFromGround(double sx, double sy, int srcId)
{
Queue(
async () => DriveTask.WaitDriveTask(new SteeringLineFollowing
{ srcX = currentX, srcY = currentY,
dstX = sx, dstY = sy, basespeed = 400 }.Follow()),
async () =>
{
// 3D 相机识别卷
DriveTask.WaitDriveTask(new CoilApproach
{ stopDist = 600, coilDiamMax = 1500 }.Get());
},
async () =>
{
// 机械手伸出 + V 托架放到卷下
await MoveArmTo(grabPose);
SetUpperIO("vCradleLift", false);
await Task.Delay(500);
DriveTask.WaitDriveTask(new ForwardTracker
{ dstAhead = 800, basespeed = 100 }.Get()); // 微推让卷滚入托架
},
async () =>
{
SetUpperIO("vCradleLift", true);
await WaitForLowerIO("coilDetected", 4000);
SetUpperIO("clampOn", true);
await WaitForLowerIO("clampForceOK", 3000);
});
}
3. SimpleComposer 端 / SimpleComposer side
- 带卷包络 / Loaded envelope: 卷直径影响 车体外缘,必须声明对应大包络。
- 可达性约束 / Reachability: 持卷在低净高区段降速 + 禁止某些急转。
- 机械手姿态约束 / Arm pose: 行驶时机械手必须收回到 行驶姿态;离开取放工位前不允许行驶。
- The carrying envelope expands with coil diameter; declare an alternate envelope.
- Reachability prohibits sharp turns + low-clearance corridors when carrying.
- Arm pose must be 'stow' before driving; refuse motion otherwise.
4. 安全 / Safety
- 卷脱落自动停车 / Coil-drop auto-stop: `coilDetected` 在搬运中突然为 false → e-stop。
- 机械手碰撞监测 / Arm collision: 关节力矩 > 阈值 → e-stop。
- 负载超限 / Overload: 单卷 > 设计载重 → 拒绝取。
- 人员靠近 / Personnel proximity: 工作半径内 1.5 m 任何动态物体 → e-stop。
5. 节拍 / Throughput
单卷搬运参考节拍: Per-coil cycle:
| 阶段 / Stage | 时间 / Time |
|---|---|
| 巡线到取卷工位 / Travel to source | 30–60 s |
| 3D 视觉识别 + 对位 / 3D recognition | 5–10 s |
| 机械手取卷 / Arm pickup | 15–25 s |
| 巡线到目标工位 / Travel to dest. | 30–60 s |
| 机械手放卷 / Arm place | 15–25 s |
| 离开 / Withdraw | 10–15 s |
| 单次总节拍 / Per-coil total | 1.5–3 min |