]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/UIUCModel/uiuc_recorder.cpp
Fix for bug 1304 - crash loading XML route
[flightgear.git] / src / FDM / UIUCModel / uiuc_recorder.cpp
index 5d554def0cc822963ab185efc5b2511d68bd9163..3264ad184af86601dc755d01f133f39276b2ab3b 100644 (file)
                11/12/2001   (RD) Added new variables needed for the non-
                            linear Twin Otter model at zero flaps
                            (CxfxxfI).  Removed zero flap variables.
-                           Added flap_pos and flap_goal.
+                           Added flap_pos and flap_cmd_deg.
               02/13/2002   (RD) Added variables so linear aero model
                            values can be recorded
+               03/03/2003   (RD) Added flap_cmd_record
+               03/16/2003   (RD) Added trigger record variables
+               07/17/2003   (RD) Added error checking code (default
+                            routine) since it was removed from
+                            uiuc_menu_record()
+               08/20/2003   (RD) Changed spoiler variables to match
+                            flap convention.  Added flap_pos_norm
 
 ----------------------------------------------------------------------
 
- AUTHOR(S):    Jeff Scott         <jscott@mail.com>
+ AUTHOR(S):    Jeff Scott         http://www.jeffscott.net/
                Robert Deters      <rdeters@uiuc.edu>
-
+              Michael Selig      <m-selig@uiuc.edu>
 ----------------------------------------------------------------------
 
  VARIABLES:
 
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- USA or view http://www.gnu.org/copyleft/gpl.html.
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 **********************************************************************/
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <simgear/compiler.h>
+#include <simgear/misc/sg_path.hxx>
+#include <Main/fg_props.hxx>
+
 #include "uiuc_recorder.h"
 
-SG_USING_STD(endl);            // -dw
+using std::endl;               // -dw
 
 void uiuc_recorder( double dt )
 {
   stack command_list;
   string linetoken;
-  static int init = 0;
+  // static int init = 0;
   static int recordStep = 0;
   string record_variables = "# ";
 
-  int modulus = recordStep % recordRate;
+  // int modulus = recordStep % recordRate;
+
+  //static double lat1;
+  //static double long1;
+  //double D_cg_north1;
+  //double D_cg_east1;
+  //if (Simtime == 0)
+  // {
+  //    lat1=Latitude;
+  //    long1=Longitude;
+  //  }
 
   if ((recordStep % recordRate) == 0)
     {
@@ -234,6 +258,21 @@ void uiuc_recorder( double dt )
                 fout << Psi << " ";
                 break;
               }
+            case Phi_deg_record:
+              {
+                fout << Phi*RAD_TO_DEG << " ";
+                break;
+              }
+            case Theta_deg_record:
+              {
+                fout << Theta*RAD_TO_DEG << " ";
+                break;
+              }
+            case Psi_deg_record:
+              {
+                fout << Psi*RAD_TO_DEG << " ";
+                break;
+              }
 
               /******************** Accelerations ********************/
             case V_dot_north_record:
@@ -358,6 +397,11 @@ void uiuc_recorder( double dt )
                 fout << V_down << " ";
                 break;
               }
+           case V_down_fpm_record:
+             {
+               fout << V_down * 60 << " ";
+               break;
+             }
             case V_north_rel_ground_record:
               {
                 fout << V_north_rel_ground << " ";
@@ -557,42 +601,42 @@ void uiuc_recorder( double dt )
               /************************ Angles ***********************/
             case Alpha_record:
               {
-                fout << Alpha << " ";
+                fout << Std_Alpha << " ";
                 break;
               }
             case Alpha_deg_record:
               {
-                fout << Alpha * RAD_TO_DEG << " ";
+                fout << Std_Alpha * RAD_TO_DEG << " ";
                 break;
               }
             case Alpha_dot_record:
               {
-                fout << Alpha_dot << " ";
+                fout << Std_Alpha_dot << " ";
                 break;
               }
             case Alpha_dot_deg_record:
               {
-                fout << Alpha_dot * RAD_TO_DEG << " ";
+                fout << Std_Alpha_dot * RAD_TO_DEG << " ";
                 break;
               }
             case Beta_record:
               {
-                fout << Beta << " ";
+                fout << Std_Beta << " ";
                 break;
               }
             case Beta_deg_record:
               {
-                fout << Beta * RAD_TO_DEG << " ";
+                fout << Std_Beta * RAD_TO_DEG << " ";
                 break;
               }
             case Beta_dot_record:
               {
-                fout << Beta_dot << " ";
+                fout << Std_Beta_dot << " ";
                 break;
               }
             case Beta_dot_deg_record:
               {
-                fout << Beta_dot * RAD_TO_DEG << " ";
+                fout << Std_Beta_dot * RAD_TO_DEG << " ";
                 break;
               }
             case Gamma_vert_record:
@@ -777,7 +821,7 @@ void uiuc_recorder( double dt )
                 break;
               }
 
