Self Balancing Robot using LQR


First of all thanks for all the posts related to self balancing robot on this forum. I was able to build my own self balancing robot using PID control from the information given in those posts. But most of them use PID control method for the task of self-balancing. I want to implement LQR control method for this same task. I was not able to find good resources for this. Can anybody please help me with this?

I will answer my own question :P

Following papers were quite helpful for me

Thanks, very interesting!!

Iam building a self balancing robot but the problem is the two motors speed is not the same exactly iam using L293D motor driver and arduino uno . When we give low RPM one of the motor drives more current than the other and it rotate little bit faster.

From the research I have done on this, when one motor is slightly faster or slightly slow, I have seen this code modified.

LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4, 1, 1)

The trailing 1, 1 is the speed to each motor.

The LMotorController.h file reads each of the variables and applies the correct value based on the PID.

In this case, 1 meaning ASBSpeed of the right wheel and 1 meaning ABSSpeed of the left wheel.

By changing to .9, 1 you should see the desired results.

Of course this is based on reading about the FRANKO code.

I have use matlab to find gains for inverted pendulum, but now I am not getting how to transfer or use that gains in arduino.