跳到主要内容

AGV曲线拖拽

AGVCurePathScriptBoxManager(脚本变量 agvCurePathManager)在需要沿曲线路径拖拽物体时使用,例如智能搬运、蛇形车队。它能在 AGV 移动过程中维持跟随对象的距离与排布。

建立拖拽关系

setPullObjects(
agvName: string,
followerNames: string[],
config?: {
agvToFirstDistance?: number;
objectSpacing?: number;
arrangeMode?: 'line' | 'custom';
}
): { success: boolean; error?: string };
  • agvToFirstDistance:AGV 与第一个物体的距离(米)。默认 1.2,可根据车身长度调整。
  • objectSpacing:跟随对象间距。对于长物体建议 1.5 以上。
  • arrangeMode
    • 'line':默认线性排列。
    • 'custom':配合 objectSpacing 数组使用,可打造不等距编排。

还可以一次性设置多个拖拽关系:

setBatchPullRelations([
{
agv: 'AGV_A',
followers: ['TRAY_01', 'TRAY_02'],
config: {agvToFirstDistance: 0.9},
},
{
agv: 'AGV_B',
followers: ['PALLET_A'],
},
]);

路径执行

startCurePathWithPull(
agvName: string,
route: string[],
taskTime: number,
options?: Record<string, unknown>
): Promise<{ success: boolean; error?: string }>;
  • route:路径点名称数组,必须已在场景中配置并形成曲线段。
  • taskTime:任务总时长(秒),脚本会根据长度自动计算速度。
  • options:额外透传给底层动画任务,例如 { easing: 'easeInOutSine' }

调用示例:

await agvCurePathManager.startCurePathWithPull(
'AGV_A',
['POINT_START', 'POINT_CURVE_1', 'POINT_CURVE_2', 'POINT_END'],
18,
{easing: 'easeInOutQuad'},
);

动态调整

  • updatePullDistances(agvName, distanceConfig):在运行中调整 agvToFirstDistanceobjectSpacing。常用于车辆需临时变更间距的场景。
  • removePullObjects(agvName) / clearAllPullRelations():在任务结束或场景重置时清理关系,避免旧配置残留。

最佳实践

  1. 路径采样:曲线路径应包含足够的中间点,确保运动平滑。可先在编辑器里使用曲线工具调试。
  2. 速度匹配taskTime 应大于物理路线的最短时间,否则可能出现加速度过大。
  3. 组合使用:当同一 AGV 需要在直线段使用 agvBoxManager 的功能、在曲线段使用 agvCurePathManager,请在切换前清除旧关系再建立新关系。

常见问题

情况处理方式
拖拽物体抖动提高 taskTime 延长动作时间,或减少曲线弯曲程度。
终点停靠不准确认路径最后一个点与停靠点一致,必要时添加过渡点并使用 updatePullDistances 微调。
多车冲突在启动前检查是否已有其它任务锁定同一路径,建议配置排程脚本。

灵活运用该管理器可体现 AGV 在复杂路径上的跟随效果,尤其适用于展示类项目。