Skip to content

XML Guide

Darryn Jordan edited this page Dec 17, 2024 · 13 revisions

1. Introduction

FERS accepts simulation parameters in the form of files with the extension ".fersxml".

To run FERS using a specific XML file navigate to the file and use the command "fers <XMLfile>". NOTE: "(bool)" must be either "true" or "false" wherever it is used.

2. Simulation Parameters

<parameters>
  <starttime>start_time </starttime>
  <endtime>end_time</endtime>
  <c>speed_of_light</c>
  <rate>export_sampling_rate</rate>
  <export csv="(bool)" binary="()bool" csvbinary="(bool)"/>
  <interpreate>cw_interpolation_rate</interprate>
  <randomseed>seed_for_PRNG</randomseed>
  <adc_bits>number_of_adc_bits_to_sim</adc_bits>
  <oversample>oversampling_ratio</oversample>
</parameters>

Important:

  • oversamplingratio > 1 or = 1(no oversampling)
  • The "export" attributes "csv", "binary" and "csvbinary" set the exported

3. Targets

<target name=target_name>
  <rcs type=rcs_type>rcs_value</rcs>
  <model type=model_type></model>
</target>

Important:

  • Isotropic RCS > 0
  • Supported RCS types (rcstype): "isotropic" or (could not find RCS from file implemented in the source code)
  • Supported RCS models (modeltype): "constant", "chisquare" or "gamma"
  • If Chi-square or Gamma models are used, specify the desired standard deviation as a child node of "model" with handle "k"

4. Antennas

<antenna name=antenna_name pattern=gain_pattern>
  <efficiency>ant_efficiency</efficiency>
</antenna>

Important:

  • If the efficiency is not specified it will default to 1
  • Supported Gain Patterns:
    • Isotropic: pattern="isotropic"
    • CSV file: <antenna name=antennaname pattern="file" filename=nameoffile+".csv">
    • XML file: <antenna name=antennsname pattern="file" filename=nameoffile+".fersxml">
    • Sinc: gainpattern="sinc" (also include "alpha", "beta" and "gamma" child nodes)
    • Parabolic: gainpattern="parabolic" (also include "diameter" child node)
    • Gaussian: gainpattern="gaussian" (also include "azscale" and "elscale" child nodes to set the elevation and azimuth scale)

Example XML Definition:

<?xml version="1.0" ?>
<antenna>
    <elevation>
        <gainsample>
            <angle>-3.141592653589793</angle>
            <gain>-67.72629459922314</gain>
        </gainsample>
        <gainsample>
            <angle>-1.0471975511965979</angle>
            <gain>8.474856155641872</gain>
        </gainsample>
        <gainsample>
            <angle>1.0471975511965974</angle>
            <gain>8.474856155641879</gain>
        </gainsample>
    </elevation>
    <azimuth>
        <gainsample>
            <angle>-3.141592653589793</angle>
            <gain>-inf</gain>
        </gainsample>
        <gainsample>
            <angle>-1.0471975511965979</angle>
            <gain>-1410.7715766537192</gain>
        </gainsample>
        <gainsample>
            <angle>1.0471975511965974</angle>
            <gain>-1410.771576653718</gain>
        </gainsample>
    </azimuth>
</antenna>

5. Receivers

<receiver name=receiver_name antenna=antenna_name timing=clock_name nodirect="(bool)" nopropagationloss="(bool)">
  <window_skip>skip_time</window_skip>
  <window_length>receive_window_length</window_length>
  <prf>pulse_repetition_freq</prf>
  <noise_temp>receiver_temp</noise_temp>
</receiver>

Important:

  • pulse_repetition_freq and skiptime will be rounded down to an even number of samples
  • ignoredirectsignals="true": direct signals will be ignored
  • ignorepropagationloss="true": propagation losses of received signal(s) will not be taken into account.

6. Transmission Pulse

<pulse name=pulse_name type=model_type>
  <power>pulse_power</power>
  <carrier>carrier_freq</carrier>
</pulse>

Important:

  • If type="file", include "filename=nameoffile" as an attribute

7. Timing/Clocks

FERS supports individual clock objects each with their own phase/frequency offsets from the ideal. These clock objects can be associated with individual transmitter and/or receivers. Clock noise can simply be specified as jitter. However, efficient simulation of white and coloured phase noise is also supported.

Phase noise is modelled using power law spectral densities of phase fluctuations in the form

,

where associated with the noise types [white PM, flicker PM, white FM, flicker FM, random walk FM], respectively. Note that FERS specifies the phase noise intensity term in dBc/Hz where . Also, FERS uses the more standard alpha values (instead of beta) for the various noise types where .

