The AutoKit (Automation Kit) is a platform that enables hands-free, automated interaction with electronic hardware. It's a package of hardware and software with a simple interface.
The goal is to have a "standard" package that can be used in a range of automation use cases, such as automated testing. There are many ways one could create a device that fits with their specific scenario - however, AutoKit should provide a "one-box" solution that can be shipped and deployed, with confidence that it will provide some clearly defined capabilities, with a clearly defined interface. Those without the hardware, software knowledge or time to develop their own automation tool can simply use this one.
Another goal is to manage AutoKit as a platform - users should be providing feedback, and community contribution should be enabled and encouraged. This is the only way to scale the platform and let it become the "general" solution for automated interaction with hardware.
Based on these goals, the architecture should keep the following mantras in mind:
AutoKit is designed around a USB hub and a collection of USB devices. The hub is connected to the a computer that will run the AutoKit software suite, while the USB devices connect to the hub and implement the "actions" that one would want to automate on the DUT.
The suite of hardware currently envisioned:
USB is a standard interface, and there are many sensors and actuators that use USB. Using USB lets any device act as the host for the automation kit - a laptop, a Raspberry Pi, a NUC, an etcherPro...
There may be devices that are "better" for a specific use case than a USB equivalent - for example, perhaps a CSI camera provides higher bandwidth than a USB one. However, not all host devices may have a CSI port. Making exceptions for interfaces like this is a slippery slope, and the danger is that we're left with a big collection of different interfaces, instead of one universal one.
These are the first proposed features for AutoKit. These are based on the project's initial purpose, which was a tool to automate the provisioning and testing of embedded Linux SBCs.