Add RFG UDP source to rph_radar
This commit is contained in:
@@ -19,7 +19,8 @@ skips overwritten frames and continues from the retained tail:
|
||||
|
||||
1. **Acquisition** — Python producers configure the radar, acquire frequency sweeps,
|
||||
and publish raw S21 traces. Both single and multi-device LibreVNA use
|
||||
`matrix_raw_producer`; RadioPhotonic radar (RPH) uses `rph_radar_raw_producer` with its C++ collector.
|
||||
`matrix_raw_producer`; RadioPhotonic radar (RPH) uses `rph_radar_raw_producer` with its C++
|
||||
collector (E-502) or the RFG board's UDP stream.
|
||||
2. **Preprocessing** — `data_preprocessor` applies through calibration,
|
||||
reference subtraction, optional frequency-domain notch filtering, and an
|
||||
optional object-based MIMO correction of S21.
|
||||
@@ -47,9 +48,18 @@ controls, processing settings and a copy of the live plot through an embedded we
|
||||
- **librevna_multi** — synchronized multi-device LibreVNA.
|
||||
- **rph_radar** — [RadioPhotonic radar (RPH) collector](data_acq_and_processing/rph_radar_collector/README.md),
|
||||
with manual laser setpoints or LD1 current variation via **Apply Radar**.
|
||||
The application owns the collector and exchanges complete sweeps over a PTY.
|
||||
Switching to a different antenna pair starts a fresh ADC session after settling;
|
||||
queued samples and an initial partial sweep are discarded before using that pair.
|
||||
`radar.rph_radar.source` selects the ADC:
|
||||
- `e502` (default) — the application owns the collector and exchanges complete
|
||||
sweeps over a PTY. Switching to a different antenna pair starts a fresh ADC session
|
||||
after settling, discarding queued samples and an initial partial sweep.
|
||||
- `rfg_udp` — the RFG board sends averaged sweep points to `udp_bind`
|
||||
(`run_config_rph_radar_rfg.example.json`); main = ch0 − ch1, reference = ch2. It
|
||||
needs `laser_control.mode: variation` (even when the laser is started elsewhere):
|
||||
a sweep must have exactly the task's step count, `ceil((max − min) / step)` in DAC
|
||||
codes, with no lost points; others are dropped (the board loses a few percent).
|
||||
Capture windows come from kernel receive timestamps. Only one antenna pair (both
|
||||
switches with one position): without a source-side marker a sweep after a switch
|
||||
cannot be proven fresh.
|
||||
- **mock / simulator** — driver-less mode for development without hardware.
|
||||
|
||||
## Processing modes
|
||||
@@ -123,7 +133,7 @@ python3 -m venv .venv
|
||||
.venv/bin/python -m pip install --upgrade pip
|
||||
.venv/bin/python -m pip install -r requirements.txt
|
||||
make # data_preprocessor and data_processor in build/bin/
|
||||
make rph_radar_collector # also required for RadioPhotonic radar (RPH) acquisition
|
||||
make rph_radar_collector # RadioPhotonic radar (RPH) with radar.rph_radar.source: e502
|
||||
```
|
||||
|
||||
`make` builds the sar3d GPU code when it finds CUDA (see Requirements) and
|
||||
@@ -360,7 +370,8 @@ measurement key and are not selected by the renamed mode.
|
||||
|
||||
### RPH phase calibration
|
||||
|
||||
Use `run_config_examples/run_config_rph_radar.example.json` for **RadioPhotonic radar (RPH)**.
|
||||
Use `run_config_examples/run_config_rph_radar.example.json` (E-502) or
|
||||
`run_config_rph_radar_rfg.example.json` (RFG board) for **RadioPhotonic radar (RPH)**.
|
||||
Apply the desired laser settings with **Apply Radar**, then stop acquisition before
|
||||
running the calibration tool:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user