Documentation

Definitions

Channels, phase centres, overlap, and the vocabulary the rest of these pages assume.

Short glossary for terminology used throughout the TDBP pipeline. Numbers below use the modified MUSCLE geometry from simulator/scenes/library/9obj_split_zonemap.yaml as a concrete example.

Physical array

  • Total channels (n_channels): the number of physical RX elements on the hydrophone array. Example: n_channels = 36.
  • Channel spacing (channel_spacing): along-track distance between adjacent RX element centers. Example: 30 mm (elements are butt-coupled, so spacing = element size).
  • Array span (physical): extent of the RX elements: (n_channels − 1) · channel_spacing. Example: 35 × 30 mm = 1050 mm (or 1080 mm if you count element width).

Phase centers (PCs)

  • Phase center: the effective radiation/reception point for a (TX, RX) pair, located at the midpoint of the TX and RX positions. For a co-located TX with RXs along the array, PC_i = (TX + RX_i) / 2.
  • Phase center spacing (d_pc): distance between adjacent PCs. With the monostatic-approximation TX at one end, d_pc = channel_spacing / 2. Example: d_pc = 15 mm.
  • PC span: extent of the PC positions within one ping: (n_channels − 1) · d_pc. Example: 35 × 15 mm = 525 mm. This is the single-ping synthetic aperture.
  • Number of PCs per ping = n_channels (one PC per (TX, RX) pair).

Platform motion between pings

  • Ping advance: along-track distance the platform moves between consecutive pings: SPEED / PING_RATE. Example: 1.583 m/s / 3.298 Hz = 480 mm per ping = 32 · d_pc exactly (chosen so PC advance is an integer to avoid lattice-defect grating lobes).

Overlap

  • Overlap (in PCs): number of PC positions shared between the apertures of two consecutive pings. With the geometry above: overlap = PC span − ping advance = 525 − 480 = 45 mm = 3 d_pc, or n_channels − (advance / d_pc) = 36 − 32 = 4 PCs, depending on whether you count endpoints. The code uses the latter. Example: overlap = 4 PCs.
  • Why overlap exists: it keeps the along-track PC sampling contiguous (no gaps) and provides redundancy for micronavigation delay estimation between ping pairs.

Active channels

  • Active channels per ping: in the current image-formation framework, every channel of every ping contributes to the SLC, but channels that overlap with a neighboring ping get weight 0.5 (full overlap) or a linearly-scaled partial weight (see compute_channel_weights in beamformer.py:861). Net contribution across the ping pair sums to 1.0 per PC.
  • Effective PCs per ping = (n_channels − overlap) + overlap · 0.5. Example: 32 + 4 · 0.5 = 34 effective PC contributions.
  • Older codebases sometimes use active channels = non-overlapping channels only: i.e., n_channels − overlap = 32: and discard overlapped PCs entirely. We do not do that: we keep all 36 but weight them so the coherent sum is unbiased.
  • first_channel_per_ping: the first channel index that is not shared with the previous ping; overlap handling uses this only to avoid double-counting when building image-level weight maps. Kernel still integrates from first_channel_per_ping[ping] to n_channels − 1.

Along-track synthetic aperture at a pixel

  • Beam-limited aperture (L_beam): only pings whose beam center falls within ± half_beam_rad of a pixel contribute to that pixel. At range R, this is roughly L_beam ≈ 2 R · tan(half_beam). Example: R = 33.5 m, half_beam = 6.35° → L_beam ≈ 7.5 m.
  • Number of pings per pixelL_beam / ping_advance. Example: 7.5 / 0.480 ≈ 16 pings per pixel.
  • Total PC contributions per pixel(pings per pixel) · n_channels. Example: 16 · 36 ≈ 580 coherent samples per pixel.

Apodization / channel tapering

  • Channel tapering for PSF-sidelobe / PC-grating suppression should be applied as a Taylor / Hamming weight indexed by the physical channel position (0..n_channels−1), on top of the overlap weights. Do not re-index by the "active channel" subset, which would create a discontinuity at the overlap boundary.
  • Current pipeline: no channel-position tapering (weights are uniform across channels; only the Hann beam-angle window is applied). That leaves a visible PC-grating ripple at period = d_pc in off-peak regions of bright targets.