paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [4611]


From: antoine drouin
Subject: [paparazzi-commits] [4611]
Date: Tue, 02 Mar 2010 23:39:46 +0000

Revision: 4611
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4611
Author:   poine
Date:     2010-03-02 23:39:46 +0000 (Tue, 02 Mar 2010)
Log Message:
-----------


Modified Paths:
--------------
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_ctl.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_diff_flatness.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_display.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fdm.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fo_traj_misc.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sbb.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/test_stop_stop.sce

Added Paths:
-----------
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_adaptation.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sensors.sci
    paparazzi3/trunk/sw/simulator/scilab/q3d/test_adapt.sce

Added: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_adaptation.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_adaptation.sci                 
        (rev 0)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_adaptation.sci 2010-03-02 
23:39:46 UTC (rev 4611)
@@ -0,0 +1,123 @@
+//
+//
+//  Model parameters estimation
+//
+//
+
+// estimated parameters
+ADP_EST_A    = 1;  // a = fdm_Ct0/fdm_mass
+ADP_EST_B    = 2;  // b = fdm_la*fdm_Ct0/fdm_inertia
+ADP_EST_SIZE = 2; 
+
+global adp_est;
+global adp_P;
+global adp_y;
+
+adp_dt = 1/512;
+adp_lp_tau = 0.75;
+adp_lp_alpha = adp_dt/(adp_dt+adp_lp_tau);
+
+global adp_thetad_f;
+global adp_ud_f;
+
+
+function adp_init(time, est0, P0)
+
+  global adp_est;
+  adp_est = zeros(ADP_EST_SIZE, length(time));
+  adp_est(:,1) = est0;
+   
+  global adp_P;
+  adp_P = zeros(ADP_EST_SIZE, ADP_EST_SIZE, length(time));
+  adp_P(:,:,1) = [ 20 0 ; 0 50000];
+    
+  global adp_y;
+  adp_y = zeros(ADP_EST_SIZE, length(time));
+  
+  global adp_thetad_f;
+  adp_thetad_f = zeros(1, length(time));
+  global adp_ud_f;
+  adp_ud_f = zeros(1, length(time));
+
+  
+endfunction
+
+
+// propagate the adaptation from step i-1 to step 1
+function adp_run2(i)
+
+  // low pass filter thetad and ud
+  global adp_thetad_f;
+  adp_thetad_f(i) = adp_lp_tau*adp_lp_alpha*sensors_state(SEN_SG,i) + 
(1-adp_lp_alpha)*adp_thetad_f(i-1);
+  global adp_ud_f;
+  adp_ud_f(i)     = adp_lp_tau*adp_lp_alpha*ctl_u(CTL_UD,i)         + 
(1-adp_lp_alpha)*adp_ud_f(i-1);
+
+  // output
+  global adp_y;
+  adp_y(:,i) = [ sqrt(fdm_accel(FDM_AX,i)^2 + (fdm_accel(FDM_AZ,i)+9.81)^2)    
  // FIXME
+                 sensors_state(SEN_SG,i) - 1/adp_lp_tau * adp_thetad_f(i)    
]; 
+  // input  
+  W = [ ctl_u(CTL_UT,i) 0; 0 adp_ud_f(i) ]; 
+   
+  global adp_est;
+  global adp_P;
+  // residual
+  e1 = W*adp_est(:,i-1) - adp_y(:,i);
+  // update state
+  ad = -adp_P(:,:,i-1)*W'*e1;
+  // first order integration
+  adp_est(:,i) = adp_est(:,i-1) + ad * adp_dt;
+//  pause
+
+  // update gain
+//  lambda = 0.25*(1-norm(adp_P(:,:,i-1))/2.5);
+    lambda = 1.025;
+  Pd = lambda*adp_P(:,:,i-1) - adp_P(:,:,i-1)* W' * W * adp_P(:,:,i-1);
+  adp_P(:,:,i) = adp_P(:,:,i-1) + Pd * dt;
+  
+endfunction
+
+// propagate the adaptation from step i-1 to step 1
+function adp_run(i)
+  // low pass filter thetad and ud
+  global adp_thetad_f;
+  adp_thetad_f(i) = adp_lp_tau*adp_lp_alpha*sensors_state(SEN_SG,i) + 
(1-adp_lp_alpha)*adp_thetad_f(i-1);
+  global adp_ud_f;
+  adp_ud_f(i)     = adp_lp_tau*adp_lp_alpha*ctl_u(CTL_UD,i)         + 
(1-adp_lp_alpha)*adp_ud_f(i-1);
+
+  global adp_y;
+  global adp_est;
+  global adp_P;
+  
+  //output
+  adp_y(1,i) = sqrt(fdm_accel(FDM_AX,i)^2 + (fdm_accel(FDM_AZ,i)+9.81)^2);   
// fixme
+  // input  
+  W = ctl_u(CTL_UT,i); 
+  // residual
+  e1 = W*adp_est(1,i-1) - adp_y(1,i);
+  // update state
+  ad = -adp_P(1,1,i-1)*W'*e1;
+  adp_est(1,i) = adp_est(1,i-1) + ad * adp_dt;
+  // update gain
+  lambda = 2.5*(1-abs(adp_P(1,1,i-1))/20);
+//  lambda = 2.25;
+  Pd = lambda*adp_P(1,1,i-1) - adp_P(1,1,i-1)* W' * W * adp_P(1,1,i-1);
+  adp_P(1,1,i) = adp_P(1,1,i-1) + Pd * dt;
+  
+  //output
+  adp_y(2,i) = sensors_state(SEN_SG,i) - 1/adp_lp_tau * adp_thetad_f(i);
+  // input
+  W =  adp_ud_f(i); 
+  // residual
+  e1 = W*adp_est(2,i-1) - adp_y(2,i);
+  // update state
+  ad = -adp_P(2,2,i-1)*W'*e1;
+  adp_est(2,i) = adp_est(2,i-1) + ad * adp_dt;
+  // update gain
+  lambda = 2.5*(1-abs(adp_P(2,2,i-1))/50000);
+//  lambda = 2.25;
+  Pd = lambda*adp_P(2,2,i-1) - adp_P(2,2,i-1)* W' * W * adp_P(2,2,i-1);
+  adp_P(2,2,i) = adp_P(2,2,i-1) + Pd * dt;
+  
+endfunction
+

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_ctl.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_ctl.sci        2010-03-02 
17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_ctl.sci        2010-03-02 
23:39:46 UTC (rev 4611)
@@ -1,4 +1,9 @@
+CTL_UT    = 1;
+CTL_UD    = 2;
+CTL_USIZE = 2;
 
