Interfacing SoCs with the cRIO

Hi guys,
I am thinking about onboard vision processing on the robot, on something like a RPi or an oDroid. To impress my team enough to the point that they want onboard tracking would mean that I get the process done as easy as possible and as fast as possible. The main complexities of this system would be:
Connecting to the cRIO the easiest way possible
Powering the SoC and shutting it down safely

The main thing that I am worrying about is connecting to the cRIO. What do y’all say? i2C, UART, USB => RS232 => UART, SPI, DIO, Network, NetworkTables? Which is easiest to implement on the cRIO? Which is the most robust?

I am currently convinced that i2C would be the best bet because it is hardwired and there is already a port on the cRIO. Network Tables would possibly be a little slow. What do you guys think?

The type of communication you choose depends on what you are doing with the data. If you are using the image as the sensor in a closed loop system to set shooter angle (a bad idea due to the long and inconsistent processing time), I would say i2C would be better. If you are using a single image and calculating the appropriate angle from that, you might be better off with Network Tables and the guarantee of the data arriving. If someone could confirm that NT does a handshake, I would appreciate it.

Overall, I would suggest using i2C, DIO, serial, or another lower level system. It would probably be best to steer clear of the network.

Regarding the safe shutdown of the processor, two methods come to mind. The first method is to have a button on the dashboard or controller that sends a command over Ethernet for the processor to shutdown itself. This does rely on consistent human actions, however.

The other option is to build a custom circuit that acts like an uninterruptable power supply (probably capacitor based), or buy a small COTS UPS. Whenever the UPS looses power from the robot being turned off, the UPS would send a signal to the processor via DIO or some other method for the processor to shutdown. The UPS would then power the processor until shutdown occurs, then safely discharge. I was unable to find a rule that this custom circuit would break, but Al Skierkiewicz would be the best authority on the legality of a hardware solution.

My apologies on the long post.