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