|
FERS 0.1.0
The Flexible Extensible Radar Simulator
|
Classes | |
| struct | CwPhaseNoiseBuffer |
| Sampled phase-noise buffer for one timing source. More... | |
| struct | CwPhaseNoiseLookup |
| Lookup table for CW phase noise across timing sources. More... | |
| struct | PreviewLink |
| A calculated link segment for 3D visualization. More... | |
| class | RangeError |
| Exception thrown when a range calculation fails, typically due to objects being too close. More... | |
| struct | ReResults |
| Stores the intermediate results of a radar equation calculation for a single time point. More... | |
Enumerations | |
| enum class | StreamingTimingPhaseMode : std::uint8_t { ReceiverRelative , TransmitterOnly , None } |
| Selects how timing phase noise is applied to streaming channel contributions. More... | |
| enum class | LinkType : std::uint8_t { Monostatic , BistaticTxTgt , BistaticTgtRx , DirectTxRx } |
| Categorizes the visual link for rendering. More... | |
| enum class | LinkQuality : std::uint8_t { Strong , Weak } |
| Describes the radiometric quality of the link. More... | |
|
strong |
Describes the radiometric quality of the link.
| Enumerator | |
|---|---|
| Strong | SNR > 0 dB. |
| Weak | SNR < 0 dB (Geometric line of sight, but below noise floor) |
Definition at line 275 of file channel_model.h.
|
strong |
Categorizes the visual link for rendering.
| Enumerator | |
|---|---|
| Monostatic | Combined Tx/Rx path. |
| BistaticTxTgt | Illuminator path. |
| BistaticTgtRx | Scattered path. |
| DirectTxRx | Interference path. |
Definition at line 263 of file channel_model.h.
|
strong |
Selects how timing phase noise is applied to streaming channel contributions.
Definition at line 95 of file channel_model.h.
| ComplexType simulation::calculateDirectPathContribution | ( | const radar::Transmitter * | trans, |
| const radar::Receiver * | recv, | ||
| RealType | timeK, | ||
| const CwPhaseNoiseLookup * | phase_noise_lookup = nullptr |
||
| ) |
Calculates the complex envelope contribution for a direct propagation path (Tx -> Rx) at a specific time.
This function is used for Continuous Wave (CW) simulations.
| trans | The transmitter. |
| recv | The receiver. |
| timeK | The current simulation time. |
Definition at line 702 of file channel_model.cpp.
References calculateStreamingDirectPathContribution(), and max.
Here is the call graph for this function:| std::vector< PreviewLink > simulation::calculatePreviewLinks | ( | const core::World & | world, |
| RealType | time | ||
| ) |
Calculates all visual links for the current world state at a specific time.
This function utilizes the core radar equation helpers to determine visibility, power levels, and SNR for all Tx/Rx/Target combinations. It is lightweight and does not update simulation state.
| world | The simulation world containing radar components. |
| time | The time at which to calculate geometry. |
Definition at line 1122 of file channel_model.cpp.
References core::World::getReceivers(), core::World::getTransmitters(), and max.
Referenced by fers_calculate_preview_links().
Here is the call graph for this function:
Here is the caller graph for this function:| ComplexType simulation::calculateReflectedPathContribution | ( | const radar::Transmitter * | trans, |
| const radar::Receiver * | recv, | ||
| const radar::Target * | targ, | ||
| RealType | timeK, | ||
| const CwPhaseNoiseLookup * | phase_noise_lookup = nullptr |
||
| ) |
Calculates the complex envelope contribution for a reflected path (Tx -> Tgt -> Rx) at a specific time.
This function is used for Continuous Wave (CW) simulations.
| trans | The transmitter. |
| recv | The receiver. |
| targ | The target. |
| timeK | The current simulation time. |
Definition at line 781 of file channel_model.cpp.
References calculateStreamingReflectedPathContribution(), and max.
Here is the call graph for this function:| std::unique_ptr< serial::Response > simulation::calculateResponse | ( | const radar::Transmitter * | trans, |
| const radar::Receiver * | recv, | ||
| const fers_signal::RadarSignal * | signal, | ||
| RealType | startTime, | ||
| const radar::Target * | targ = nullptr |
||
| ) |
Creates a Response object by simulating a signal's interaction over its duration.
This function iterates over the duration of a transmitted pulse, calling the appropriate channel model function (solveRe or solveReDirect) at discrete time steps to generate a series of InterpPoints. These points capture the time-varying properties of the received signal and are collected into a Response object.
| trans | Pointer to the transmitter. |
| recv | Pointer to the receiver. |
| signal | Pointer to the transmitted pulse signal. |
| startTime | The absolute simulation time when the pulse transmission starts. |
| targ | Optional pointer to a target. If null, a direct path is simulated. |
| RangeError | If the channel model reports an invalid geometry. |
| std::runtime_error | If the simulation parameters result in zero time steps. |
Definition at line 864 of file channel_model.cpp.
References LOG, max, params::simSamplingRate(), solveRe(), and solveReDirect().
Referenced by core::SimulationEngine::handleTxPulsedStart().
Here is the call graph for this function:
Here is the caller graph for this function:| ComplexType simulation::calculateStreamingDirectPathContribution | ( | const core::ActiveStreamingSource & | source, |
| const radar::Receiver * | recv, | ||
| RealType | timeK, | ||
| const CwPhaseNoiseLookup * | phase_noise_lookup = nullptr, |
||
| core::FmcwChirpBoundaryTracker * | chirp_tracker = nullptr, |
||
| StreamingTimingPhaseMode | timing_phase_mode = StreamingTimingPhaseMode::ReceiverRelative |
||
| ) |
Calculates a direct-path contribution from a cached streaming source.
| source | Cached active streaming source to evaluate. |
| recv | Receiver observing the source. |
| timeK | Current receiver time in seconds. |
| phase_noise_lookup | Optional lookup for timing phase noise samples. |
| chirp_tracker | Optional caller-owned FMCW boundary tracker for this path. |
| timing_phase_mode | Selects how timing phase noise is applied. |
Definition at line 709 of file channel_model.cpp.
References core::ActiveStreamingSource::amplitude, params::c(), core::ActiveStreamingSource::carrier_freq, lambda, max, no_loss, and core::ActiveStreamingSource::transmitter.
Referenced by processing::pipeline::applyStreamingInterference(), and calculateDirectPathContribution().
Here is the call graph for this function:
Here is the caller graph for this function:| bool simulation::calculateStreamingReferencePhase | ( | const core::ActiveStreamingSource & | source, |
| RealType | timeK, | ||
| core::FmcwChirpBoundaryTracker * | chirp_tracker, | ||
| RealType & | phase_out | ||
| ) |
Evaluates a receive-time streaming waveform phase for receiver LO/dechirp references.
| source | Cached active streaming source to evaluate. |
| timeK | Receiver time in seconds. |
| chirp_tracker | Optional caller-owned FMCW boundary tracker for this source. |
| phase_out | Receives the waveform phase in radians when evaluation succeeds. |
Definition at line 775 of file channel_model.cpp.
References max.
| ComplexType simulation::calculateStreamingReflectedPathContribution | ( | const core::ActiveStreamingSource & | source, |
| const radar::Receiver * | recv, | ||
| const radar::Target * | targ, | ||
| RealType | timeK, | ||
| const CwPhaseNoiseLookup * | phase_noise_lookup = nullptr, |
||
| core::FmcwChirpBoundaryTracker * | chirp_tracker = nullptr, |
||
| StreamingTimingPhaseMode | timing_phase_mode = StreamingTimingPhaseMode::ReceiverRelative |
||
| ) |
Calculates a reflected-path contribution from a cached streaming source.
| source | Cached active streaming source to evaluate. |
| recv | Receiver observing the reflected signal. |
| targ | Reflecting target. |
| timeK | Current receiver time in seconds. |
| phase_noise_lookup | Optional lookup for timing phase noise samples. |
| chirp_tracker | Optional caller-owned FMCW boundary tracker for this path. |
| timing_phase_mode | Selects how timing phase noise is applied. |
Definition at line 789 of file channel_model.cpp.
References core::ActiveStreamingSource::amplitude, params::c(), core::ActiveStreamingSource::carrier_freq, lambda, max, no_loss, and core::ActiveStreamingSource::transmitter.
Referenced by processing::pipeline::applyStreamingInterference(), and calculateReflectedPathContribution().
Here is the call graph for this function:
Here is the caller graph for this function:| void simulation::solveRe | ( | const radar::Transmitter * | trans, |
| const radar::Receiver * | recv, | ||
| const radar::Target * | targ, | ||
| const std::chrono::duration< RealType > & | time, | ||
| const fers_signal::RadarSignal * | wave, | ||
| ReResults & | results | ||
| ) |
Solves the bistatic radar equation for a reflected path (Tx -> Tgt -> Rx).
This function calculates the signal properties (power, delay, phase) for a signal traveling from a transmitter, reflecting off a target, and arriving at a receiver. It accounts for antenna gains, target RCS, and propagation loss.
| trans | Pointer to the transmitter. |
| recv | Pointer to the receiver. |
| targ | Pointer to the target. |
| time | The time at which the pulse is transmitted. |
| wave | Pointer to the transmitted radar signal. |
| results | Output struct to store the calculation results. |
| RangeError | If the target is too close to the transmitter or receiver. |
Definition at line 612 of file channel_model.cpp.
References params::c(), LOG, max, no_loss, and PI.
Referenced by calculateResponse().
Here is the call graph for this function:
Here is the caller graph for this function:| void simulation::solveReDirect | ( | const radar::Transmitter * | trans, |
| const radar::Receiver * | recv, | ||
| const std::chrono::duration< RealType > & | time, | ||
| const fers_signal::RadarSignal * | wave, | ||
| ReResults & | results | ||
| ) |
Solves the radar equation for a direct path (Tx -> Rx).
This function calculates the signal properties for a direct line-of-sight signal traveling from a transmitter to a receiver.
| trans | Pointer to the transmitter. |
| recv | Pointer to the receiver. |
| time | The time at which the pulse is transmitted. |
| wave | Pointer to the transmitted radar signal. |
| results | Output struct to store the calculation results. |
| RangeError | If the transmitter and receiver are too close. |
Definition at line 666 of file channel_model.cpp.
References params::c(), LOG, max, no_loss, and PI.
Referenced by calculateResponse().
Here is the call graph for this function:
Here is the caller graph for this function: