I want to design a LQR controller for my two wheeled mobile robot. While designing the controller, I need to find gain, K for the LQR which this required the state space model of wheeled mobile robot. My question is how to find the matrix A, B, C and D for this nonlinear system by using the equations below.

enter image description here

The outputs are x, y and theta while inputs are v and w.

  • $\begingroup$ A bit pushed for time right now, so can't really write a decent answer. Does this paper help? $\endgroup$ Commented Mar 13, 2018 at 4:59
  • $\begingroup$ Thanks sempaiscuba! But my wheeled robot is not a bicycle. $\endgroup$
    – user19871
    Commented Mar 13, 2018 at 5:09
  • $\begingroup$ You can't. This system is nonlinear. You have to options. The first one is to linearize the system. The second is to design nonlinear controller. Also, it seems $v,w$ are the inputs and $x,y,\theta$ are the outputs. $\endgroup$
    – CroCo
    Commented Mar 13, 2018 at 14:25
  • $\begingroup$ Yes sorry my bad. The input is v and w while output is x,y and theta. Croco I know there is a way to linearise the equation but how to linearise it? $\endgroup$
    – user19871
    Commented Mar 13, 2018 at 15:19
  • $\begingroup$ What you are looking for is probably feedback linearization. You will probably also find a more specific approach to your problem when searching for "feedback linearization unicycle". $\endgroup$
    – fibonatic
    Commented May 31, 2021 at 10:50

1 Answer 1


Unfortunately, you're trying to apply a linear controller (the L of LQR) to a nonlinear system. In general, this doesn't work.

As an approximation, you could linearize the system. If the nonlinearities are small it's common to linearize about a nominal point such as $\theta=0$, but in your case this might not work well since it would eliminate any lateral dynamics. $$ \begin{align} \dot{x} = v \\ \dot{y} = 0 \\ \dot{\theta} = \omega \end{align} $$

Another option would be to linearize every timestep. This could get expensive though as your feedback gain matrix, $K$, also needs to be recalculated each time.

Finally, a middle ground could be to linearize about several predefined points, e.g. $\theta=[-20,-15,-10,0,10,15,20]$. At each timestep you would separately compute the control action using the $K_j$ computed for each of these linearization points and then interpolate between those values based on the current $\theta$.


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.