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):在运行中调整agvToFirstDistance或objectSpacing。常用于车辆需临时变更间距的场景。removePullObjects(agvName)/clearAllPullRelations():在任务结束或场景重置时清理关系,避免旧配置残留。
最佳实践
- 路径采样:曲线路径应包含足够的中间点,确保运动平滑。可先在编辑器里使用曲线工具调试。
- 速度匹配:
taskTime应大于物理路线的最短时间,否则可能出现加速度过大。 - 组合使用:当同一 AGV 需要在直线段使用
agvBoxManager的功能、在曲线段使用agvCurePathManager,请在切换前清除旧关系再建立新关系。
常见问题
| 情况 | 处理方式 |
|---|---|
| 拖拽物体抖动 | 提高 taskTime 延长动作时间,或减少曲线弯曲程度。 |
| 终点停靠不准 | 确认路径最后一个点与停靠点一致,必要时添加过渡点并使用 updatePullDistances 微调。 |
| 多车冲突 | 在启动前检查是否已有其它任务锁定同一路径,建议配置排程脚本。 |
灵活运用该管理器可体现 AGV 在复杂路径上的跟随效果,尤其适用于展示类项目。