This reply largely exists for posterity, considering members of this thread have likely graduated, but I will leave this for any people who stumble onto the thread as I did.
My team has used AI models trained offline in Keras from Tensorflow for the past two years to accomplish relatively simple tasks. In Tipping Point, it took all sensor inputs and output the desired state of the claw pneumatic (Grab MOGO/Release MOGO). In Spin Up, we took three distance sensor values and had the network output a drive state (Full speed back, half back, none, half forward, full forward) to block disks being shot toward the goal in autonomous. Both had success theoretically (96-98% training accuracy) and practically (blocked multiple disks at worlds).
We started with a simple ANN using Dense layers or RNN with LSTMs and built using a sequential model in Keras. Once the network architecture was determined, we added code to export the resulting model to a .model file to be loaded onto a microSD card. This exporting process was accomplished using a slightly modified version of [Keras2Cpp] (GitHub - gosha20777/keras2cpp: it's a small library for running trained Keras 2 models from a native C++ code.). Essentially we cut out lines of code that through errors until the model exported correctly. Incredibly unprofessional but hey, I was only a sophomore. Once loaded onto the microSD, the file was opened using Keras2Cpp inside our robot’s code and inferences were run every loop using an input array of sensor values (repeated every 20-40ms). There was never any increased latency between controller movements and robot actions, suggesting it could handle the calculations just fine.
However, because of the sketchy nature of using random open source code that has not been developed for a significant amount of time, we decided to simplify the process to create these models and create copilot. The repo can be found here. This code creates basic models trained offline in python and exports the weights in a readable weights.txt file, simplifying debugging and decreasing memory usage. This method offers less customization/advanced techniques, but is a far better starting point.
I am just realizing after typing all this that it moves the conversation to the top of the forum, so pardon my revival of such an old topic.