4. 基于雷达ARPA目标跟踪的碰撞风险评估

ARPA 跟踪数据到风险等级的可执行评估链

本案例的任务不是重新推导 DCPA/TCPA,而是把 ARPA 已经输出的目标位置与速度,组织成一条可复现的风险评估流程:先做数据有效性检查,再计算距离、DCPA、TCPA 三个因子,分别映射为子等级,最后按“取最严”原则合成综合风险等级并输出报告。这样做的工程意义在于:ARPA 给出的原始跟踪量往往带有噪声、丢点和坐标约定差异,直接拿一个 DCPA 数值下结论容易误判。

1. 输入字段与坐标约定

假设 ARPA 以本船为原点的极坐标输出目标:相对距离 R(n mile)、相对方位 B(°,真方位,自北顺时针)、目标真航向 TC(°)、目标真航速 TS(kn),本船真航向 HC、真航速 HS。统一采用“北为 0°、顺时针为正”的方位约定,速度分解到北向(x)与东向(y)两个分量。若 ARPA 输出的是相对速度矢量,则需先叠加本船速度还原为目标真速度,否则 DCPA/TCPA 会整体偏移。

2. 三因子计算与分级映射

相对位置分量:dx = R·cos(B),dy = R·sin(B)。目标真速度分量:vtx = TS·cos(TC),vty = TS·sin(TC);本船:vhx = HS·cos(HC),vhy = HS·sin(HC)。相对速度 vrx = vtx − vhx,vry = vty − vhy,相对速度大小 Vr = √(vrx²+vry²)。

TCPA 与 DCPA 用标准闭式解:TCPA = −(dx·vrx + dy·vry) / Vr²;DCPA = |dx·vry − dy·vrx| / Vr。当 TCPA < 0 表示目标正在远离,DCPA 取当前距离作为“已通过”的保守值。分级采用下表的多因子映射,每个因子独立给出 1~4 级,最终综合等级取三者最大值(最严原则),避免某一因子宽松掩盖另一因子的紧迫性。

因子1 级(低)2 级(中)3 级(高)4 级(紧迫)
距离 R / n mile> 6.03.0 ~ 6.01.5 ~ 3.0< 1.5
DCPA / n mile> 1.00.5 ~ 1.00.2 ~ 0.5< 0.2
TCPA / min> 2010 ~ 205 ~ 10< 5
分级阈值应作为可配置参数注入,而不是写死在计算函数里。这样同一套评估流程可以复用于不同水域(开阔水域可放宽 DCPA,狭水道需收紧),也便于后续做阈值敏感性对比。

3. 评估流程与数据流

下图给出从 ARPA 跟踪量到风险报告的完整数据流:左侧为输入与有效性门控,中部为三因子并行计算与分级,右侧为“取最严”合成与报告输出。注意有效性门控是流程的一部分——当 Vr 接近 0(目标与本船同速同向)时,TCPA 公式分母趋零,必须单独处理为“无接近趋势”,否则会得到数值爆炸的错误等级。

ARPA 跟踪输出 R / B(相对极坐标) TC / TS(目标真矢量) 本船 HC / HS 方位约定:北 0°,顺时针 有效性门控 R 有效?丢点? Vr ≈ 0 ? 坐标约定一致? 距离因子 R R → 等级 1~4 DCPA 因子 DCPA → 等级 1~4 TCPA 因子 TCPA → 等级 1~4 取最严合成 L = max(L_R, L_DCPA, L_TCPA) 评估报告 等级 / 主导因子 R、DCPA、TCPA 标记“数据不可用” 不参与等级合成,报告注明 三因子并行分级后取最大值,保证任一紧迫因子不被其他宽松因子掩盖

4. 参考实现

下面给出一个自洽的 Python 实现,包含单位换算、有效性门控、三因子分级与报告生成。示例数据为教学假设值,用于演示流程,不代表任何实测结果。

import math

# 分级阈值(可配置)
TH = {
    "R":    [(6.0, 1), (3.0, 2), (1.5, 3), (0.0, 4)],   # 距离越小等级越高
    "DCPA": [(1.0, 1), (0.5, 2), (0.2, 3), (0.0, 4)],
    "TCPA": [(20.0, 1), (10.0, 2), (5.0, 3), (0.0, 4)],
}

def grade(value, table):
    """按阈值表映射等级:value 大于等于某档下界则取该档等级。"""
    for lower, level in table:
        if value >= lower:
            return level
    return 4