+global ctl_u;
+
 //           X    Z  Theta   Xd    Zd   Theta_d
 //ctl_gain = [ 0   -1    0      0    -1    0
 //            -2    0    5     -2     0    5 ];
@@ -8,9 +13,17 @@
              0    0    0      0     0    0 ];
 else
 ctl_gain = [    0   -1    0      0       -1    0
-            -0.95    0    3     -1.2      0    3 ];
+             0.95    0   -3      1.2      0   -3 ];
        
 end
+
+function ctl_init(time)
+
+  global ctl_u;
+  ctl_u = zeros(CTL_USIZE, length(time));
+  
+endfunction
+
 function [fb_cmd] = ctl_compute_feeback(fdm_state, ref)
 
   state_err = fdm_state - ref;

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_diff_flatness.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_diff_flatness.sci      
2010-03-02 17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_diff_flatness.sci      
2010-03-02 23:39:46 UTC (rev 4611)
@@ -31,12 +31,13 @@
 endfunction
 
 // control input from flat output
-function [inp] = df_input_of_fo(fo)
+function [inp] = df_input_of_fo(fo, model_a, model_b)
 
   x2   = fo(1,3);                               
   z2pg = fo(2,3)+9.81;                          
 
-  u1 =  fo_mass / fo_Ct0 * sqrt((x2)^2 + (z2pg)^2);
+//  u1 =  fo_mass / fo_Ct0 * sqrt((x2)^2 + (z2pg)^2);
+  u1 =  1/model_a * sqrt((x2)^2 + (z2pg)^2);
   
   x3   = fo(1,4);                               
   z3   = fo(2,4);                               
