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 )。
示例计算:给定参数求航线间距
设某 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 m | 44 m | 44 m | 15 | 30.0 | 偏差容限主导,无标称重叠 |
| 10% | 45 m | 44 m | 44 m | 15 | 30.0 | 偏差容限主导 |
| 20% | 40 m | 44 m | 40 m | 16 | 32.0 | 重叠率主导,冗余适中 |
| 30% | 35 m | 44 m | 35 m | 18 | 36.0 | 冗余较高 |
| 50% | 25 m | 44 m | 25 m | 25 | 50.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%,与表格结果一致。