You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AGV运输是否会被Agent或行人阻挡?AnyLogic仿真场景技术问询

AnyLogic自定义行人Agent的AGV障碍物识别实现方案

AnyLogic自带的Material Handling库AGV模块默认仅将路径上的其他转运设备、预设路径阻断器识别为障碍物,自定义的行人Agent不会被自动纳入检测范围,可通过以下三种方法实现需求:

方法1:周期距离检测实现主动避让

  • 给自定义行人Agent设置碰撞半径参数(推荐值0.3m),AGV也同步配置自身碰撞半径和默认行驶速度参数
  • 在AGV内部新增周期触发事件,触发间隔设置为0.1~0.5s(可根据仿真精度需求调整),事件内执行以下逻辑:
    1. 遍历场景内所有行人Agent,计算AGV与每个行人的直线距离
    2. 同时判断行人是否处于AGV行驶前方的扇形检测区域(推荐前后夹角120度),排除后方行人避免误触发
    3. 当距离小于「AGV碰撞半径+行人碰撞半径+安全冗余距离」阈值时,调用setSpeed()方法降低行驶速度或直接停车,距离超出阈值后恢复正常行驶速度
  • 参考代码示例:
// 假设行人种群存储在Main的pedestrians集合中
double safeThreshold = agvCollisionRadius + pedCollisionRadius + 0.2;
for (PedAgent ped : main.pedestrians) {
    double dist = distanceTo(ped);
    double angleGap = Math.abs(angleTo(ped) - getRotation());
    angleGap = angleGap > Math.PI ? 2*Math.PI - angleGap : angleGap;
    // 检测前方60度范围+安全距离
    if (dist < safeThreshold && angleGap < Math.toRadians(60)) {
        setSpeed(0);
        return;
    }
}
setSpeed(defaultAgvSpeed);

方法2:绑定动态路径阻断器适配原生调度

  • 预先在AGV行驶路径网络上部署足够数量的隐藏PathStop元件,初始状态设置为未激活
  • 给行人Agent添加位置检测逻辑,实时判断自身当前坐标是否落在任意AGV行驶路径范围内:
    1. 当行人进入路径范围时,激活距离最近的PathStop,并将其绑定到行人所在的路径点位
    2. 当行人离开路径范围后,立即取消对应PathStop的激活状态
  • 该方案无需修改AGV原生行驶逻辑,AGV会将激活的PathStop识别为常规障碍物,自动执行停车、避让操作,适配平台自带的AGV调度规则。

方法3:启用原生自定义碰撞检测

适用于AnyLogic 8.7及以上版本:

  • 选中AGV对应的Transporter元件,在属性面板找到「碰撞检测」配置项
  • 勾选「自定义障碍物检测」,在判断表达式中添加自定义行人Agent的检测规则,表达式返回true时系统即判定为障碍物
  • 该方法直接调用平台原生碰撞检测管线,性能优于手动编写的周期事件,且无需额外配置其他元件。

内容的提问来源于stack exchange,提问作者Aron T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:15:04