I think I understand where your going with wanting to read the IMU data, but what are your requirements?
Do you need to get acceleration data, and rotation data, or just rotation data?
The mechanical center of the robot should not matter for rotation data, but it defiantly matters if you are trying to get acceleration.
An alternate solution that I’ve done (and I think this is in the post too) is to define a variable, say Z, and have it read another axis, like X. That way you don’t need to play with the I2C bus.
I completely agree with @techy-robot, the requirements are incredibly important when it comes to reading the IMU data. If you just want Yaw (Heading) data, the FTC SDK already uses the IMU to detect the force of Gravity to perform orthogonal or non-orthogonal translations and provide a consistent Yaw (Heading) value. However, dealing with accelerometer data can be pretty tricky in defining axes information and rotation with the current SDK APIs.
If you can wait a day or two, I would recommend holding off until SDK 8.1 is released. The SDK 8.1 has a new universal IMU interface that has been rethought from the ground up, and it seamlessly provides an intuitive interface for configuring IMU orientation information. There’s already even a tutorial for using the universal IMU interface published on ftc-docs, even though the SDK 8.1 has not been released yet (it’s close behind!). Check it out: https://ftc-docs.firstinspires.org/programming_resources/imu/imu.html
That is an interesting and welcome update. It will make it much easier for programmers such as me and @pdi to set the IMU up. It will be a nice change for me to remove all the extra code I have from previous years, once potential bugs are worked out.
Tip: Never throw away old code .