@@ -46,7 +47,8 @@
   b = z2pg^2+x2^2;
   c = 2 * (z2pg*z3 + x2*x3);
   d = x3*z2pg-z3*x2;
-  u2 = fo_J / fo_la /fo_Ct0 * ( a/b - c*d/b^2);
+//  u2 = -fo_J / fo_la /fo_Ct0 * ( a/b - c*d/b^2);
+  u2 = -1/model_b * ( a/b - c*d/b^2);
  
   inp = [u1; u2];
   

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_display.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_display.sci    2010-03-02 
17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_display.sci    2010-03-02 
23:39:46 UTC (rev 4611)
@@ -129,7 +129,7 @@
   
 endfunction
 
-function display_control(time, diff_flat_ref, fdm_state, diff_flat_cmd, 
fb_cmd, motor_cmd );
+function display_control(time, diff_flat_ref, fdm_state, diff_flat_cmd, 
fb_cmd, motor_cmd )
 
   f=get("current_figure");
   f.figure_name="Control";
@@ -168,8 +168,7 @@
   xtitle('Thetad');
   
   
-  subplot(4,2,5);
-//  plot2d(time, diff_flat_cmd(1,:)+ fb_cmd(1,:), 5);
+  subplot(4,3,7);
   xset("color",5);
   foo = diff_flat_cmd(1,:) + fb_cmd(1,:);
   xfpoly([time time($:-1:1)], [diff_flat_cmd(1,:) foo($:-1:1)]);
@@ -177,7 +176,7 @@
   plot2d(time, diff_flat_cmd(1,:), 2);
   xtitle('u_t');
 
-  subplot(4,2,6);
+  subplot(4,3,8);
   tot_cmd = diff_flat_cmd(2,:) + fb_cmd(2,:);
   xset("color",5);
   xfpoly([time time($:-1:1)], [diff_flat_cmd(2,:) tot_cmd($:-1:1)]);
@@ -185,14 +184,53 @@
   plot2d(time, diff_flat_cmd(2,:), 2);
   xtitle('u_d');
   
-  subplot(4,2,7);
+  subplot(4,3,10);
   plot2d(time, motor_cmd(1,:), 2);
   xtitle('u1');
 
-  subplot(4,2,8);
+  subplot(4,3,11);
   plot2d(time, motor_cmd(2,:), 2);
   xtitle('u2');
   
   
 endfunction
 
