Let us assume we have a two 2-DoF robot. Both axes rotate around x. And the goal is to measure the joint angle values with the roll value from IMUs attached on each link.
However, the problem is that the roll value of the second IMU also increases whenever the first axis rotates.

Am I missing here something?

Above you can see the two links. The yellow points are the center of gravity points where the mpu-6050 is placed on. So whenever the first axis rotates, the second roll is changing...I am not using any fancy algorithm to measure the roll, just the standard MPU6050_DMP6.

  • $\begingroup$ The roll increases on the second axis, (which isnt moving) while the first moves? Or are they coupled in some way and the second axis is also rotating? Then itd be clear the second axis will also show a change $\endgroup$ Aug 19, 2019 at 17:46
  • $\begingroup$ Are you only measuring gyro aswell? $\endgroup$ Aug 19, 2019 at 17:47
  • $\begingroup$ Yes, the roll increases on the second axis, (which isnt moving) while the first moves and I am using a 6-DoF IMU. So the gyro is also measured and used. $\endgroup$
    – Joe
    Aug 19, 2019 at 17:48
  • $\begingroup$ If you rotate the robot by hand in the air (assuming its so small...)are you getting a change in gyro? Are you using a comp filter, or something fancy? I assume this is a balancing robot and you’re calculating the body angle via inferred wheel angle? Or why are the axis parallel and require seperate measurement? My guess is either wiring is bad, and you’re reading the wrong signals, or your filter/observer is too heavily dependent on gyro/or accel which is reading some kind of movement....maybe if you post some code or maths of what you’re doing and the signals i could help more.... $\endgroup$ Aug 19, 2019 at 17:55
  • $\begingroup$ Right now we can only shoot in the dark, as ideally you shouldn’t be reading anything from something that doesnt move. $\endgroup$ Aug 19, 2019 at 17:57

1 Answer 1


"roll value of the second IMU also increases whenever the first axis rotates" — yep, that's how it always is. For the second joint, obtain the difference in the roll angles from both the IMUs. You're looking for the roll angle of IMU2 relative to roll angle of IMU1.

  • $\begingroup$ But then it means that the rotation of the first axis causes exactly the same roll values on both IMUs : let's assume the first axis rotated for 10 deg. around x axis -> the first roll is 10 deg. and the second axis didn't rotate but because of the first axis it's roll is at 8 deg. Now, the second roll becomes -2 deg. ? $\endgroup$
    – Joe
    Aug 20, 2019 at 16:26
  • $\begingroup$ At the home position, what are the IMU readings? $\endgroup$
    – abhishek47
    Aug 21, 2019 at 15:10
  • $\begingroup$ Right after the calibration, the reading values (roll, pitch ,yaw) are all equal to zero. After rotating the first axis for 10 deg. the second roll is about at 8 deg. I think the deviation comes from the gyro. Since the first and second axes are physically connected, the acceleration values should be the same although the IMUs are differently positioned. But the gyro values can not be the same because the 2. gyro is placed on the center of gravity of the second link. $\endgroup$
    – Joe
    Aug 21, 2019 at 15:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.