-              /******************** Control Inputs *******************/
+              /************************ Controls ***********************/
             case Long_control_record:
               {
                 fout << Long_control << " ";
@@ -803,6 +847,11 @@ void uiuc_recorder( double dt )
                 fout << elevator * RAD_TO_DEG << " ";
                 break;
               }
+           case elevator_sas_deg_record:
+             {
+               fout << elevator_sas * RAD_TO_DEG << " ";
+               break;
+             }
             case Lat_control_record:
               {
                 fout << Lat_control << " ";
@@ -818,6 +867,11 @@ void uiuc_recorder( double dt )
                 fout << aileron * RAD_TO_DEG << " ";
                 break;
               }
+           case aileron_sas_deg_record:
+             {
+               fout << aileron_sas * RAD_TO_DEG << " ";
+               break;
+             }
             case Rudder_pedal_record:
               {
                 fout << Rudder_pedal << " ";
@@ -833,29 +887,86 @@ void uiuc_recorder( double dt )
                 fout << rudder * RAD_TO_DEG << " ";
                 break;
               }
+           case rudder_sas_deg_record:
+             {
+               fout << rudder_sas * RAD_TO_DEG << " ";
+               break;
+             }
             case Flap_handle_record:
               {
                 fout << Flap_handle << " ";
                 break;
               }
-            case flap_record:
+            case flap_cmd_record:
               {
-                fout << flap << " ";
+                fout << flap_cmd << " ";
                 break;
               }
-            case flap_deg_record:
+            case flap_cmd_deg_record:
               {
-                fout << flap * RAD_TO_DEG << " ";
+                fout << flap_cmd * RAD_TO_DEG << " ";
                 break;
               }
-            case flap_goal_record:
+            case flap_pos_record:
               {
-                fout << flap_goal << " ";
+                fout << flap_pos << " ";
                 break;
               }
-            case flap_pos_record:
+            case flap_pos_deg_record:
               {
-                fout << flap_pos << " ";
+                fout << flap_pos * RAD_TO_DEG << " ";
+                break;
+              }
+            case flap_pos_norm_record:
+              {
+                fout << flap_pos_norm << " ";
+                break;
+              }
+            case Spoiler_handle_record:
+              {
+                fout << Spoiler_handle << " ";
+                break;
+              }
+            case spoiler_cmd_record:
+              {
+                fout << spoiler_cmd << " ";
+                break;
+              }
+            case spoiler_cmd_deg_record:
+              {
+                fout << spoiler_cmd * RAD_TO_DEG << " ";
+                break;
+              }
+            case spoiler_pos_record:
+              {
+                fout << spoiler_pos << " ";
+                break;
+              }
+            case spoiler_pos_deg_record:
+              {
+                fout << spoiler_pos * RAD_TO_DEG << " ";
+                break;
+              }
+            case spoiler_pos_norm_record:
+              {
+                fout << spoiler_pos_norm << " ";
+                break;
+              }
+
+              /****************** Gear Inputs ************************/
+            case Gear_handle_record:
+              {
+                fout << Gear_handle << " ";
+                break;
+              }
+            case gear_cmd_norm_record:
+              {
+                fout << gear_cmd_norm << " ";
+                break;
+              }
+            case gear_pos_norm_record:
+              {
+                fout << gear_pos_norm << " ";
                 break;
               }
 
@@ -920,6 +1031,11 @@ void uiuc_recorder( double dt )
                 fout << CDK_save << " ";
                 break;
               }
+            case CLK_save_record:
+              {
+                fout << CLK_save << " ";
+                break;
+              }
             case CD_a_save_record:
               {
                 fout << CD_a_save << " ";
@@ -945,6 +1061,36 @@ void uiuc_recorder( double dt )
                 fout << CD_de_save << " ";
                 break;
               }
