44 for (
const auto& period : schedule)
47 p_elem.
setAttribute(
"start", std::to_string(period.start));
121 pulsed_file.
setAttribute(
"filename", filename.value_or(
""));
131 if (
const auto val =
timing.getFreqOffset())
135 if (
const auto val =
timing.getRandomFreqOffsetStdev())
139 if (
const auto val =
timing.getPhaseOffset())
143 if (
const auto val =
timing.getRandomPhaseOffsetStdev())
148 std::vector<RealType> alphas, weights;
149 timing.copyAlphas(alphas, weights);
150 for (
size_t i = 0; i < alphas.size(); ++i)
188 parent.
setAttribute(
"filename", xml_ant->getFilename());
200 if (
antenna.getEfficiencyFactor() != 1.0)
221 for (
const auto& [pos, t] : path.
getCoords())
236 const auto start = rotPath.
getStart();
237 const auto rate = rotPath.
getRate();
243 start_az = std::fmod(start_az + 360.0, 360.0);
272 for (
const auto& wp : rotPath.
getCoords())
278 azimuth = std::fmod(azimuth + 360.0, 360.0);
357 (void)mono_elem.
addChild(
"cw_mode");
379 else if (
const auto* file_target =
dynamic_cast<const radar::FileTarget*
>(&target))
382 rcs_elem.
setAttribute(
"filename", file_target->getFilename());
408 if (tx->getPlatform() == &platform)
410 if (tx->getAttached() !=
nullptr)
423 if (rx->getPlatform() == &platform && (rx->getAttached() ==
nullptr))
431 if (target->getPlatform() == &platform)
Header file defining various types of antennas and their gain patterns.
Class representing a node in an XML document.
XmlElement addChild(const std::string_view name) const noexcept
Add a child element to the current node.
void setAttribute(const std::string_view name, const std::string_view value) const
Set an attribute on the XML element.
void setText(const std::string_view text) const
Set the text content of the XML element.
Abstract base class representing an antenna.
std::string getName() const noexcept
Retrieves the name of the antenna.
Represents a Gaussian-shaped antenna gain pattern.
Represents an antenna whose gain pattern is loaded from a HDF5 file.
Represents a parabolic reflector antenna.
Represents a sinc function-based antenna gain pattern.
Represents a square horn antenna.
Represents an antenna whose gain pattern is defined by an XML file.
The World class manages the simulator environment.
const std::vector< std::unique_ptr< radar::Target > > & getTargets() const noexcept
Retrieves the list of radar targets.
const std::vector< std::unique_ptr< radar::Transmitter > > & getTransmitters() const noexcept
Retrieves the list of radar transmitters.
const std::vector< std::unique_ptr< radar::Receiver > > & getReceivers() const noexcept
Retrieves the list of radar receivers.
Class representing a radar signal with associated properties.
const std::optional< std::string > & getFilename() const noexcept
Gets the filename associated with this signal.
const std::string & getName() const noexcept
Gets the name of the radar signal.
RealType getCarrier() const noexcept
Gets the carrier frequency of the radar signal.
const Signal * getSignal() const noexcept
Gets the underlying signal object.
RealType getPower() const noexcept
Gets the power of the radar signal.
Represents a path with coordinates and allows for various interpolation methods.
const std::vector< Coord > & getCoords() const noexcept
Gets the list of coordinates in the path.
InterpType getType() const noexcept
Retrieves the current interpolation type of the path.
Manages rotational paths with different interpolation techniques.
InterpType getType() const noexcept
Gets the interpolation type of the path.
RotationCoord getRate() const noexcept
Gets the rate of change for the rotation.
const std::vector< RotationCoord > & getCoords() const noexcept
Gets the list of rotation coordinates.
RotationCoord getStart() const noexcept
Gets the starting rotation coordinate.
const std::string & getName() const noexcept
Retrieves the name of the object.
const antenna::Antenna * getAntenna() const noexcept
Gets the antenna associated with this radar.
std::shared_ptr< timing::Timing > getTiming() const
Retrieves the timing source for the radar.
Chi-square distributed RCS model.
Manages radar signal reception and response processing.
bool checkFlag(RecvFlag flag) const noexcept
Checks if a specific flag is set.
const std::vector< SchedulePeriod > & getSchedule() const noexcept
Retrieves the list of active reception periods.
RealType getNoiseTemperature() const noexcept
Retrieves the noise temperature of the receiver.
OperationMode getMode() const noexcept
Gets the operational mode of the receiver.
RealType getWindowPrf() const noexcept
Retrieves the pulse repetition frequency (PRF) of the radar window.
RealType getWindowSkip() const noexcept
Retrieves the window skip time.
RealType getWindowLength() const noexcept
Retrieves the radar window length.
Base class for radar targets.
const RcsModel * getFluctuationModel() const
Gets the RCS fluctuation model.
Represents a radar transmitter system.
RealType getPrf() const noexcept
Retrieves the pulse repetition frequency (PRF).
fers_signal::RadarSignal * getSignal() const noexcept
Retrieves the radar signal currently being transmitted.
const std::vector< SchedulePeriod > & getSchedule() const noexcept
Retrieves the list of active transmission periods.
OperationMode getMode() const noexcept
Gets the operational mode of the transmitter.
Manages timing properties such as frequency, offsets, and synchronization.
double RealType
Type for real numbers.
Coordinate and rotation structure operations.
@ Degrees
Compass azimuth and elevation expressed in degrees.
@ UTM
Universal Transverse Mercator.
@ ENU
East-North-Up local tangent plane (default)
@ ECEF
Earth-Centered, Earth-Fixed.
RotationAngleUnit rotationAngleUnit() noexcept
constexpr std::string_view rotationAngleUnitToken(const RotationAngleUnit unit) noexcept
@ PULSED_MODE
The component operates in a pulsed mode.
RealType internal_elevation_to_external(const RealType elevation, const params::RotationAngleUnit unit) noexcept
RealType internal_azimuth_rate_to_external(const RealType azimuth_rate, const params::RotationAngleUnit unit) noexcept
RealType internal_elevation_rate_to_external(const RealType elevation_rate, const params::RotationAngleUnit unit) noexcept
RealType internal_azimuth_to_external(const RealType azimuth, const params::RotationAngleUnit unit) noexcept
void serializeMotionPath(const math::Path &path, const XmlElement &parent)
Serializes a motion path into a parent XML element.
void addChildWithNumber(const XmlElement &parent, const std::string &name, T value)
Adds a child element with the specified numeric content.
void addChildWithText(const XmlElement &parent, const std::string &name, const std::string &text)
Adds a child element with the specified text content.
void serializeReceiver(const radar::Receiver &rx, const XmlElement &parent)
Serializes a receiver into a parent XML element.
void serializeAntenna(const antenna::Antenna &antenna, const XmlElement &parent)
Serializes an antenna into a parent XML element.
void serializeMonostatic(const radar::Transmitter &tx, const radar::Receiver &rx, const XmlElement &parent)
Serializes a monostatic radar setup containing both a transmitter and receiver.
void serializeRotation(const math::RotationPath &rotPath, const XmlElement &parent)
Serializes a rotation path into a parent XML element.
void serializeSchedule(const std::vector< radar::SchedulePeriod > &schedule, const XmlElement &parent)
Serializes a schedule (active periods) into a parent XML element.
void serializePlatform(const radar::Platform &platform, const core::World &world, const XmlElement &parent)
Serializes a platform and its attached components into a parent XML element.
void serializeTransmitter(const radar::Transmitter &tx, const XmlElement &parent)
Serializes a transmitter into a parent XML element.
void serializeTarget(const radar::Target &target, const XmlElement &parent)
Serializes a target into a parent XML element.
void serializeTiming(const timing::PrototypeTiming &timing, const XmlElement &parent)
Serializes a timing object into a parent XML element.
void serializeWaveform(const fers_signal::RadarSignal &waveform, const XmlElement &parent)
Serializes a waveform into a parent XML element.
void setAttributeFromBool(const XmlElement &element, const std::string &name, const bool value)
Sets a boolean attribute on an XML element.
void serializeParameters(const XmlElement &parent, const params::Parameters &p)
Serializes a Parameters object into a parent XML element.
Provides the definition and functionality of the Path class for handling coordinate-based paths with ...
Header file for the PrototypeTiming class.
Classes for handling radar waveforms and signals.
Radar Receiver class for managing signal reception and response handling.
Defines the RotationPath class for handling rotational paths with different interpolation types.
Struct to hold simulation parameters.
RealType rate
Rendering sample rate.
double origin_longitude
Geodetic origin longitude.
RealType start
Start time for the simulation.
double origin_altitude
Geodetic origin altitude (in meters)
CoordinateFrame coordinate_frame
Scenario coordinate frame.
RealType end
End time for the simulation.
int utm_zone
UTM zone (1-60), if applicable.
unsigned oversample_ratio
Oversampling ratio.
std::optional< unsigned > random_seed
Random seed for simulation.
RealType sim_sampling_rate
Temporal sampling rate (Hz) that determines time-step resolution for radar pulse simulation.
RotationAngleUnit rotation_angle_unit
External rotation angle unit.
RealType c
Speed of light (modifiable)
static constexpr RealType DEFAULT_C
Speed of light (m/s)
unsigned adc_bits
ADC quantization bits.
bool utm_north_hemisphere
UTM hemisphere, if applicable.
double origin_latitude
Geodetic origin latitude.
Defines classes for radar targets and their Radar Cross-Section (RCS) models.
Timing source for simulation objects.
Header file for the Transmitter class in the radar namespace.
Header file for the World class in the simulator.
Core utility layer for serializing FERS XML scenario files.