|
FERS 1.0.0
The Flexible Extensible Radar Simulator
|
Classes | |
| 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 | LinkType { Monostatic , BistaticTxTgt , BistaticTgtRx , DirectTxRx } |
| Categorizes the visual link for rendering. More... | |
| enum class | LinkQuality { Strong , Weak } |
| Describes the radiometric quality of the link. More... | |
Functions | |
| void | 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). | |
| void | 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). | |
| ComplexType | calculateDirectPathContribution (const radar::Transmitter *trans, const radar::Receiver *recv, RealType timeK) |
| Calculates the complex envelope contribution for a direct propagation path (Tx -> Rx) at a specific time. | |
| ComplexType | calculateReflectedPathContribution (const radar::Transmitter *trans, const radar::Receiver *recv, const radar::Target *targ, RealType timeK) |
| Calculates the complex envelope contribution for a reflected path (Tx -> Tgt -> Rx) at a specific time. | |
| std::unique_ptr< serial::Response > | 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. | |
| std::vector< PreviewLink > | calculatePreviewLinks (const core::World &world, RealType time) |
| Calculates all visual links for the current world state at a specific time. | |
|
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 178 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 166 of file channel_model.h.
| ComplexType simulation::calculateDirectPathContribution | ( | const radar::Transmitter * | trans, |
| const radar::Receiver * | recv, | ||
| RealType | timeK | ||
| ) |
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 314 of file channel_model.cpp.
References params::c(), radar::Receiver::checkFlag(), fers_signal::RadarSignal::getCarrier(), radar::Object::getPlatform(), radar::Platform::getPosition(), radar::Transmitter::getSignal(), and PI.
Referenced by core::runEventDrivenSim(), and processing::runPulsedFinalizer().
Here is the call graph for this function:
Here is the caller 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 497 of file channel_model.cpp.
References BistaticTgtRx, BistaticTxTgt, params::c(), radar::Receiver::checkFlag(), DirectTxRx, EPSILON, radar::Radar::getAttached(), radar::Object::getName(), radar::Receiver::getNoiseTemperature(), radar::Object::getPosition(), fers_signal::RadarSignal::getPower(), core::World::getReceivers(), radar::Receiver::getSchedule(), radar::Transmitter::getSchedule(), radar::Transmitter::getSignal(), core::World::getTargets(), core::World::getTransmitters(), math::Vec3::length(), Monostatic, PI, Strong, and Weak.
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 | ||
| ) |
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 364 of file channel_model.cpp.
References params::c(), radar::Receiver::checkFlag(), fers_signal::RadarSignal::getCarrier(), radar::Object::getPlatform(), radar::Platform::getPosition(), radar::Target::getRcs(), radar::Transmitter::getSignal(), and PI.
Referenced by core::runEventDrivenSim(), and processing::runPulsedFinalizer().
Here is the call graph for this function:
Here is the caller 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 423 of file channel_model.cpp.
References radar::Radar::getAttached(), fers_signal::RadarSignal::getLength(), radar::Object::getName(), radar::Object::getPlatform(), LOG, interp::InterpPoint::power, params::simSamplingRate(), solveRe(), and solveReDirect().
Referenced by core::runEventDrivenSim().
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 224 of file channel_model.cpp.
References params::c(), radar::Receiver::checkFlag(), simulation::ReResults::delay, fers_signal::RadarSignal::getCarrier(), radar::Object::getPosition(), radar::Target::getRcs(), LOG, simulation::ReResults::phase, PI, and simulation::ReResults::power.
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 278 of file channel_model.cpp.
References params::c(), radar::Receiver::checkFlag(), simulation::ReResults::delay, fers_signal::RadarSignal::getCarrier(), radar::Object::getPosition(), LOG, simulation::ReResults::phase, PI, and simulation::ReResults::power.
Referenced by calculateResponse().
Here is the call graph for this function:
Here is the caller graph for this function: