Click or drag to resize

Platforms and Antennas

In order to represent antennas in the Communications Library, Platforms are used to specify the position and orientation while an ObjectExtension defines the transmit and receive functionality, making the Platform a functional antenna. Though a Platform can also be used to describe a spacecraft or ground facility, the Platforms used here represent the antennas themselves. So, if the user wants to define an antenna with respect to a spacecraft, two Platforms will be involved unless the position and orientation are identical.

Note Note

The functionality described in this topic requires a license for the Communications Library.

Antenna Extensions

RadioFrequencyTransmittingAntennaExtension takes a SignalProcessor, to define the signal to transmit from the antenna, and a RadioFrequencyGainPattern, to define the antenna gain as a function of the angle of transmission with respect to the boresight (z-axis) of the Platform. When a wireless link asks its transmitter for a set of signals to propagate, the link feeds its geometry to the RadioFrequencyTransmittingAntennaExtension and gets a set of signals with the appropriate gain applied.

RadioFrequencyReceivingAntennaExtension produces a SignalProcessor to represent the output of the antenna. When that output is evaluated, the extension asks the SignalPropagationGraph for all the links containing the extension's Owner (get). From this list, the extension looks for the AccessConstraintsExtension and the AccessResultExtension (precomputed access) to determine when each link is able to produce signals. Then, it obtains the geometry from each link, applies the RadioFrequencyGainPattern to the corresponding signals, and adds any antenna noise onto the signals before producing them as output. The NoiseTemperature (get) on the signals coming out of the antenna extension represents the equivalent noise temperature of the incoming signal plus the noise temperature of the antenna itself.

Code Sample
Java
// Set up a platform to use as an antenna
Platform xmtrLosAngeles = new Platform();
xmtrLosAngeles.setLocationPoint(new PointCartographic(earth, losAngelesCoordinates));
xmtrLosAngeles.setOrientationAxes(new AxesVehicleVelocityLocalHorizontal(earth.getInertialFrame(), xmtrLosAngeles.getLocationPoint()));

// Choose a gain pattern for the antenna
GaussianGainPattern antennaPattern = new GaussianGainPattern();
antennaPattern.setDiameter(1.0); // meters
antennaPattern.setEfficiency(0.55); // percent
antennaPattern.setBacklobeGain(0.001); // Watts (-30 dBW)

// Create an extension to make the "uplinkXmtrAntenna" Platform into an antenna
RadioFrequencyTransmittingAntennaExtension transmitterAntenna = new RadioFrequencyTransmittingAntennaExtension();
transmitterAntenna.setAntennaGainPattern(antennaPattern);
transmitterAntenna.setInputSignalProcessor(signalProcessor);

// Add the extension to the antenna Platform
xmtrLosAngeles.getExtensions().add(transmitterAntenna);

// Create a platform for the receiver
Platform rcvrPhiladelphia = new Platform();
rcvrPhiladelphia.setLocationPoint(new PointCartographic(earth, philadelphiaCoordinates));
rcvrPhiladelphia.setOrientationAxes(new AxesEastNorthUp(earth, rcvrPhiladelphia.getLocationPoint()));

// Create a receiving extension for the "downlinkRcvrAntenna" Platform
RadioFrequencyReceivingAntennaExtension receiverAntenna = new RadioFrequencyReceivingAntennaExtension();
// Use the same gain pattern as above or specify a new one
receiverAntenna.setAntennaGainPattern(new IsotropicGainPattern());
receiverAntenna.setAntennaNoiseTemperature(290.0); // 290 Kelvin equivalent thermal noise
rcvrPhiladelphia.getExtensions().add(receiverAntenna);
// Connect signal processors to the antenna output
ConstantGainAmplifier amplifier = new ConstantGainAmplifier();
amplifier.setInputSignalProcessor(receiverAntenna.getOutputSignalProcessor());

Polarization

