Skip to content
Snippets Groups Projects
Select Git revision
  • v4.0.1_stable
  • master default protected
  • thesis
  • fmics-2021
  • vanadium
  • afadl-2021
  • functional-verification
  • v5.17_devel
  • v5.16.0_stable
  • v5.15_devel
  • v5.14.0_stable
  • v5.13.0_testing
  • v5.13_devel
  • v5.12_stable
  • v5.11_devel
  • v5.10_stable
  • v5.9.0_testing
  • v5.8.2_stable
  • v5.8.1_stable
  • v5.9_devel
  • v5.8.0_stable
  • v5.7.1_testing
  • v5.7.0_testing
  • v5.7_devel
  • v5.6.0_stable
  • v5.5.2_testing
  • v5.5.1_testing
27 results

flightModel.ml

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    flightModel.ml 10.52 KiB
    (*
     *  $Id$
     *
     * Basic flight model for simulation
     *
     * Copyright (C) 2004-2006 Pascal Brisset, Antoine Drouin
     *
     * This file is part of paparazzi.
     *
     * paparazzi is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 2, or (at your option)
     * any later version.
     *
     * paparazzi is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with paparazzi; see the file COPYING.  If not, write to
     * the Free Software Foundation, 59 Temple Place - Suite 330,
     * Boston, MA 02111-1307, USA.
     *
     *)
    
    open Stdlib
    open Printf
    
    let ios = fun x ->
      try int_of_string x with _ -> failwith (Printf.sprintf "int_of_string: '%s'" x)
    
    type meter = float
    type meter_s = float
    type radian = float
    type radian_s = float
    type state = {
        start : float;
        mutable t : float;
        mutable x : meter;
        mutable y : meter;
        mutable z : meter;
        mutable z_dot : meter_s;
        mutable psi : radian; (* Trigonometric *)
        mutable phi : radian;
        mutable theta : radian;
        mutable theta_dot : radian_s;
        mutable phi_dot : radian_s;
        mutable psi_dot : radian_s;
        mutable delta_a : float;
        mutable delta_b : float;
        mutable thrust : float;
        mutable air_speed : meter_s
      }
    
    module type SIG =
      sig
        val init : radian -> state
        val do_commands : state -> Stdlib.pprz_t array -> unit
        val nb_commands : int
        val nominal_airspeed : float (* m/s *)
        val max_bat_level : float (* V *)
        val roll_neutral_default : float (* rad *)
        val pitch_neutral_default : float (* rad *)
        val state_update : state -> float -> float * float * float -> float -> float -> unit
    	(** [state_update nom_airspeed state (wind_x, wind_y, wind_z) on_ground dt] With m/s for wind and s for
    	    dt *)
      end
    
    let get_xyz state = (state.x, state.y, state.z)