We have tested the new ADIS 16470 chip on our robot. (Thanks for the chip!) Unfortunately, the issues still persisted. Most notably, we find the symptoms of the gyroscope as 3 main issues:
- Incorrect device ID
- Invalid checksum
We speculate that they may be caused by the same source of error.
Our first test ended in failure when we first tried to read data, using the original library. The new ADIS gyroscope is not found. Upon further investigation, we found that the product ID returned by the gyroscope is 88. In the next attempt, it returned 114. The source code registers the correct ID as 16982.
After bypassing the ID check in our (now modified) library, ‘invalid checksum’ was the next error that showed up. In two more tests, we output the values of the checksum to the following files: Test2.csv and Test3.csv. We observed that the calculated checksum is always incrementing, while the IMU checksum is generally constant.
After bypassing the checksum, we found that dt=0 is still occurring, as observed in the clip attached (smartdashboard recording). In the 4 seconds, we were actually moving the robot on the Z-axis. However, not only did the gyroscope reading remain unchanged, dt was at 0.0 most of the time, while occasionally jumping up to 9.7E-5.
We have compiled a number of different possibilities of the source of error. These possibilities are not equal in likelihood, however. They are merely our speculations.
- Incorrect installation procedure
- Damaged chip
- Damaged RoboRIO
- Bad Chip/Board design
- Outdated driver/firmware (ADIS library, WPILib, RoboRIO image)
- Algorithmic Error (Checksum)
- High CPU usage/Interruption (*CPU usage is still never lower than 65%)
- Corrupted Buffer
Software Versions used in the tests:
- WPILib: 2019.4.1 (Java 8)
- Driver: 2019-r2 (modified for debug)
- RoboRIO image v14
Please review the data provided.
Thank you for your time.test2.csv (44.1 KB) test3.csv (49.1 KB) recording-20.27.47.sbr (10.6 KB)