<timing name=clock_name synconpulse="(bool)">
  <frequency>clock_freq</frequency> 	        <!-- [Hz] -->
  <noise_entry>
  <alpha>alpha_value</alpha>
  <weight>noise_intensity</weight>                  <!-- [dBc/Hz] -->
  </noise_entry>
  <freq_offset>frequency_offset</freq_offset> 	<!-- [Hz] -->
  <phase_offset>phase_offset</phase_offset> 	<!-- [radians] -->
</timing>

Important:

  • synconpulse="true": The timing error will be reset at the beginning of a new pulse
  • The \freqoffset" node can be replaced with \randomfreqoffset" (its value will be the standard deviation)
  • The \phaseoffset" can be replaced with \randomphaseoffset" (its value will be the standard deviation)
  • If the clock frequency is not specified it will default to the system sampling frequency.

8. Transmitters

<transmitter name=trans_name type=trans_type pulse=pulse_name antenna=antenna_name timing=clock_name>
</transmitter>

Important:

  • Supported Transmission Types (transtype): "continuous", "pulsed"
  • "pulsename" is the name of the pulse that is to be transmitted and must be associated with a pulse that is defined within the current simulation environment.
  • If the transmission type is pulsed, then a "prf" child node must be included to specify the pulse repetition frequency
  • antennaname sets the transmission antenna to the one in the simulation environment with the given name
  • clockname associates the transmitter with the specified clock
  • The pulse repetition frequency will be rounded down to an even number of samples).

9. Multipath Surfaces

A single purely specular multipath surface is supported. Moreover, the surface is defined by the cartesian plane equation nxx+nyy+nzz+d=0. For example, to define the multipath surface in the xy-plane then a=0, b=0, z=1, and d=0.

The units are in meters [m].

The roughness factor is a normalised value between 0 and 1, where 0 is infinitely rough and 1 is perfectly smooth.

<multipath>
  <factor>roughness_factor</factor>
  <nx>a</nx>
  <ny>b</ny>
  <nz>c</nz>
  <d>d</d>
</multipath>

Good to know:

  • According to Marc Brooker's thesis, the FERS multipath implementation also models polarization effects .

Warning:

  • It has been noted that FERS tends to throw a segmentation fault when a multipath surface is defined.

10. Monostatics

<monostatic name=mono_name type=trans_type antenna=antenna_name pulse=pulse_name timing=clock_name>
  <window_skip>skip_time</window_skip>
  <window_length>recv_window_length</window_length>
  <prf>pulse_repetition_freq</prf>
</monostatic>

Important:

  • Supported Transmission Types (transtype): "pulsed", "continuous".

11. Platforms

Multiple simulation objects can be attached to a platform by including them as child nodes under the platform node. These objects will change their position and orientation as defined by the platform’s rotations and translations.

Position Waypoint

<platform name=platform_name>
  <motionpath interpolation=interpolation_type>
   <positionwaypoint>
    <x>x_position_0</x>
    <y>y_position_0</y>
    <altitude>altitude_0</altitude>
    <time>time_0</time>
   </positionwaypoint>
         .
         .
         .
   <positionwaypoint>
    <x>x_position_N</x>
    <y>y_position_N</y>
    <altitude>altitude_N</altitude>
    <time>time_N</time>
   </positionwaypoint>
  </motionpath>
</platform>

Rotations - Fixed (Constant)

<platform name=platform_name>
  <fixedrotation>
   <startazimuth>initial_azimuth_angle</startazimuth>
   <azimuthrate>azimuth_angular_velocity</azimuthrate>
   <startelevation>initial_elevation</startelevation>
   <elevationrate>elevation_angular_velocity</elevationrate>
  </fixedrotation>
</platform>

Rotation Waypoint

<platform name=platform_name>
  <rotationpath interpolation=interpolation_type>
    <rotationwaypoint>
      <elevation>elevation_angle_0</elevation>
      <azimuth>azimuth_angle_0</azimuth>
      <time>time_0</time>
    </rotationwaypoint>
         .
         .
         .
    <rotationwaypoint>
      <elevation>elevation_angle_N</elevation>
      <azimuth>azimuth_angle_N</azimuth>
      <time>time_N</time>
    </rotationwaypoint>
  </rotationpath>
</platform>

Important:

  • Supported interpolation types (interpolationtype): "linear", "cubic", "static.
  • Azimuth and elevation angles in radians.
  • Azimuth in the x-y plane (relative to x-axis).
  • Elevation in the x-z plane (relative to x-axis).