4. 基于探测幅宽的平行航线间距计算

探测幅宽与航线间距的几何关系

侧扫声呐或下视相机的有效探测幅宽 W 指单条航线在海底(或目标平面)上能形成有效成像的横向覆盖宽度。若相邻两条平行航线间距为 d,则两条航线覆盖带之间会形成重叠区,重叠宽度为 W − d。工程上用重叠率 r 描述这一冗余:

r = (W − d) / W,反解得 d = W · (1 − r)。

但实际航行中 AUV 受海流、导航误差影响,航迹会偏离标称直线,产生横向航向偏差。若偏差容限为 ±e,则最坏情况下相邻覆盖带边缘会各偏移 e,实际最小重叠变为 W − d − 2e。为保证在最坏偏差下仍不漏扫,需满足:

W − d − 2e ≥ 0,即 d ≤ W − 2e。

综合重叠率要求与偏差容限,最终航线间距取两者中更严格者:

d = min( W·(1 − r), W − 2e )。

平行航线覆盖带与重叠几何 航线 1 航线 2 W(有效幅宽) d(航线间距) W − d(重叠宽度) ±e 偏差容限 间距计算与约束 重叠率约束:d₁ = W · (1 − r) 偏差容限约束:d₂ = W − 2e 最终间距:d = min(d₁, d₂) r 越大 → d 越小 → 航程越长、冗余越高;e 越大 → d 越小 → 需更多航线

示例计算:给定参数求航线间距

设某 AUV 搭载侧扫声呐,单侧有效探测距离 25 m,双侧合计有效幅宽 W = 50 m。任务要求重叠率 r = 20%,导航与海流导致的横向航向偏差容限 e = 3 m。

  • 重叠率约束:d₁ = 50 × (1 − 0.20) = 40 m
  • 偏差容限约束:d₂ = 50 − 2 × 3 = 44 m
  • 取严格者:d = min(40, 44) = 40 m

此时重叠率约束起主导作用,偏差容限尚有 4 m 余量。若将重叠率降至 r = 10%,则 d₁ = 45 m,而 d₂ = 44 m,此时偏差容限成为主导,最终间距被限制在 44 m,说明低重叠率下航向偏差容限会反过来约束间距。

不同重叠率对总航程与冗余的影响

设搜索区为 L × B = 2000 m × 600 m 的矩形,航线沿长边方向(航程方向)布置,则航线数量 N = ⌈B / d⌉ + 1(首末航线贴边),总航程近似 S ≈ N × L(忽略转弯段)。下表给出不同重叠率下的对比(W = 50 m, e = 3 m):

重叠率 r d₁ = W(1−r) d₂ = W−2e 实际间距 d 航线数 N 总航程 S (km) 覆盖冗余
0%50 m44 m44 m1530.0偏差容限主导,无标称重叠
10%45 m44 m44 m1530.0偏差容限主导
20%40 m44 m40 m1632.0重叠率主导,冗余适中
30%35 m44 m35 m1836.0冗余较高
50%25 m44 m25 m2550.0冗余很高,航程显著增加
从表中可见:当 r ≤ 12% 时,偏差容限 d₂ = 44 m 成为瓶颈,继续降低重叠率并不能增大间距,总航程不再减少。因此实际规划中应把重叠率设在略高于 1 − (W−2e)/W = 2e/W 的位置,既保证覆盖又避免无谓航程。

工程实现要点

将上述计算封装为可复用的间距计算函数,输入幅宽、重叠率、偏差容限,输出间距及主导约束类型,便于在航线生成前快速评估参数合理性。

import math

def compute_track_spacing(width, overlap_ratio, cross_track_error):
    """
    width: 有效探测幅宽 W (m)
    overlap_ratio: 目标重叠率 r, 0~1
    cross_track_error: 横向航向偏差容限 e (m)
    返回: (间距 d, 主导约束)
    """
    d_overlap = width * (1.0 - overlap_ratio)
    d_error = width - 2.0 * cross_track_error
    if d_error <= 0:
        raise ValueError("偏差容限过大,单条航线无法保证覆盖")
    if d_overlap <= d_error:
        return d_overlap, "重叠率约束"
    else:
        return d_error, "偏差容限约束"

def estimate_survey(length, breadth, spacing):
    """矩形区域沿长边布线的航程估算"""
    n_tracks = math.ceil(breadth / spacing) + 1
    total = n_tracks * length
    return n_tracks, total

# 示例参数
W, r, e = 50.0, 0.20, 3.0
d, dominant = compute_track_spacing(W, r, e)
n, s = estimate_survey(2000, 600, d)
print(f"间距 d = {d:.1f} m, 主导约束: {dominant}")
print(f"航线数 N = {n}, 总航程 S = {s/1000:.1f} km")

运行上述代码,输出为:

间距 d = 40.0 m, 主导约束: 重叠率约束
航线数 N = 16, 总航程 S = 32.0 km
偏差容限 e 应结合导航精度(如 DVL + 惯导组合的横向误差)与海流估计误差综合取值,不宜简单取单一传感器标称精度。若 e ≥ W/2,则任何间距都无法保证覆盖,必须先提高导航精度或降低任务要求。

参数敏感性速查

为便于现场快速判断,可将主导约束切换点记为 r* = 2e / W。当目标重叠率 r < r* 时,间距由偏差容限决定,此时降低重叠率不会减少航程;当 r > r* 时,间距由重叠率决定,航程随重叠率近似线性增长。本例中 r* = 6/50 = 12%,与表格结果一致。