+            case CD_dr_save_record:
+              {
+                fout << CD_dr_save << " ";
+                break;
+              }
+            case CD_da_save_record:
+              {
+                fout << CD_da_save << " ";
+                break;
+              }
+            case CD_beta_save_record:
+              {
+                fout << CD_beta_save << " ";
+                break;
+              }
+            case CD_df_save_record:
+              {
+                fout << CD_df_save << " ";
+                break;
+              }
+            case CD_ds_save_record:
+              {
+                fout << CD_ds_save << " ";
+                break;
+              }
+            case CD_dg_save_record:
+              {
+                fout << CD_dg_save << " ";
+                break;
+              }
             case CXo_save_record:
               {
                 fout << CXo_save << " ";
@@ -1080,6 +1226,21 @@ void uiuc_recorder( double dt )
                 fout << CL_de_save << " ";
                 break;
               }
+            case CL_df_save_record:
+              {
+                fout << CL_df_save << " ";
+                break;
+              }
+            case CL_ds_save_record:
+              {
+                fout << CL_ds_save << " ";
+                break;
+              }
+            case CL_dg_save_record:
+              {
+                fout << CL_dg_save << " ";
+                break;
+              }
             case CZo_save_record:
               {
                 fout << CZo_save << " ";
@@ -1220,6 +1381,16 @@ void uiuc_recorder( double dt )
                 fout << Cm_df_save << " ";
                 break;
               }
+            case Cm_ds_save_record:
+              {
+                fout << Cm_ds_save << " ";
+                break;
+              }
+            case Cm_dg_save_record:
+              {
+                fout << Cm_dg_save << " ";
+                break;
+              }
             case CY_record:
               {
                 fout << CY  << " ";
@@ -1797,21 +1968,61 @@ void uiuc_recorder( double dt )
                fout << eps_airspeed_min << " ";
                break;
              }
-            case tactilefadefI_record:
-              {
-                fout << tactilefadefI << " ";
-                break;
-              }
 
-             /*******************Autopilot***************************/
+             /****************** Autopilot **************************/
+           case ap_pah_on_record:
+             {
+               fout << ap_pah_on << " ";
+               break;
+             }
+           case ap_alh_on_record:
+             {
+               fout << ap_alh_on << " ";
+               break;
+             }
+           case ap_rah_on_record:
+             {
+               fout << ap_rah_on << " ";
+               break;
+             }
+           case ap_hh_on_record:
+             {
+               fout << ap_hh_on << " ";
+               break;
+             }
            case ap_Theta_ref_deg_record:
              {
-               fout << ap_Theta_ref_deg << " ";
+               fout << ap_Theta_ref_rad*RAD_TO_DEG << " ";
                break;
              }
-           case ap_pah_on_record:
+           case ap_Theta_ref_rad_record:
              {
-               fout << ap_pah_on << " ";
+               fout << ap_Theta_ref_rad << " ";
+               break;
+             }
+           case ap_alt_ref_ft_record:
+             {
+               fout << ap_alt_ref_ft << " ";
+               break;
+             }
+           case ap_Phi_ref_deg_record:
+             {
+               fout << ap_Phi_ref_rad*RAD_TO_DEG << " ";
+               break;
+             }
+           case ap_Phi_ref_rad_record:
+             {
+               fout << ap_Phi_ref_rad << " ";
+               break;
+             }
+           case ap_Psi_ref_deg_record:
+             {
+               fout << ap_Psi_ref_rad*RAD_TO_DEG << " ";
+               break;
+             }
+           case ap_Psi_ref_rad_record:
+             {
+               fout << ap_Psi_ref_rad << " ";
                break;
              }
 
@@ -1968,44 +2179,183 @@ void uiuc_recorder( double dt )
                 fout << M_n_rp << " ";
                 break;
               }
+            case M_l_cg_record:
+              {
+                fout << M_l_cg << " ";
+                break;
+              }
+            case M_m_cg_record:
+              {
+                fout << M_m_cg << " ";
+                break;
+              }
+            case M_n_cg_record:
+              {
+                fout << M_n_cg << " ";
+                break;
+              }
 
-              /*********************** Moments ***********************/
-           //case flapper_freq_record:
-           //  {
-               //fout << flapper_freq << " ";
-               //break;
-           //  }
-           //case flapper_phi_record:
-           //  {
-               //fout << flapper_phi << " ";
-               //break;
-           //  }
-           //case flapper_phi_deg_record:
-           //  {
-               //fout << flapper_phi*RAD_TO_DEG << " ";
-               //break;
-           //  }
-           //case flapper_Lift_record:
-           //  {
-               //fout << flapper_Lift << " ";
-               //break;
-           //  }
-           //case flapper_Thrust_record:
-           //  {
-               //fout << flapper_Thrust << " ";
-               //break;
-           //  }
-           //case flapper_Inertia_record:
-           //  {
-               //fout << flapper_Inertia << " ";
-               //break;
-           //  }
-           //case flapper_Moment_record:
-           //  {
-               //fout << flapper_Moment << " ";
-               //break;
-           //  }
-              /*********************** debug  ***********************/
+              /********************* flapper *********************/
+           case flapper_freq_record:
+             {
+               fout << flapper_freq << " ";
+               break;
+             }
+           case flapper_phi_record:
+             {
+               fout << flapper_phi << " ";
+               break;
+             }
+           case flapper_phi_deg_record:
+             {
+               fout << flapper_phi*RAD_TO_DEG << " ";
+               break;
+             }
+           case flapper_Lift_record:
+             {
+               fout << flapper_Lift << " ";
+               break;
+             }
+           case flapper_Thrust_record:
+             {
+               fout << flapper_Thrust << " ";
+               break;
+             }
+           case flapper_Inertia_record:
+             {
+               fout << flapper_Inertia << " ";
+               break;
+             }
+           case flapper_Moment_record:
+             {
+               fout << flapper_Moment << " ";
+               break;
+             }
+             /****************Other Variables*******************/
+           case gyroMomentQ_record:
+             {
+               fout << polarInertia * engineOmega * Q_body << " ";
+               break;
+             }
+           case gyroMomentR_record:
+             {
+               fout << -polarInertia * engineOmega * R_body << " ";
+               break;
+             }
+           case eta_q_record:
+             {
+               fout << eta_q << " ";
+               break;
+             }
+           case rpm_record:
+             {
+               fout << (engineOmega * 60 / (2 * LS_PI)) << " ";
+               break;
+             }
+           case w_induced_record:
+             {
+               fout << w_induced << " ";
+               break;
+             }
+           case downwashAngle_deg_record:
+             {
+               fout << downwashAngle * RAD_TO_DEG << " ";
+               break;
+             }
+           case alphaTail_deg_record:
+             {
+               fout << alphaTail * RAD_TO_DEG << " ";
+               break;
+             }
+           case gammaWing_record:
+             {
+               fout << gammaWing << " ";
+               break;
+             }
+           case LD_record:
+             {
+               fout << V_ground_speed/V_down_rel_ground  << " ";
+               break;
+             }
+           case gload_record:
+             {
+               fout << -A_Z_cg/32.174 << " ";
+               break;
+             }
+            case tactilefadefI_record:
+              {
+                fout << tactilefadefI << " ";
+                break;
+              }
+             /****************Trigger Variables*******************/
+           case trigger_on_record:
+             {
+               fout << trigger_on << " ";
+               break;
+             }
+           case trigger_num_record:
+             {
+               fout << trigger_num << " ";
+               break;
+             }
+           case trigger_toggle_record:
+             {
+               fout << trigger_toggle << " ";
+               break;
+             }
+           case trigger_counter_record:
+             {
+               fout << trigger_counter << " ";
+               break;
+             }
+             /*********local to body transformation matrix********/
+           case T_local_to_body_11_record:
+             {
+               fout << T_local_to_body_11 << " ";
+               break;
+             }
+           case T_local_to_body_12_record:
+             {
+               fout << T_local_to_body_12 << " ";
+               break;
+             }
+           case T_local_to_body_13_record:
+             {
+               fout << T_local_to_body_13 << " ";
+               break;
+             }
+           case T_local_to_body_21_record:
+             {
+               fout << T_local_to_body_21 << " ";
+               break;
+             }
+           case T_local_to_body_22_record:
+             {
+               fout << T_local_to_body_22 << " ";
+               break;
+             }
+           case T_local_to_body_23_record:
+             {
+               fout << T_local_to_body_23 << " ";
+               break;
+             }
+           case T_local_to_body_31_record:
+             {
+               fout << T_local_to_body_31 << " ";
+               break;
+             }
+           case T_local_to_body_32_record:
+             {
+               fout << T_local_to_body_32 << " ";
+               break;
+             }
+           case T_local_to_body_33_record:
+             {
+               fout << T_local_to_body_33 << " ";
+               break;
+             }
+    
+             /********* MSS debug and other data *******************/
               /* debug variables for use in probing data            */
               /* comment out old lines, and add new                 */
               /* only remove code that you have written             */
