paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [4590] Corrected bug in q6d_diff_flatness.sci, func


From: Gustavo Oliveira Violato
Subject: [paparazzi-commits] [4590] Corrected bug in q6d_diff_flatness.sci, function df_state_of_fo and added
Date: Thu, 25 Feb 2010 02:14:46 +0000

Revision: 4590
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4590
Author:   gov
Date:     2010-02-25 02:14:45 +0000 (Thu, 25 Feb 2010)
Log Message:
-----------
Corrected bug in q6d_diff_flatness.sci, function df_state_of_fo and added
povray utilities. Seems to work in open loop.

Modified Paths:
--------------
    paparazzi3/trunk/sw/simulator/scilab/q3d/Makefile
    paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_diff_flatness.sci
    paparazzi3/trunk/sw/simulator/scilab/q6d/test_stop_stop.sce

Added Paths:
-----------
    paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_povray.sci

Modified: paparazzi3/trunk/sw/simulator/scilab/q3d/Makefile
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q3d/Makefile   2010-02-24 17:00:39 UTC 
(rev 4589)
+++ paparazzi3/trunk/sw/simulator/scilab/q3d/Makefile   2010-02-25 02:14:45 UTC 
(rev 4590)
@@ -7,4 +7,4 @@
        ffmpeg -f image2 -i images/frame_%04d.ppm out.mpg
 
 clean:
-       rm images/*
\ No newline at end of file
+       rm -f *~ \#*\#
\ No newline at end of file

Modified: paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_diff_flatness.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_diff_flatness.sci      
2010-02-24 17:00:39 UTC (rev 4589)
+++ paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_diff_flatness.sci      
2010-02-25 02:14:45 UTC (rev 4590)
@@ -78,7 +78,7 @@
   adv = (axpsi*adxpsi + z2dmg*fo(3,4))/av;
   
   phid   = sign(z2dmg)*(adypsi*av-adv*aypsi)/(aypsi^2+av^2);
-  thetad = (adxpsi*z2dmg-z3d*aypsi)/(axpsi^2+z2dmg^2);
+  thetad = (adxpsi*z2dmg-z3d*axpsi)/(axpsi^2+z2dmg^2);
   
   cphi = cos(state(DF_REF_PHI));
   sphi = sin(state(DF_REF_PHI));

Added: paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_povray.sci
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_povray.sci                     
        (rev 0)
+++ paparazzi3/trunk/sw/simulator/scilab/q6d/q6d_povray.sci     2010-02-25 
02:14:45 UTC (rev 4590)
@@ -0,0 +1,34 @@
+
+function povray_draw( time, diff_flat_ref )
+  
+  dt_display = 1/25;
+
+  t_idx = 1;
+  f_idx = 1;
+  t = time(t_idx);
+  while (t_idx<length(time))
+    printf('drawing %d (%f)\n', f_idx, time(t_idx));
+    x = -1000*diff_flat_ref(DF_REF_X,t_idx);
+    y = 1000*diff_flat_ref(DF_REF_Y,t_idx);
+    z = -1000*diff_flat_ref(DF_REF_Z,t_idx);
+    phi =  deg_of_rad(-diff_flat_ref(DF_REF_PHI,t_idx));
+    theta =  deg_of_rad(-diff_flat_ref(DF_REF_THETA,t_idx));
+    psi =  deg_of_rad(-diff_flat_ref(DF_REF_PSI,t_idx));
+//    printf('( %f %f %f)\n', x, y, alpha);
+    fid = mopen('povray/q3d.pov', "w");
+    mfprintf(fid, "#include ""povray/q3d.inc""\n");
+    mfprintf(fid, "object { Q3D()  rotate <%f,%f,%f> translate 
<%f,%f,%f>}",-phi,psi,-theta,x,y,z);
+    mclose(fid);
+    cmd = sprintf('povray povray/q3d.pov +Opovray/foo%04d.png Display=false 
+W800 +H600 +Q9 +A0.3 +R5', f_idx);
+    a = unix_g(cmd);
+    while (t_idx<length(time) & time(t_idx) < f_idx*dt_display)
+      t_idx = t_idx + 1;
+    end
+    f_idx = f_idx + 1;
+  end
+
+  mplayer_cmd = "mencoder ""mf://povray/foo*.png"" -mf fps=25 -o 
povray/test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800";
+  unix_g(mplayer_cmd);
+  
+endfunction
+

Modified: paparazzi3/trunk/sw/simulator/scilab/q6d/test_stop_stop.sce
===================================================================
--- paparazzi3/trunk/sw/simulator/scilab/q6d/test_stop_stop.sce 2010-02-24 
17:00:39 UTC (rev 4589)
+++ paparazzi3/trunk/sw/simulator/scilab/q6d/test_stop_stop.sce 2010-02-25 
02:14:45 UTC (rev 4590)
@@ -6,9 +6,10 @@
 exec('q6d_fdm.sci');
 exec('q6d_algebra.sci');
 exec('q6d_display.sci');
+exec('q6d_povray.sci');
 
 t0 = 0;
-t1 = 8.;
+t1 = 10.;
 dt = 1/512;
 time = t0:dt:t1;
 
@@ -19,9 +20,10 @@
 //b0 = [ 0    0   0];
 //b1 = [-10   1  -2];
 b0 = [ 0   0   0 ];
-b1 = [ 1  -1  -1 ];
-//[fo_traj] = sbb_gen_traj(time, dyn, max_speed, max_accel, b0, b1);
-[fo_traj] = fo_traj_circle(time);
+b1 = [ 0   0  5 ];
+[fo_traj] = sbb_gen_traj(time, dyn, max_speed, max_accel, b0, b1);
+[traj] = fo_traj_circle(time);
+fo_traj(1:2,:,:) = traj(1:2,:,:);
 
 set("current_figure",0);
 clf();
@@ -62,7 +64,7 @@
       quat_of_euler([diff_flat_ref(DF_REF_PHI,1) diff_flat_ref(DF_REF_THETA,1) 
diff_flat_ref(DF_REF_PSI,1)])
       diff_flat_ref(DF_REF_P,1)  ; diff_flat_ref(DF_REF_Q,1) ; 
diff_flat_ref(DF_REF_R,1) 
       ];
-  
+
 fdm_init(time, X0);
 for i=2:length(time)
   fdm_run(i, motor_cmd(:,i-1));
@@ -71,4 +73,6 @@
 set("current_figure",3);
 clf();
 //display_fdm(time, fdm_state, fdm_euler)
-display_control(time, fdm_state, fdm_euler, diff_flat_ref);
\ No newline at end of file
+display_control(time, fdm_state, fdm_euler, diff_flat_ref);
+
+povray_draw(time,diff_flat_ref);
\ No newline at end of file





reply via email to

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