Self Balancing Robot MPU6050 Positioning / CG

So this topic came to my mind and I wanted to share and talk about it to see
the other people opinions what is the best positioning of a Gyro in a self balancing robot.

You can see a picture that I made not high artist just simple paint tools.

As we may know there is already manufactures that create segways, segways without stick
which they call it hover board..etc While a person get's on the top of the segway the CG
(center of gravity changes) and goes really high but the sensors Gyro is really low and we
still can see a great balance.

In the picture we can see:

  • Top of the robot
  • Bellow top / above CG
  • CG
  • Bellow CG / bottom of the robot body / center of wheels

Question: Which do you think is the best option to position a MPU6050 to get the data and
process them (I know you may say that that's not a problem the changes can be done from code ..etc
but what would be the best position)

As well we can see the CG and we know the lower the CG the best results we will have and
we can see it in the segways which they have the CG bellow the center of wheels. But what if the
CG goes really high or even on top of the robot, will that affect the Gyro readings and that's
the real question of where to place it.

We often can see how people place on the top of the self bal. robots objects to balance.


An interesting question. I think that two sources of acceleration should be considered, i.e. the inclination of the pilot or stick, and the accelerations caused by the motorized movement. Mounting to the wheel center should allow to compensate/eliminate in software the acceleration caused by forced movement. But I may be wrong?

A gyroscope measures rotation, and should not be affected much by linear accelerations.

Of course acceleration is a important value but balancing a robot or a segway as example the
acceleration doesn't play big role, we use acceleration only when we want to move but again
we can just tilt the segway forward and it will accelerate only because it's out of balance so
or using a button to change the setpoint making it accelerate.

Imagine you have a 5Kg ball on a stick and you try to balance it with your hand, the center of gravity
of that stick is really high / on the top a gyro position plays big role and performance.

Do you see the difference between static acceleration (gravity) and dynamic acceleration (movement)? An IMU reports both, it cannot distinguish the source of the measured accelerations. Inclination causes a static acceleration, from gravity and the angle of the inclination.

Also you don't move the 5kg ball directly, instead you move the contact point of the stick so far away, that gravity will drag the ball into the opposite direction.

Actually, one of the most important reasons for putting it near the axis of rotation is so the IMU doesn't capture noise that is naturally amplified at the outer edges of rotation.

I'm interested in what answer you finally came up with.

I had read somewhere that putting the IMU as far up from the center of rotation was preferred because tilting motions of the bot would be most noticeable. But upon reflection, I wonder how much this would really matter. I suppose linear acceleration as it tilts is greater the higher up you go, but the tilt angles would actually be the same.

I'm also fascinated by someone's comment about putting a second IMU down as close as possible to the center of the ball, so that you could measure the actual linear motion of the ball. I'd love to hear how that would play into programming the stability of the bot.

Most probably the project died about two years ago.