Best gyro for frc.

I have been looking into different gyros online for an offseason project and am not sure which one to go with. The applications will be at least as demanding as FRC if not a good bit more. This means we would like minimal drift and for it to remain accurate under high acceleration.

Anyways could any teams who use gyros in their robot tell me which gyro they used and if they recommend it. (Shoutout to 1717 and 16, you all probably have good gyros for your swerve, it would be greatly appreciated info)


1538 had very good results with Analog Devices gyros.

I used a ADXRS453 for the NASA Sample Return Challenge this year and was impressed with the performance for the cost.

I had a opportunity to test several different gyros (from two different manufacturers) on an FRC robot for a personal project and like the others, I would recommend the Analog Devices gyros. The one I am currently using is the ADXRS450 (similar to the ADXRS453 above - except without the internal temperature compensation) and it works well. If price isn’t an issue, higher quality gyros are available with some excellent specs, however they typically run more than $1000.


We’ve been using that gyro as well, and it works incredibly well. Very low drift, very low acceleration -> yaw coupling.

2 years in on the same gyro for us, I wish we had used it with our swerve in 2012!

Is there a place to get an pre-made IMU for this gyro? Quick googling doesn’t seem to bring up anything state side.

The part # for the evaluation board is : EVAL-ADXRS453Z

Mouser and digikey sell these.

Never actually used this but I had it bookmarked to buy eventually.

We tried to use an MPU6050 breakout and arduino last year, but combining everything fairly difficult, so we just bought a nav6 from kauai
They’re $70, but designed to work with a cRio out of the box, and will probably work with an rRio with a serial cable. It worked over usb to my computer, and the new rio runs linux, so it should be fairly easy to set up.

We used it to make our swerve field-centric, and it only floats by a degree or two throughout the match, which is about as good as you’ll get with a cheap chip gyro.

If you want to make your own, arduino and an MPU6050 is a good place to start, there are several good libraries and explanations to get you up and running fairly quickly.

At some point, I’m going to make a board for it for the roboRIO. Given my schedule, don’t hold your breath for it… It will most likely be available through WCP.

If you want to use the arduino and the MPU6050 and assemble something yourself, I highly recommend you ensure that the interrupt pin from the MPU-6050 is connected to the Arduino. This will allow interrupt-driven operations which is the way to get good performance. If you go to the nav6 website ( you’ll see schematics that show how to hook it up. All the nav6 open source code is available there too - and it’s Arduino-compatible w/an Arduino UNO.

Do keep in mind that the MPU-6050 is a 3.3V part, and isn’t 5V tolerant, so you’ll need to take care of that. The nav6 does that, and also allows powering directly off the 12V robot battery.

One of the nice things about using the nav6 firmware, even if you assemble it yourself, is it will work w/all the WPI classes (java, C++) as well as w/the LabView VIs (these are also on the nav6 website). A few people who have the RoboRio beta systems are testing out the nav6 on the RoboRio, and although I haven’t got word yet how well it’s working for them we expect it should work just fine.

If you have any questions, please contact me at [email protected].

Hey Adam,

I noticed that the pin out on these gyros are different from the KOP sensor board. How would you interface these with the control system we have with FIRST. I know you have to set up a SPI connection with SCLK, CS, MOSI, MISO, I just have no background with this.

EDIT: Found it. For anyone who wishes to know how to wire the ADXRS453. It is just like the accelerometer. You will take the SCLK, CS, MOSI, MISO to the DIO pins 1-4, doesn’t matter really what order, and can power it from the 5V or Ground located below the DIO pin 1 location. Thanks all and hope this helps someone else out.

I assume you use the SPIDevice class in Java (for example)? If so, can someone with experience using the ADXRS453Z provide feedback on the correct bit order, clock polarity, clock rate, and frame modes?

Any sample code you code provide would be helpful, which could help avoid hours of troubleshooting.

This guy if you don’t want to use SPI:

EVAL-ADXRS642Z - about $75 from mouser, digikey, etc

Austin Schuh is really the best to answer those questions here.

Colin Wilson (254>973>254) made ours, and could also answer but he’s less active on here.

This is on my over-booked TODO list…

We had a co-processor reading it last year. We are putting together a board right now to interface one with the roboRIO. We’ll be releasing our beta test code closer to the start of the season. I expect that we should be able to interface with it over SPI.


Do you expect any differences between integrating on your co-processor and integrating with the accumulator in the FPGA, in particular with integral error and drift? What was the SPI bus clock speed/integral dt on your co-processor? Do you happen to know the SPI frequency on the roboRIO? (I think I saw 4MHz in a myRIO document…)


How reliable is this gyro as an analog voltage output? The gyro on the ADXL345 (FIRST Choice, etc) simply didn’t work for us, it had way too much drift to be useful. A typical 2-minute match resulted in >45 degrees of drift! Because of this, I’ve become skeptical of analog sensors requiring integration for attitude/position calculation (too much noise on the A2D probably led to these problems)


We integrated in software on our co-processor. Since the gyro is SPI, I’d recommend just doing the integration yourself in software on the roboRIO in a RT thread running at high priority. That’s what we’ll be doing. I like being able to audit the code, especially for something like a gyro where I’ve seen horrible bugs in the past. We got 2 ish degrees of error over 2 minutes with the ADXRS453.

I checked our uC code, and it looks like we read the gyro at 200 hz, and ran the bus at 7.5 MHz. 200 hz is above the gyro’s bandwidth, which is good.

The roboRIO’s maximum SPI clock rate is 500 KHz (as reported by WPILib’s documentation.) The datasheet for the gyro lists the maximum clock rate to be 8 MHz, but doesn’t list a minimum. This should be fine.

seg9585: This is a SPI gyro (digital). The ADC is inside the gyro chip, and seems to be very accurate from what I’ve seen.


Here is a nice one.