@@ -2016,30 +2366,34 @@ void uiuc_recorder( double dt )
                // fout << eta_q_Cm_adot_fac << " ";
                // fout << eta_q_Cmfade_fac << " ";
                // fout << eta_q_Cl_dr_fac << " ";
+               // fout << eta_q_Cm_de_fac << " ";
                // eta on tail
-               // fout << tc << " ";
+               // fout << eta_q  << " ";
                // engine RPM
                // fout << engineOmega * 60 / (2 * LS_PI)<< " ";
                // vertical climb rate in fpm
-               // fout << V_down * 60 << " ";
+               fout << V_down * 60 << " ";
+               // vertical climb rate in fps
+               // fout << V_down << " ";
                // w_induced downwash at tail due to wing
-               //fout << w_induced   << " ";
-               // w_induced downwash at tail due to wing
-               fout << gammaWing   << " ";
+               // fout << gammaWing   << " ";
+               //fout << outside_control << " ";
                break;
              }
            case debug2_record:
              {
-               //Lift to drag ratio 
-               // fout << V_north/V_down << " ";
+               // Lift to drag ratio 
+               // fout <<  V_ground_speed/V_down_rel_ground << " ";
                // g's through the c.g. of the aircraft
-               // fout << (-A_Z_cg/32.174) << " ";
+               fout << (-A_Z_cg/32.174) << " ";
+               // L/D via forces (used in 201 class for L/D)
+               // fout << (F_Z_wind/F_X_wind) << " ";
                // gyroscopic moment (see uiuc_wrapper.cpp)
                // fout << (polarInertia * engineOmega * Q_body) << " ";
                // downwashAngle at tail
-               fout << downwashAngle * 57.29 << " ";
+               // fout << downwashAngle * 57.29 << " ";
                // w_induced from engine
-               // fout << w_i << " ";
+               // fout << w_induced << " ";
                break;
              }
            case debug3_record:
@@ -2048,15 +2402,77 @@ void uiuc_recorder( double dt )
                // fout << (Cos_alpha * Cos_alpha)       << " ";
                // gyroscopic moment (see uiuc_wrapper.cpp)
                // fout << (-polarInertia * engineOmega * R_body) << " ";
-               // AlphaTail 
-               // fout << AlphaTail * 57.29  << " ";
-               // fout << Alpha     * 57.29  << " ";
                // eta on tail
-               fout << eta_q << " ";
+               // fout << eta_q << " ";
+               // flapper cycle percentage
+               fout << (sin(flapper_phi - 3 * LS_PI / 2)) << " ";
                break;
              }
-
-            };
+              /********* RD debug and other data *******************/
+              /* debug variables for use in probing data            */
+              /* comment out old lines, and add new                 */
+              /* only remove code that you have written             */
+           case debug4_record:
+             {
+               // flapper F_X_aero_flapper
+               //fout << F_X_aero_flapper << " ";
+               //ap_pah_on
+               //fout << ap_pah_on << " ";
+               //D_cg_north1 = Radius_to_rwy*(Latitude - lat1);
+               //fout << D_cg_north1 << " ";
+               break;
+             }
+           case debug5_record:
+             {
+               // flapper F_Z_aero_flapper
+               //fout << F_Z_aero_flapper << " ";
+               // gear_rate
+               //D_cg_east1 = Radius_to_rwy*cos(lat1)*(Longitude - long1);
+               //fout << D_cg_east1 << " ";
+               break;
+             }
+           case debug6_record:
+             {
+               //gear_max
+               //fout << gear_max << " ";
+               //fout << sqrt(D_cg_north1*D_cg_north1+D_cg_east1*D_cg_east1) << " ";
+               break;
+             }
+           case debug7_record:
+             {
+               //Debug7
+               fout << debug7 << " ";
+               break;
+             }
+           case debug8_record:
+             {
+               //Debug8
+               fout << debug8 << " ";
+               break;
+             }
+           case debug9_record:
+             {
+               //Debug9
+               fout << debug9 << " ";
+               break;
+             }
+           case debug10_record:
+             {
+               //Debug10
+               fout << debug10 << " ";
+               break;
+             }
+           default:
+             {
+               if (ignore_unknown_keywords) {
+                 // do nothing
+               } else {
+                 // print error message
+                 uiuc_warnings_errors(2, *command_line);
+               }
+               break;
+             }
+           };
         } // end record map
     }
   recordStep++;