Architecture of the Telemetry Processor

Architecture

Modules

Live Telemetry Receiver

The live telemetry receiver is responsible for handling messages coming in from the telemetry socket. Messages from this ZMQ subscriber are deserialized into the proper structure and passed to the LTR which is then responsible for a few things. First, camera field of views are projected to estimate a covered region. Second, the current gps velocity and acceleration is used to make a prediction as to the future flight path of the aircraft. Other pieced of telemetry are interpreted to produce some higher level data, such as plane heading, altitude above site, etc.

All of this information is packaged into a JSON object which is serialized to a string to be pushed through a websocket for the user interface.

Additionally, if the metadata indicates that images were triggered for that sample, the LTR will extract the frame's UUID, enter the frame in the database and send the telemetry sample's UUID over a crossbeam channel to the ImageMatchProcessor.

Live Image Receiver

Similar to the LTR, the Live Image Receiver is responsible for handling the ImageMatch messages published by the Acquisition Controller. Those messages relate a set of image details (camera, serial number, file path, UUID) to a telemetry UUID. The LIR is responsible for extracting the telemetry UUID and sending the image details with the telemetry UUID to the ImageMatchProcessor over a crossbeam channel.

Image Match Processor

Running is a separate thread from the ZMQ subscriptions, the Image Match Processor is responsible for entering the image details in the database. To achieve that, the IMP will inspect the receiver of the LIR and LTR channels for common telemetry UUIDs. When a match is found, the IMP will compute a field of view projection for each image in the details, write that field of view to disk next to the image, and insert an entry in the database tracking that image, the file on disk and the field of view.

Site Manager

The Site Manager is responsible for identifying the closest site to the current position. Only sites in the currently active mission, as received from the middleware, are considered in this matching algorithm. It does so by evaluating the distance between the current position and each site in the currently active mission, and selecting the shortest distance. The elevation of this site is then fetched from the mission data and stored in cache for the field of view projection operations.