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)