def assess(r_nm, brg_deg, tc_deg, ts_kn, hc_deg, hs_kn):
    # 1) 有效性门控
    if r_nm is None or r_nm <= 0:
        return {"valid": False, "reason": "距离无效或丢点"}

    # 2) 相对位置与真速度分量(北 x,东 y)
    dx = r_nm * math.cos(math.radians(brg_deg))
    dy = r_nm * math.sin(math.radians(brg_deg))
    vtx = ts_kn * math.cos(math.radians(tc_deg))
    vty = ts_kn * math.sin(math.radians(tc_deg))
    vhx = hs_kn * math.cos(math.radians(hc_deg))
    vhy = hs_kn * math.sin(math.radians(hc_deg))
    vrx, vry = vtx - vhx, vty - vhy
    vr = math.hypot(vrx, vry)

    # 3) Vr 趋零保护
    if vr < 0.05:
        return {"valid": True, "R": r_nm, "DCPA": r_nm, "TCPA": None,
                "level": grade(r_nm, TH["R"]), "dominant": "R",
                "note": "相对速度趋零,无接近趋势"}

    # 4) TCPA / DCPA
    tcpa_min = -(dx * vrx + dy * vry) / (vr * vr) * 60.0
    dcpa = abs(dx * vry - dy * vrx) / vr
    if tcpa_min < 0:
        dcpa = r_nm          # 已通过,保守取当前距离
        tcpa_eff = 999.0
    else:
        tcpa_eff = tcpa_min

    # 5) 三因子分级与取最严
    lr = grade(r_nm, TH["R"])
    ld = grade(dcpa, TH["DCPA"])
    lt = grade(tcpa_eff, TH["TCPA"])
    level = max(lr, ld, lt)
    dominant = ["R", "DCPA", "TCPA"][[lr, ld, lt].index(level)]

    return {"valid": True, "R": round(r_nm, 2), "DCPA": round(dcpa, 2),
            "TCPA": round(tcpa_min, 1), "L_R": lr, "L_DCPA": ld, "L_TCPA": lt,
            "level": level, "dominant": dominant}

# 教学示例:目标在右前方 2.0 n mile、方位 045°,真航向 225°、真航速 12 kn
# 本船真航向 000°、真航速 10 kn
res = assess(2.0, 45.0, 225.0, 12.0, 0.0, 10.0)
print(res)

按示例参数可直接推出:目标真速度分量约为 vtx = −8.49、vty = −8.49,本船 vhx = 10、vhy = 0,相对速度 vrx ≈ −18.49、vry ≈ −8.49,Vr ≈ 20.35 kn。相对位置 dx ≈ 1.41、dy ≈ 1.41。代入得 TCPA ≈ 0.17 min(约 10 s),DCPA ≈ 0.58 n mile。分级结果为:R=2.0 属 3 级,DCPA=0.58 属 2 级,TCPA≈0.17 属 4 级,综合取 4 级,主导因子为 TCPA。这一结果说明:即使 DCPA 尚在中等区间,极短的 TCPA 也足以把风险推到紧迫级,这正是“取最严”原则要防止的漏判。

示例中 TCPA 极短,是因为目标几乎正对本船高速接近。实际使用时须确认 ARPA 的 TC/TS 是目标真矢量而非相对矢量;若误把相对速度当真速度代入,会得到完全不同的 DCPA/TCPA,属于典型的数据源错误而非算法错误。

5. 报告输出与判读

评估报告至少应包含:综合等级、三个子等级、主导因子、R/DCPA/TCPA 数值、数据有效性标记。判读时先看 valid,再看综合等级,最后看主导因子决定后续动作方向——主导因子为 TCPA 时优先考虑立即减速或大角度转向以拉长时间余量;主导因子为 DCPA 时优先修正航向以增大通过距离;主导因子为 R 时说明已进入近距离区,需结合当时能见度与水域条件判断。

综合等级含义建议响应
1 级低风险,目标远离或通过距离充裕保持正规瞭望,常规跟踪
2 级中等风险,存在接近趋势加密观测,核对 ARPA 跟踪稳定性
3 级高风险,通过距离或时间余量不足启动避碰决策,准备转向或减速
4 级紧迫,随时可能形成紧迫局面立即执行避让,复评 DCPA/TCPA

验证方法:用同一组输入分别计算三因子并手工核对分级,确认综合等级等于三者最大值;再构造一个 Vr < 0.05 的同速同向目标,确认流程走“无接近趋势”分支而不是产生异常 TCPA。通过这两项检查,即可认为评估链在数值与逻辑上闭合。