STK Components computes polarization efficiency, which is a quantity between a transmitter and a receiver based on their polarization types, positions, and attitudes. To calculate the polarization efficiency, the angle between the transmitter's and receiver's E-field vectors in the plane perpendicular to the line of sight is computed. This angle is then used to rotate the Poincaré sphere representation of the transmitter in the receiver's coordinate system. The polarization efficiency is calculated dynamically on a scale of 0 to 1, where 0 is no match and results in no received signal, and 1 is perfect (no loss). To allow for cross polarization leakage, the minimum polarization efficiency is controlled by the CrossPolarizationLeakage (get / set) property of the RadioFrequencyReceivingAntennaExtension or OpticalReceivingAntennaExtension. So, for example, if the source polarization is left hand circular and the receive polarization is right hand circular, the polarization efficiency will be evaluated as the cross polarization leakage value.

Note Note

Reference: See Kraus, John D., Antennas, 2nd ed., New York: McGraw-Hill (1988), pp. 70-73.

In order to model signal power loss due to polarization efficiency between the transmitter and receiver antennas, a PolarizationSource can be configured on the RadioFrequencyTransmittingAntennaExtension or OpticalTransmittingAntennaExtension and the RadioFrequencyReceivingAntennaExtension or OpticalReceivingAntennaExtension. The polarization efficiency will only be accounted for if both the transmit antenna and the receive antenna are configured with a PolarizationSource. The library contains two PolarizationSource types which provide an evaluator for evaluating polarization over time based on link geometry:

Polarization is a property of an electromagnetic wave that describes the orientation of the electric field vector with reference to the antenna's orientation. The three basic types of polarization are illustrated in the following figure:

Polarization Types

In the illustration of linear polarization, the electrical field is polarized in the y direction in the coordinate system. In special cases of linear polarization, the electrical field is aligned vertically or horizontally with reference to the antenna. In the other two types of orientation shown, the tip of the E vector describes an ellipse and a circle, respectively, as it rotates over time. Circular polarization can be right-handed or left-handed (as in the illustration).

Polarization Types

The following figure illustrates tilt angle and axial ratio for the elliptical polarization type:

Polarization Parameters
Java
// Set up a platform to use as an antenna
Platform xmtrLosAngeles = new Platform();
xmtrLosAngeles.setLocationPoint(new PointCartographic(earth, losAngelesCoordinates));
xmtrLosAngeles.setOrientationAxes(new AxesVehicleVelocityLocalHorizontal(earth.getInertialFrame(), xmtrLosAngeles.getLocationPoint()));

// Choose a gain pattern for the antenna
GaussianGainPattern antennaPattern = new GaussianGainPattern();
antennaPattern.setDiameter(1.0); // meters
antennaPattern.setEfficiency(0.55); // percent
antennaPattern.setBacklobeGain(0.001); // Watts (-30 dBW)

// Create an extension to make the "uplinkXmtrAntenna" Platform into an antenna
RadioFrequencyTransmittingAntennaExtension transmitterAntenna = new RadioFrequencyTransmittingAntennaExtension();
transmitterAntenna.setAntennaGainPattern(antennaPattern);
transmitterAntenna.setInputSignalProcessor(signalProcessor);
transmitterAntenna.setPolarizationSource(new ConstantPolarizationSource(new RightHandCircularPolarization()));

// Add the extension to the antenna Platform
xmtrLosAngeles.getExtensions().add(transmitterAntenna);

// Create a platform for the receiver
Platform rcvrPhiladelphia = new Platform();
rcvrPhiladelphia.setLocationPoint(new PointCartographic(earth, philadelphiaCoordinates));
rcvrPhiladelphia.setOrientationAxes(new AxesEastNorthUp(earth, rcvrPhiladelphia.getLocationPoint()));

// Create a receiving extension for the "downlinkRcvrAntenna" Platform
RadioFrequencyReceivingAntennaExtension receiverAntenna = new RadioFrequencyReceivingAntennaExtension();
// Use the same gain pattern as above or specify a new one
receiverAntenna.setAntennaGainPattern(new IsotropicGainPattern());
receiverAntenna.setAntennaNoiseTemperature(290.0); // 290 Kelvin equivalent thermal noise
receiverAntenna.setPolarizationSource(new ConstantPolarizationSource(new LinearPolarization()));
rcvrPhiladelphia.getExtensions().add(receiverAntenna);
// Connect signal processors to the antenna output
ConstantGainAmplifier amplifier = new ConstantGainAmplifier();
amplifier.setInputSignalProcessor(receiverAntenna.getOutputSignalProcessor());