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

基于Road Transport Library的车辆排队停车次数统计方法咨询

基于Road Transport Library统计车辆停车次数的正确实现方法

你的初始思路方向没问题,但直接在速度为0时递增计数会导致重复统计(比如车辆持续停车时每仿真步都加1),核心要区分首次进入停车状态和持续停车,下面是具体实现步骤:

1. 车辆代理内添加必要变量

在车辆代理的参数/变量面板里新增以下变量:

  • boolean isStopped:默认值false,记录车辆上一时刻是否处于停车状态
  • int stopCount:默认值0,记录该车辆的累计停车次数
  • (可选)double stopStartTime:记录车辆开始停车的时间,用于过滤短暂停顿

2. 编写停车状态判断逻辑

在车辆的每步更新行为(比如onTick()或Road Transport Library提供的车辆更新回调)中添加以下逻辑:

// 获取当前车辆速度(根据RTL的API调整,通常是getSpeed())
double currentSpeed = getSpeed();

// 基础版:仅判断速度是否为0,区分首次停车
if (currentSpeed <= 0) {
    if (!isStopped) {
        // 刚进入停车状态,计数+1
        stopCount++;
        isStopped = true;
    }
} else {
    // 车辆启动,重置停车状态
    isStopped = false;
}

// 进阶版:过滤短暂停顿(比如停车超过1秒才计数)
/*
if (currentSpeed <= 0) {
    if (!isStopped) {
        // 记录停车开始时间
        stopStartTime = getTime();
        isStopped = true;
        hasCountedThisStop = false;
    } else {
        // 检查停车时长是否超过阈值(比如1秒)
        if (getTime() - stopStartTime >= 1 && !hasCountedThisStop) {
            stopCount++;
            hasCountedThisStop = true;
        }
    }
} else {
    isStopped = false;
    hasCountedThisStop = false;
}
*/

3. 全局统计队列停车次数

如果需要统计整个路口队列的总停车次数:

  • 在主代理(或路口代理)中新增全局变量int totalQueueStopCount = 0
  • 修改车辆内的计数逻辑,每当stopCount递增时,同步执行mainAgent.totalQueueStopCount++

4. 注意事项

  • 速度判断建议用<= 0.1而非严格等于0,避免浮点精度误差导致的误判
  • 若使用进阶版的时长过滤,需新增boolean hasCountedThisStop变量来避免同一停车事件重复计数
  • 可以在车辆代理的可视化面板中绑定stopCount,方便实时查看单辆车的停车次数

内容的提问来源于stack exchange,提问作者Bernardo Pedro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:15:14