paparazzi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Paparazzi-devel] Time step consistency on AR.Drone 2


From: Eric Poppe
Subject: [Paparazzi-devel] Time step consistency on AR.Drone 2
Date: Thu, 8 May 2014 15:27:57 +0000

Hi all,

I have a question about running Paparazzi on the AR.Drone 2 in raw mode. For my master thesis I am developing a new control method for the attitude stabilization of the AR.Drone 2. If anyone is interested I can send some more details about it. Related to the question the following is important:

My controller uses time scale seperation for the control of the attitude. This means that there are two loops in the controller, the attitude controller which is tracking a desired attitude and demanding an attitude rate, and an attitude rate controller which is tracking the demanded attitude rate.
In the attitude rate controller I am using a PID compensater next to other elements. For the D term of the compensator I need the angular acceleration. I cannot find the angular acceleration in "state.h" so I assume it is not yet calculated. Therefore, in my current code I derive it from the angular velocity, which brings me to my question.

First of all, is it correct that the main frequency (512) defined in  ardrone2_raw.xml is the frequency with which the control loops run? Second, is this accurately done on the AR.Drone board or can I expect the frequency to vary, or is there a way to check the actual loop frequency?

In other words, if I use the following lines to calculate the time derivative of the body rates does this give me what I am looking for:

struct Int32Rates body_accel;
struct Int32Rates rate_diff;
struct Int32Rates prev_body_rate;

struct Int32Rates* body_rate = stateGetBodyRates_i();

RATES_DIFF(rate_diff, *body_rate, prev_body_rate);
RATES_COPY(prev_body_rate, *body_rate);

body_accel.p = rate_diff.p << (F_UPDATE_RES );
body_accel.q = rate_diff.q << (F_UPDATE_RES);
body_accel.r = rate_diff.r << (F_UPDATE_RES);

with body_accel the angular accelerations that I am looking for and F_UPDATE_RES equal to 9, 2^9=512.

I appreciate any help you can provide.

Kind regards,

Eric Poppe

reply via email to

[Prev in Thread] Current Thread [Next in Thread]