+function display_adaptation() 
+
+  f=get("current_figure");
+  f.figure_name="Adaptation";
+
+  clf();
+  
+  subplot(2,3,1);
+  plot2d(fdm_time, adp_y(1,:), 3);
+  plot2d(fdm_time, fdm_Ct0/fdm_mass*ctl_u(CTL_UT,:), 2);
+  legends(["y1", "ut"],[3 2], with_box=%f, opt="ul"); 
+  xtitle('apd_y1');
+  
+  subplot(2,3,2);
+  plot2d(fdm_time, fdm_Ct0/fdm_mass*ones(1,length(time)),3);
+  plot2d(fdm_time, adp_est(ADP_EST_A,:), 2);
+  xtitle('adp_est A');
+
+  subplot(2,3,3);
+  plot2d(fdm_time, matrix(adp_P(1,1,:), 1, length(time)), 2);
+  xtitle('adp_P11');
+
+ 
+  subplot(2,3,4);
+  plot2d(fdm_time, adp_y(2,:), 3);
+  plot2d(fdm_time, fdm_la*fdm_Ct0/fdm_inertia*adp_ud_f, 2);
+  legends(["y2", "udf"],[3 2], with_box=%f, opt="ul");   
+  xtitle('ud_f');
+  
+  subplot(2,3,5);
+  plot2d(fdm_time, fdm_la*fdm_Ct0/fdm_inertia*ones(1, length(time)),3);
+  plot2d(fdm_time, adp_est(ADP_EST_B,:), 2);
+  xtitle('adp_est B');
+
+  subplot(2,3,6);
+  plot2d(fdm_time, matrix(adp_P(2,2,:), 1, length(time)), 2);
+  xtitle('adp_P22');
+
+endfunction

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fdm.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fdm.sci        2010-03-02 
17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fdm.sci        2010-03-02 
23:39:46 UTC (rev 4611)
@@ -35,10 +35,10 @@
 
 fdm_Ct0 = 4. * fdm_mass * fdm_g / 2;   // thrust coefficient
 fdm_V0  = 1e9;                        // 
-fdm_Cd  = 1e-2;                        // drag coefficient
+fdm_Cd  = 1e-9;                        // drag coefficient
 
 fdm_min_thrust =  0.05; //  5%  
-fdm_max_thrust =  1.0;  // 400%
+fdm_max_thrust =  1.00; // 100%
 
 fdm_wind = [0 0]';
 
@@ -47,7 +47,7 @@
 global fdm_accel;
 
 
-function fdm_init(time, fdm_X0) 
+function fdm_init(time, fdm_X0, cmd0) 
 
   global fdm_time;
   fdm_time = time;
@@ -56,7 +56,9 @@
   fdm_state(:,1) = fdm_X0;
   global fdm_accel;
   fdm_accel = zeros(FDM_ASIZE, length(fdm_time));
-  
+  accel = fdm_get_derivatives(time(1), fdm_state(:,1), cmd0);
+  fdm_accel(:,1) = accel(FDM_SXD:FDM_STHETAD);
+
 endfunction
 
 function fdm_run(i, cmd)
@@ -94,9 +96,7 @@
   Xdot(FDM_SXD:FDM_SZD) = 1/fdm_mass*(lift_ltp+weight_ltp+drag_ltp);
   
   // moments
-  Xdot(FDM_STHETAD) = fdm_la * fdm_Ct0 / fdm_inertia*(U(FDM_MOTOR_RIGHT) - 
U(FDM_MOTOR_LEFT));
+  Xdot(FDM_STHETAD) = fdm_la * fdm_Ct0 / fdm_inertia*(U(FDM_MOTOR_LEFT) - 
U(FDM_MOTOR_RIGHT));
   
-//  pause
-  
 endfunction
 

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fo_traj_misc.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fo_traj_misc.sci       
2010-03-02 17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_fo_traj_misc.sci       
2010-03-02 23:39:46 UTC (rev 4611)
@@ -30,6 +30,38 @@
 endfunction
 
 
+function [fo_traj] = fo_traj_swing(time)
+  omega = 2.;
+  n_comp = 2;
+  order = 5;
+  fo_traj = zeros(n_comp, order, length(time));
+
+ for i=1:length(time)
+    
+    alpha = omega*time(i);
+    radius = 2;
+
+    fo_traj(1,1,i) = radius * cos(alpha);
+
+    fo_traj(1,2,i) = -omega * radius * sin(alpha);
+    
+    fo_traj(1,3,i) = -omega^2 * radius * cos(alpha);
+
+    fo_traj(1,4,i) =  omega^3 * radius * sin(alpha);
+
+    fo_traj(1,5,i) =  omega^4 * radius * cos(alpha);
+  
+  end  
+
+ 
+
+
+endfunction
+
+
+
+
+
 function [time_out, traj_out] = merge_traj(time_in, traj_in)
   time_out = [];
   for t=time_in

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sbb.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sbb.sci        2010-03-02 
17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sbb.sci        2010-03-02 
23:39:46 UTC (rev 4611)
@@ -16,8 +16,8 @@
     dist = b1(compo)-b0(compo);
     if (abs(dist) > 0.01)
       step_dt = 
