I am working on a project using an IMU6050 (at the moment) and I am not sure if it is possible to achieve what I need with a mems type unit. I admit that I do not have a formal mathematics background that gets into Quaternions, proper math notation and such but I do have a grasp on coordinate systems and their matrix, vectors, Euler angles, roll-pitch-yaw, gimble lock...etc
Project details and what I am trying to achieve:
- The system will be in a vehicle and used simply for data collection.
- I need pitch angles that are NOT affected by vehicle physical acceleration and deacceleration.
- I need roll angles that are NOT affected by cornering.
- There is a small user display screen but that I have a handle on it.
- The system needs to report accurate Roll and Pitch angles while going up and down hills, tilted in off camber while moving and accelerating/deaccelerating.
- The Roll and Pitch should always be in reference to the calibrated zero plane or base calibration matrix((1,0,0),(0,1,0),(0,0,1)) as I call it.
- Currently I am not in need to heading(yaw).
- Currently have a Nano but will most likely be moving to something like a esp32.
What I have done and tried:
- Using standard libraries MPU6050, EasyMPU6050(including MPU6050_6Axis_MotionApps_V6_12), and Kalman Filter Library and many others(these plus maybe 5 more).
-Testing input from IMU 6050 using any library that uses the MPU on the 6050 proves to be unreliable as the system will lock up after a random amount of time (3 seconds to 10 minutes) and I believe this is due to an unresolved issue with communications. I have not been able to determine if MPU output from the 6050 will provide output I can use.
- Using libraries that apply complimentary, or Kalman filters do not achieve the roll and pitch that are not affected by the vehicle's acceleration. I understand the principal of how these filters are working(I think), but trying to tune the parameters never results in usable values for me.
I see projects where people are using a imu of some type or another(imu6050, 9250, Bno055..etc) for camera gimbal applications where for example motorcycle acceleration does not affect the pitch of the unit. I just don't know how exactly they are accomplishing it. Drones are another example I think that must probably deal with this same issue.
I have read many many 10+ papers on IMU and roll/pitch but I am failing to find any that relate to what I am trying to solve. Or I am not understanding something fundamental. I have also read 50+ different tutorials, threads, videos..etc over the last 2+ weeks trying to find something that relates.
I am asking:
1- Is this really possible with some degree of precision (1-2deg) using a low cost mems unit.
2 - If so - can someone can help point me in the proper direction to understand what concepts that I am missing or not understanding properly to continue with my project.
3 - I have found several threads about the I2c-imu lock up issue and it seems that there has not been a solution found for it yet. I have not gone into detail here about it because I am not sure it solves my issue anyhow.