Currently I working on a humanoid robot using inverted pendulum model and use LQR for walking stabilizer. Input u is Torque, State x is angle and angular velocity and y output is angle.

State Space with K gain feedback

I got the gain K value that meet my control specification (rise time, steady state error, etc) and the feedback control law like this

feedback control law

So now I got u(torque) value, but I don't know how to use u(torque) to move my actuator (to control 2 angkle servo) because my servo only move using angle as the command input, not torque. Is there any step that must be done to convert torque to angle? Or something? Thank You for the help, need this for my final project.

  • $\begingroup$ Probably the servo you are using is a hobby servo, that is different from the industrial servos. Industrial servos unlike the hobby servos have an accessible Torque/current input that make possible apply your control. Therefore, with the hobby servos you cannot implement that control scheme. $\endgroup$ – cyberdyne Jun 26 '17 at 20:32
  • $\begingroup$ After reading my last comment, you can follow this procedureto remove the internal controller where the conversion torque/angle is performed. In this way you will simply obtain a DC motor inside a case. At that point you should develop a power electronics circuit receiving the signal $u$ proportinal to the torque and then able to let each motor absorb the right current (in ratio with your signal $u$). $\endgroup$ – cyberdyne Jun 28 '17 at 16:15

The problem with most papers about LQR controller is, that they are describing only the half of whole problem. The key aspect of understanding LQR is that an additional "Finite State Machine" (FSM) is used which controls the robot. A good paper which combines LQR with FSM for bipedal locomotion is Bayesian Gait Optimization for Bipedal Locomotion.

The walking modes are given by the FSM and the parameters are optimized with Bayesian optimization. LQR means only that values inside the programcode are adjusted to the robot. This is good if the same code should control a 2 cm leg and also a 3 cm leg. But LQR itself isn't enough for controlling the robot. A dedicated sourcecode in form of a Finite State Machine has to be implemented first. That's the same principle like Walking with neural networks, machine learning or apprenticeship learning works. These stochastic optimization algorithm can only be used for subspace adjusting of a given robot controller.

† Roberto Calandra, Nakul Gopalan, Andre Seyfarth, Jan Peters, and Marc Peter Deisenroth


The servomotor is already a closed-loop servomechanism that uses position feedback to control its motion and final position. Your servo is an integrated servomotor, and then it contains the following equipment in a single package:

  1. a small closed-loop controller (e.g. PI) which regulates the physical greetness per kind of motor directly linked to the produced torque (e.g. the absorbed current of the internal DC motor). In the industrial servos, the controllers are a standard industrial component on power electronics components like MOSFETs or IGBTs;

  2. a rotable potentiometer feeding the current value of the angle back to the controller (so that you can also get the angle value over the command channel) and then closes the loop;

  3. The motor.

Therefore, in order to implement $u = -Kx$ you would need to get control of the signal (now computed by the internal controller) directly linked to the torque (e.g. the absorbed current in the case of DC motor).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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