-log(sbb_tolerance)/(dyn(compo,2)*dyn(compo,1)*sqrt(1-dyn(compo,2)^2));
-      step_xdd = dist / (2*step_dt^2);
-  
+      step_xdd = abs(dist) / (2*step_dt^2);
+
       if step_xdd < max_accel(compo)
         if step_xdd > max_speed(compo)/step_dt
           step_xdd = max_speed(compo)/step_dt;
@@ -30,7 +30,7 @@
           step_xdd = max_speed(compo)/step_dt;
         end
       end
-      t_tot = (dist - 2*step_dt*(step_xdd*step_dt))/(step_xdd*step_dt) + 
4*step_dt;
+      t_tot = (abs(dist) - 2*step_dt*(step_xdd*step_dt))/(step_xdd*step_dt) + 
4*step_dt;
     else
       step_dt = 0;
       step_xdd = 0;
@@ -45,9 +45,9 @@
     fo_traj(compo,1,1) = b0(compo);
       for i=2:length(time)
         if time(i)-time(1) < step_dt
-          sp = step_xdd;      
+          sp = sign(dist)*step_xdd;      
         elseif time(i)-time(1) < t_tot - step_dt & time(i)-time(1) >= t_tot -  
2 * step_dt
-          sp = -step_xdd;      
+          sp = -sign(dist)*step_xdd;      
         else
           sp = 0;
         end

Added: paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sensors.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sensors.sci                    
        (rev 0)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/q3d_sensors.sci    2010-03-02 
23:39:46 UTC (rev 4611)
@@ -0,0 +1,36 @@
+SEN_SAX   = 1;
+SEN_SAZ   = 2;
+SEN_SG    = 3;
+SEN_SSIZE = 3;
+
+global sensors_time;
+global sensors_state;
+
+gyro_noise = rad_of_deg(3.);
+gyro_bias  = rad_of_deg(0.);
+accel_noise = 0.5;
+
+function sensors_init(time)
+
+  global sensors_time;
+  sensors_time = time;
+  global sensors_state;
+  sensors_state = zeros(SEN_SSIZE, length(time));
+
+endfunction
+
+
+
+function sensors_run(i)
+
+  global sensors_state;
+  
+  accel_inertial = fdm_accel(FDM_AX:FDM_AZ, i) - [0, -9.81]';
+  in_2_body = [ cos(fdm_state(FDM_STHETA, i))  sin(fdm_state(FDM_STHETA, i))
+               -sin(fdm_state(FDM_STHETA, i))  cos(fdm_state(FDM_STHETA, i)) 
]; 
+  accel_body =  in_2_body * accel_inertial + accel_noise * rand(2,1,'normal');
+  sensors_state(SEN_SAX:SEN_SAZ, i) = accel_body;
+  sensors_state(SEN_SG, i) = fdm_state(FDM_STHETAD, i) + gyro_noise * 
rand(1,1,'normal') + gyro_bias;
+  
+endfunction
+

Added: paparazzi3/trunk/sw/simulator/scilab/q3d/test_adapt.sce
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/test_adapt.sce                     
        (rev 0)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/test_adapt.sce     2010-03-02 
