Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

Overview

The airside system is an autonomous perception-decision-control system that runs on the drone. All workers use local space except for flight_interface_worker. A diagram of the pipeline is shown below.

Multiprocessing

TODO R D : Link to multiprocessing page when written

Workers

flight_interface_worker

Interfaces with the flight controller. The output of the worker is used for perception; the input is used for control.

Task:

  • Telemetry:

    • Polls the common flight controller for drone telemetry

    • Converts the telemetry position from global to local

    • Timestamps the telemetry and sends it to the appropriate worker(s)

  • Commands:

    • Receives commands from decision worker

    • If applicable, converts the command from local to global

Input:

  • decision_worker: AirsideCommand

Output:

  • data_merge_worker: TODO: OdometryAndTime

  • decision_worker: Tuple of:

    • TODO: telemetry

    • TODO: waypoint state

    • TODO: command ready state

video_input_worker

Perception.

Task:

  • Gets frames from the common camera and timestamps them

Output:

  • detect_target_worker: ImageAndTime

detect_target_worker

Perception.

Input:

  • video_input_worker: ImageAndTime

Task:

  • Gets images and detect objects to create bounding boxes

    • There may be 0 object detections and therefore 0 bounding boxes in the list

  • Sends the bounding boxes and with forwarded timestamp

Output:

  • data_merge_worker: DetectionsAndTime

data_merge_worker

Perception.

Input:

  • flight_input_worker: OdometryAndTime

  • detect_target_worker: DetectionsAndTime

Task:

  • Gets telemetry data and bounding boxes along with their corresponding timestamp

  • Merges the telemetry data to the bounding boxes by closest timestamp

Output:

  • geolocation_worker: MergedOdometryDetections

geolocation_worker

Perception.

Input:

  • data_merge_worker: MergedOdometryDetections

Task:

  • Gets telemetry data and bounding boxes

  • Converts bounding boxes to locations in the world

Output:

  • cluster_estimation_worker: list[DetectionInWorld]

cluster_estimation_worker

Perception.

Input:

  • geolocation_worker: list[DetectionInWorld]

    • List length is the number of simultaneous detections in a single frame

Task:

  • Collects a scatter plot of locations of detected objects in the world

  • Estimates the location of each object

Output:

  • controller_worker: list[ObjectInWorld]

    • List is sorted in descending order of confidence (i.e. index 0 is best, 1 is next best, etc.)

decision_worker

Decision.

Input:

  • flight_interface_worker: Tuple of:

    • TODO: telemetry

    • TODO: waypoint state

    • TODO: command ready state

  • cluster_estimation_worker: list[PositionWorld]

Task:

  • Maintain model of world

  • Decide which landing pad to investigate

    • Search if there is no landing pad: TODO Write documentation

Output:

  • flight_interface_worker: AirsideCommand

  • No labels