[OUTDATED] CV Master Architecture + Feature Planning

System Overview:

  • Source Modules:

    • DeckLink: Receive video feed from the UAV.

    • FlightData: Receive flight data from the onboard autopilot.

    • UserInput: Receive user input.

  • Processor Modules: ? indicates possible but not confirmed module

    • Geolocation: Turn pixel coordinates into geographic coordinates

    • TargetAcquisition: Use ConvNet to identify target

    • GroundLocate?: Perform GeoPy calculations to identify bearing of tent relative to aircraft

    • Approach?: Handle taxi approach to the packages

    • Select?: Handle our package selection system

    • Command: Turn program instructions into flight instructions for the autopilot, i.e transmit coordinates and commands.

  • Control Modules:

    • Main Process: Central process that executes programs.

System Concepts:

  • Programs: Programs are held in the main process, they’re in concept, a series of instructions for how to use modules to complete a specific goal. They contain all module instantions, pipelines and calls to perform a task.

  • Modules: Modules have specialized tasks and are used to process or interpret data, whereas programs move data.

  • Process Control and Module Access: Modules are accessed by calling one public function that then controls execution. The public function will call all other required private member functions (private isn’t possible in Python but we will treat them as such). The module will then generate the required threads with the pipelines passed in and begin execution and feeding the pipelines. At no point are threads generated by the main process.

  • Asynchronous Operations: Asynchronous operations will be implemented with the Python threading library, the architecture we intend to use is producer-consumer via pipelines. This means that each thread will be a producer, consumer or both and therefore have one or more pipelines passed in on instantiation, which are then passed to threads. The threads then manage passing data along the pipeline from the first step in the program to the last. Note a pipeline is a threading concept, it is a class that serves to synchronize two threads and allow data to pass between them.

  • Singleton: All modules are only instantiated once, and therefore only one program is executed at a time. Program execution is controlled by user input.

Tasks:

Tasks will be broken down into “blocks”, tasks that need to be completed before other tasks can be completed. For example, a task in block 2 can start before one in block 1, using dummy functions, but it cannot be finalized until block 1 is complete. Planning for tasks in block 2 can occur before block 1 is complete, as well. Tasking will work bottom to top, starting at each module and working our way up to the main process. ? indicates lack of confirmation on tasking. Tasks are assigned by individual or subteam.

  • Block 1: Modules, Soft Deadline: February 21th

    • User Input Module → Atharva

    • TargetAcquisition Module → Addesh

      • This is just a wrapper of the YOLO functions provided in the prebuilt library we use.

    • Geolocation Module → Flight Team

    • Command Module + Flight Data → Command Team

    • GroundLocate → Search Team

    • Select → Taxi Team

    • Implement multithreading and instantiation architecture to each module → Shrinjay/Aryan?

    • Testing: Will occur after each module is completed, at discretion of team on feasability of testing at this stage. DeckLinkSrc is already implemented and is critical to test, alongside command, user input and target acquisition as these can be tested at this stage.

  • Block 2: Wiring, Soft Deadline: March 7th

    • Implement flight program → Flight Team

    • Implement search program → Search Team

    • Implement taxi program → Taxi Team

    • Implement helper functionality in main process → Shrinjay/Aryan?

  • Block 3: System Review, Soft Deadline: March 21st

    • A one-on-one review of each program, defining test conditions and additional unit + system tests if not already implemented → Shrinjay/Aryan as reviewers

  • Block 4: System Testing, Until Competition

    • Flight tests, reviews and modifications as needed.