Design Requirements =================== The following requirements were set out for the development of Astoria. Minimum ------- - Run student code when a USB drive is inserted - Handle ‘Arena USBs’, herein referred to as metadata drives. - Make it possible for software updates to be delivered over USB - Provide an programmatic interface for a Web UI to receive data and control the robot. Additional ---------- These requirements are above the MVP requirements, but are aimed to be implemented too: - Ability to implement workaround for the PLOD bug - Ability to implement remote arena start mechanisms in the future - Live streaming of data for arena usage - Ability to control status LEDs (SB Power Hat style) - Command line interface in addition to the Web UI - Enable and disable the wireless interface depending on if we are in competition mode or not. Technical --------- These requirements are technical aims that have been incorporated into the design of the solution: - Where possible, no ‘polling loops’, using asynchronous or callback-based means where possible - Use of off-the-shelf components where possible - Standards-based protocols where possible, with schemas where required (e.g using Pydantic) - Modular - Avoid complex protocols where we can - Allow integrations to be written in other languages than Python (i.e Web UI in JS / TS)