23:39:46 UTC (rev 4611)
@@ -0,0 +1,73 @@
+clear();
+
+exec('q3d_utils.sci');
+
+exec('q3d_sbb.sci');
+exec('q3d_fo_traj_misc.sci');
+
+exec('q3d_diff_flatness.sci');
+exec('q3d_ctl.sci');
+exec('q3d_adaptation.sci');
+
+exec('q3d_fdm.sci');
+exec('q3d_sensors.sci');
+
+exec('q3d_display.sci');
+
+t0 = 0;
+t1 = 4.;
+t2 = 8.;
+dt = 1/512;
+time1 = t0:dt:t1;
+time2 = t1:dt:t2;
+
+// trajectory generation
+if 1
+  dyn = [rad_of_deg(500) 0.7; rad_of_deg(500) 0.7];
+  max_speed = [ 5                        2.5];
+  max_accel = [ 9.81*tan(rad_of_deg(30)) 0.5*9.81];
+  b0 = [-5  0];
+  b1 = [ 5 -5];
+  b2 = [ 0 -5];
+  [fo_traj1] = sbb_gen_traj(time1, dyn, max_speed, max_accel, b0, b1);
+  [fo_traj2] = sbb_gen_traj(time2, dyn, max_speed, max_accel, b1, b2);
+  [time, fo_traj] = merge_traj(list(time1, time2), list(fo_traj1, fo_traj2));
+else
+  [fo_traj] = fo_traj_swing(time1);
+  time = time1;
+end
+
+fdm_init(time, df_state_of_fo(fo_traj(:,:,1)), [0.25 0.25]');
+
+ctl_init(time);
+
+diff_flat_cmd = zeros(2,length(time));
+diff_flat_ref = zeros(FDM_SSIZE, length(time));
+
+fb_cmd = zeros(2,length(time));
+motor_cmd = zeros(2,length(time));
+
+adp_init(time, [19 150]', []);
+sensors_init(time)
+
+for i=2:length(time)
+//  diff_flat_cmd(:,i) = df_input_of_fo(fo_traj(:,:,i), fdm_Ct0/fdm_mass, 
fdm_la*fdm_Ct0/fdm_inertia);
+  diff_flat_cmd(:,i) = df_input_of_fo(fo_traj(:,:,i), adp_est(1,i-1), 
adp_est(2,i-1));
+  diff_flat_ref(:,i) = df_state_of_fo(fo_traj(:,:,i));
+  fb_cmd(:,i-1) = ctl_compute_feeback(fdm_state(:,i-1),diff_flat_ref(:,i-1)); 
+  global ctl_u;
+  ctl_u(:,i) = diff_flat_cmd(:,i) + fb_cmd(:,i-1);
+  MotorsOfCmds = 0.5*[1 -1 ; 1 1];
+  motor_cmd(:,i-1) =  MotorsOfCmds * ctl_u(:,i);
+  fdm_run(i, motor_cmd(:,i-1));
+  sensors_run(i);
+  adp_run(i);
+end
+
+  
+set("current_figure",1);
+display_control(time, diff_flat_ref, fdm_state, diff_flat_cmd, fb_cmd, 
motor_cmd );
+
+set("current_figure",2);
+display_adaptation();
+

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/test_stop_stop.sce
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/test_stop_stop.sce 2010-03-02 
17:56:36 UTC (rev 4610)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/test_stop_stop.sce 2010-03-02 
23:39:46 UTC (rev 4611)
@@ -43,11 +43,11 @@
 diff_flat_cmd = zeros(2,length(time));
 diff_flat_ref = zeros(FDM_SSIZE, length(time));
 for i=1:length(time)
-  diff_flat_cmd(:,i) = df_input_of_fo(fo_traj(:,:,i));
+  diff_flat_cmd(:,i) = df_input_of_fo(fo_traj(:,:,i), fdm_Ct0/fdm_mass, 
fdm_la*fdm_Ct0/fdm_inertia);
   diff_flat_ref(:,i) = df_state_of_fo(fo_traj(:,:,i));
 end
 
-fdm_init(time, df_state_of_fo(fo_traj(:,:,1)));
+fdm_init(time, df_state_of_fo(fo_traj(:,:,1)), [0.25 0.25]');
 fb_cmd = zeros(2,length(time));
 motor_cmd = zeros(2,length(time));
 for i=2:length(time)





reply via email to

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