I’m in the early stages of designing a self-balancing robot as a way to refresh my knowledge on control theory, which has been gradually slipping away since graduating about a year and a half ago. I'm wondering if anyone has any input on how best to approach this problem.

My plan is to use a 6 DOF IMU as an angle sensor, and to control the pitch by accelerating and decelerating the cart. I'm looking for robust response to disturbance, and to add in RC differential drive capabilities later on. This block diagram is a pretty close match for what I was planning to do, (source: Sebastian Nilsson's Blog):

Source: Sebastian Nilsson’s Blog

Would this be a good approach? Any recommended alternatives? Thanks.


I can recommend an alternative which has worked for me quite well.

I derived the dynamical model of a inverted pendulum, then linearised it around the stable operating point. With this simplified model I found the LQR controller which keeps my robot upright and tracks my desired linear and angular velocities.

The robot working: https://www.youtube.com/watch?v=USnkWeM0EHY

For learning more about control, linearising and LQR: https://www.coursera.org/learn/mobile-robot

For specific example with self-balance robot: Lecture 4.4 – The Segway Robot of the same course.

The paper which I based my derivation of the dynamical system: Dynamic Analysis of a Nonholonomic Two-Wheeled Inverted Pendulum Robot, YEONHOON KIM*, SOO HYUN KIM and YOON KEUN KWAK, Journal of Intelligent and Robotic Systems (2005) 44: 25–46

| improve this answer | |
  • $\begingroup$ I haven't had any exposure to LQR control, and the main purpose of the project was to refresh my memory on concepts that I went over in school (PID, lead-lag, etc.). I recognize that LQR would be the more elegant solution, and might move forward with that approach after, but some input on incorporating PID control would be appreciated as well. Thanks for the sources, I'll certainly be looking into them. $\endgroup$ – Jeff Jan 8 '17 at 19:08
  • $\begingroup$ Then the approach you listed should be good as a start. Start inside out, with just one PID (angle PID), then add the outside one. Have fun $\endgroup$ – vmatos Jan 9 '17 at 11:02

I would say gyroscopes, they are what is used in every other engineering discipline. However, I have no experience using gyroscopes with robotics.

| improve this answer | |
  • $\begingroup$ I'm using a gyro/accelerometer combo for "pendulum" angle measurements, and motor encoders for position measurements. $\endgroup$ – Jeff Jan 8 '17 at 19:08
  • $\begingroup$ @Jeff that's not a real gyroscope, this is a real gyroscope cyberneticzoo.com/walking-machines/… $\endgroup$ – Pete Kirkham Jan 12 '17 at 13:57
  • $\begingroup$ Welcome to Robotics Jameson Dennelly. Thanks for your answer but we are looking for comprehensive answers that provide some explanation and context. Very short answers cannot do this, so please edit your answer to explain why it is right, ideally with citations. Answers that don't include explanations may be removed. $\endgroup$ – Mark Booth Apr 12 '18 at 10:45

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