given the following differential equation 2°ODE in the following form:

$\ddot{z}=-g + ( cos(\phi) cos(\theta))U_{1}/m $

found in many papers (example) and describing the dynamic model of a quadrotor (in this case I'm interested as an example only for the vertical axis $Z$) , I get the movement about $Z$ after integrating the variable $\ddot{z}$ two times. As control input I can control $U_{1}$, which represents the sum of all forces of the rotors.

A Backstepping Integrator (as in many of papers already implemented) defines a tracking error for the height $e_{z} = z_{desired} - z_{real}$ and for the velocity $\dot{e}_{z} = \dot{z}_{desired} - \dot{z}_{real}$ to build virtual controls.

Through the virtual controls one can find the needed valueof $U_{1}$ to drive the quadrotor to the desired height (see the solution later on)

But wait...as said above I need to track both: position error and velocity error.

Now I asked myself, how can I transform such equation and the corresponding virtual controls to track only the velocity??

In my code I need to develop an interface to another package which accepts only velocity inputs and not position information. I should be able to drive my quadrotor to the desired position using only velocity informations, tracking the error for the z displacement it not allowed.

The solution for the more general case looks like:

$U_{1}=(m/(cos(\phi)cos(\theta))*(e_{z} + \ddot{z}_{desired} + \alpha_{1}^{2}\dot{e}_{z} - \alpha_{1}^{2}e_{z} + g + \alpha_{2}\dot{e}_{z})$

for $\alpha_{1}, \alpha_{2} > 0$

I could simply put brutal the $\alpha_{1} = 0$ for not tracking the position on Z but I think that is not the correct way.

Maybe could you please point me in the right direction?


  • $\begingroup$ Are you saying you want to control the $z$ position but you only have feedback regarding the velocity $\dot{z}$? Does that mean you are assuming some initial condition and estimating your position based on integration of the velocity? $\endgroup$ Commented Oct 27, 2015 at 3:24
  • $\begingroup$ @BrianLynch, I think he's looking for velocity control to overcome the limitation of the joystick's workspace. This is the recommended way to allow the quadrotor to fly over long distances. $\endgroup$
    – CroCo
    Commented Nov 26, 2015 at 4:20

2 Answers 2


Now I asked myself, how can I transform such equation and the corresponding virtual controls to track only the velocity??

Actually deriving the tracking error of the velocity is much simpler than its position counterpart. In the same manner of deriving the position, you could derive the velocity. Start from the velocity and ignore the position which means you only need one Lyapunov function. Note with the position, you need two Lyapunov functions.


Proces of integration is associated with error accumulation even with more advanced algorythms like RK4. You need another sensor to avoid that and use sensor fusion algorytm (complementary filter or Kalman Filter) to merge the data. You can use sonar to detact distance to the groudn or barometer and differentiatite it to get velocity.

When you get that use regulator to control it's velocity, diference in velocity bacame your error.


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.