Alternatives to RoboRIO or Robot Controllers

Hello all,

I am looking for an alternative to a roboRIO or some sort of middle interface for controlling robot hardware. I am on a college robotics team and competing in a competition which requires heavy computational power. I was on on FRC Team so I know about the roboRIO control system. It has to be able to handle high currents and high power motors.

Our current robot’s control system is very old (~10 years) and I am trying to convince other team members to upgrade the extremely outdated system. We have no code written for it so we might as well.

I want the robot’s main code to be running on a laptop (vision processing) while it connects to some sort of middle interface that connects to GPS, Motor Controllers, and Encoders. (maybe support of CAN as well?) Any suggestions or advice are greatly appreciated!

Drew Williams

The CTRE HERO ( is a popular option that has support for pretty much all you listed.

Alternatively, you can look for a team that can give you an old IFI controller or cRio, although that will have less functionality for your use case.

Thanks for the suggestion! I was looking at that and it looks like it only supports C#? Our project lead really wants to use python for everything. Is there a way that we can connect this to a PC and run code from there? I am not very familiar with .net. Or is this more of a stand-alone platform?

BeagleBone Black might be a good option. I believe most of 971’s code in 2014ran on it, and essentially the cRio was just an interface for motor controllers as per FRC rules.

That looks great! I think this is more what we are looking for. I like the fact that is just a barebone linux machine with a bit more robustness. The price point is also really great. I plan on putting together a little spreadsheet with price breakdowns of what we can upgrade for what price.

Please also check out the NI myRIO. You do get access to the FPGA.

I do like the simplicity of the myRIO as well. I don’t really like how it is not open source and it seems like there is little documentation for it besides outdated forum posts.

ATM it’s standalone, meaning you deploy your app onto the HERO and it runs your code (with debugger if you have Visual Studio attached).

I have a few customers who have taken a USB-to-TTL-serial cable and sent serial commands from PC-custom-app(USB COMM Port) to HERO (UART), UART example is on our GitHub.

Then you can develop in your host environment and do the actuator-related code in the HERO (like setting up Closed Loops, motion profiles, motion-magic settings for Talon SRX, pneumatics, collect and filter sensors, etc…).

Or go the other way and use HERO as an aid to port whatever Talon/PCM/PDP features to your platform.

Or use the HERO by itself as the robot controller. Recently FRC 900 (Zebracorns) posted a white paper on it…
…porting their 2014 robot from cRIO to HERO. One benefit to that is you can just plug in a wireless gamepad into the HERO without requiring a DS-PC or setting up a radio.

The good thing about that solution is that you can really easily set up actuators and motors like you said. I like that aspect a lot. Is there a way to mount an IMU or something like that? I see some breakout modules on the site. I assume we could hook up an IMU through DIO or something like that.

Sorry forgot to answer…

As far as IMU, we’re supporting our CAN based Pigeon IMU for HERO/roboRIO in the same fashion we support the other CAN devices. So think class object for PigeonImu, just like there is a class object for CANTalon or PCM. Documentation coming soon.

No Problem! Thanks for the advice!

1 Like

If anyone needs a replacement for a CRIO, we are currently using the robotopen shield.

It is currently discontinued, however the shield schematics are downloadable, and can be ordered from a custom board manufacturer.