Hi Mike,
I'm happy to try to help, I think using navX-Micro in BEST would be interesting.
We've developed I2C implementations for FRC and FTC, so it's definitely possible.
The basic code structure in both cases is an IO thread which executes every 1/user-selected-update rate (typically 50Hz is fine, but the sensor supports up to 200Hz).
Each update period, the sensor performs an I2C burst read transaction w/the navX-Micro.
What language would you use for the code? For this discussion, I'll assume C++.
The FRC C++ Library source code that acquires data over I2C is
here.
The code that decodes the register data into meaningful values is
here.
This code uses protocol header files found
here, which document the various registers as well as provide encode/decode functions.
And the register protocol documentation is
here. This documents the I2C address, and the various registers.
And finally for reference, the FTC C++ Library source code (java) that acquires data over I2C is
here. There's a class called
navXIOThread that manages an IO thread somewhat similar to the C++ version above. One interesting thing here is that FTC doesn't have a PID controller, so this thread can optionally call back to other software (in this case the PID controller) whenever new data is acquired. Don't know if BEST provides something like that, but if not you might consider this.
I'm here to help and happy to review what you come up with, and would be thrilled to learn more about what Kauai Labs might be able to do to help out students in BEST.
Cheers,
- scott