![]() |
WarpTwin
Documentation for WarpTwin models and classes.
|
GNC App for performing the propagation step of an EKF when an IMU is available to report the angular velocity and acceleration (without gravity). This app is an implementation if a strapdown IMU based dead-reckoning integration of an objects position, velocity, and attitude relative to some inertial frame (this frame can be pseudoinertial, use your best judgement). This form of propagation step is best used if there are significant external/internal forces other than gravity acting on the system, also forces that cannot be modeled easily as functions of the state vector. More...
#include <DeadReckon.h>

Classes | |
| struct | Params |
| struct | Inputs |
| struct | Outputs |
Public Member Functions | |
| DeadReckon (FlightExecutive &executive) | |
| virtual | ~DeadReckon () |
| int16 | activate () override |
| Activate the app. The app will step when active. | |
| int16 | deactivate () override |
| Deactivate the app. The app will not step when deactivated. | |
| int16 | command (uint16 apid, uint8 *buffer, uint16 size) override |
| Process commands issued to the app. | |
| int16 | getLastValidMeasurement (clockwerk::CartesianVector< 3 > &gyroMeas_IMU_tI__IMU, clockwerk::CartesianVector< 3 > &accelMeas_IMU_tI__IMU, floating_point &time_stamp) |
| Getter function to see the internally stored last valid measurement. | |
| Public Member Functions inherited from warpos::App | |
| App (FlightExecutive &executive, const char *name, uint16 apid, uint8 instance=0) | |
| Executive-based constructor for the task. | |
| virtual | ~App () |
| Destructor. Doesn't really do anything. | |
| int16 | startup () |
| Initialize the app. Should be called once before step. | |
| int16 | step () |
| Step the app by a single step. Maps params, inputs, etc. to outputs. | |
| log_level_e | logLevel () |
| Get the log level set for the executive. | |
| void | logLevel (log_level_e log_level) |
| Set the executive log level. | |
| bool | isStarted () |
| Return whether task startup has been run. | |
| uint16 | apid () |
| Get the apid for this app. | |
| uint8 & | instance () |
| Get the instance of this app (used to differentiate between multiple instances of the same app). | |
| Public Member Functions inherited from clockwerk::GraphTreeObject | |
| GraphTreeObject (const char *gt_nme="", GraphTreeObject **storage_array=nullptr, uint32 storage_size=0) | |
| Name-based constructor for GraphTreeObject which will have no children by default. | |
| virtual | ~GraphTreeObject () |
| Destructor. | |
| GraphTreeObject * | parent () |
| Functions to get object's parent/children. | |
| GraphTreeObject ** | children () |
| GraphTreeObject * | childAtIndex (uint8 i) const |
| int16 | parent (GraphTreeObject *new_parent) |
| Function to assign the node's parent via pointer. | |
| int16 | parent (GraphTreeObject &new_parent) |
| Function to assign the node's parent via reference. | |
| uint8 | nChildren () const |
| Getters for number of children and descendants. | |
| uint16 | nDescendants () const |
| uint8 | capacity () const |
| const char * | name () const |
| Getter and setter for object name. | |
| int16 | name (const char *new_name) |
| uint8 | rank () |
| Getter for the object rank. | |
| int8 | type () |
| Function to indicate type – -1 by default unless implemented downstream. | |
| bool | loggable () |
| Getter for object logability flag – note no setter because should only be set by this or a derived class in its definition. | |
| GraphTreeObject * | getRootDataPointer () |
| Get the pointer to the highest object in the graph tree. | |
| virtual int16 | str (char *output, size_t size) const |
| Get object represented as string. | |
| virtual int16 | fromStr (const char *val) |
| Set value of graphtreeobject from string. | |
Public Attributes | |
| Params | params = Params(this, "params") |
| Inputs | inputs = Inputs(this, "inputs") |
| Outputs | outputs = Outputs(this, "outputs") |
| Public Attributes inherited from warpos::App | |
| clockwerk::DataIO< bool > | active = clockwerk::DataIO<bool>(this, "active", true) |
| The active flag for the task – set to true by default. | |
Protected Member Functions | |
| int16 | start () override |
| int16 | execute () override |
| Protected Member Functions inherited from clockwerk::GraphTreeObject | |
| int16 | _setStorage (GraphTreeObject **storage_array, uint8 storage_size) |
| Getter for object's string address. | |
| void | _recalculateDescendants () |
| Function to recursively re-calculate the number of descendants of a given node on the tree. | |
| void | _recalculateRank () |
| Function to recursively re-calculate the rank of a given node on the tree. | |
| int16 | _addChild (GraphTreeObject *child) |
| Function to decompose a string into a series of substrings via indexing. | |
| int16 | _removeChild (GraphTreeObject *child) |
| Function to remove a child from the graph node's children. | |
Protected Attributes | |
| InertialNavigationDynamics | _dynamics |
| Reference variable to the internal Dynamics. | |
| ForwardEulerIntegrator< INERTIAL_NAVIGATION_STATE_VECTOR_ELEMENTS+INERTIAL_NAVIGATION_STATE_VECTOR_ELEMENTS *INERTIAL_NAVIGATION_STATE_VECTOR_ELEMENTS > | _integrator |
| Reference variable to the internal Integrator. | |
| EkfTimeUpdate< INERTIAL_NAVIGATION_STATE_VECTOR_ELEMENTS > | _time_update |
| Reference variable to the internal EkfTimeUpdate. | |
| std::array< floating_point, 3 > | _dummy3 |
| Dummy temporary array for swapping between std::array and clockwerk::CartesianVector. | |
| std::array< floating_point, 4 > | _dummy4 |
| inertial_nav::PropagateObsVector | _dummyObs |
| clockwerk::CartesianVector< 3 > | _last_valid_gyro_meas |
| Internally stored last valid measurement. | |
| clockwerk::CartesianVector< 3 > | _last_valid_accel_meas |
| floating_point | _last_valid_meas_time_stamp |
| bool | _valid_measurement_saved = false |
| Boolean value to track if a valid measurement has been internally saved yet. | |
| inertial_nav::StateVector | _state_input_array |
| Temporary variables for the array input/outputs passed into the EkfTimeUpdate object. | |
| inertial_nav::StateVector | _state_output_array |
| inertial_nav::PropagateObsVector | _state_observer_array |
| clockwerk::CartesianVector< 3 > | _gyroMeas_B_pI__B |
| Internal variables for the transformed measurements. | |
| clockwerk::CartesianVector< 3 > | _accelMeas_B_pI__B |
| clockwerk::CartesianVector< 3 > | _approximate_ang_accel = clockwerk::CartesianVector<3>({0.0, 0.0, 0.0}) |
| Internally saved approximated angular acceleration. | |
| clockwerk::Quaternion | _unit_quat |
| Temporary variable for unitizing a quaternion. | |
| tlm_gnc_inert_prop_state | _tlm_a_priori_state |
| Packet to hold state after propagation. | |
| Protected Attributes inherited from warpos::App | |
| FlightExecutive & | exc |
| Override our executive to include the FlightExecutive instead. | |
| int16 | _error = 0 |
| Internal variable to track and return error on app step through. | |
| uint16 | _apid = 0 |
| Internal variable to hold the APID for this app. | |
| bool | _is_started = false |
| Flag indicating whether app has been started or not. | |
| log_level_e | _local_log_level = log_level_e::LOG_WARNING |
| The log level for this particular app. | |
| GraphTreeObject * | _app_children [MAXIMUM_APP_CHILDREN] |
| Local storage for App children so it can live on the graph tree. | |
| uint8 | _instance |
| Instance number of this app. Used to differentiate between multiple instances of the same app. | |
| Protected Attributes inherited from clockwerk::GraphTreeObject | |
| GraphTreeObject * | _parent = nullptr |
| GraphTreeObject ** | _children_ptr = nullptr |
| uint32 | _max_num_children = 0 |
| uint16 | _num_descendants = 0 |
| char | _name [MAXIMUM_NAME_CHARS] = "" |
| String name for object. | |
| uint8 | _num_children = 0 |
| Number of direct children of the tree (not including the tree itself). | |
| uint8 | _rank = 0 |
| int8 | _graph_tree_type = BASE_GRAPH_TREE |
| Variable to store graph tree object type. | |
| bool | _loggable = false |
| Variable to indicate whether the selected object is loggable. Set to false by default. | |
| uint32 | _index = 0 |
| Index pointing to the next write location for the graph tree children. | |
GNC App for performing the propagation step of an EKF when an IMU is available to report the angular velocity and acceleration (without gravity). This app is an implementation if a strapdown IMU based dead-reckoning integration of an objects position, velocity, and attitude relative to some inertial frame (this frame can be pseudoinertial, use your best judgement). This form of propagation step is best used if there are significant external/internal forces other than gravity acting on the system, also forces that cannot be modeled easily as functions of the state vector.
Author: James Tabony james.nosp@m..tab.nosp@m.ony@a.nosp@m.ttx..nosp@m.tech
| warpos::DeadReckon::DeadReckon | ( | FlightExecutive & | executive | ) |
|
inlinevirtual |
|
overridevirtual |
Activate the app. The app will step when active.
Reimplemented from warpos::App.
|
overridevirtual |
Process commands issued to the app.
| apid | The APID of the command sent |
| buffer | Pointer to the location of the buffer holding the command |
| size | The size of the command being sent |
Reimplemented from warpos::App.
|
overridevirtual |
Deactivate the app. The app will not step when deactivated.
Reimplemented from warpos::App.
|
overrideprotectedvirtual |
Reimplemented from warpos::App.
| int16 warpos::DeadReckon::getLastValidMeasurement | ( | clockwerk::CartesianVector< 3 > & | gyroMeas_IMU_tI__IMU, |
| clockwerk::CartesianVector< 3 > & | accelMeas_IMU_tI__IMU, | ||
| floating_point & | time_stamp ) |
Getter function to see the internally stored last valid measurement.
| [out] | gyroMeas_IMU_tI__IMU | Gyroscope measurement |
| [out] | accelMeas_IMU_tI__IMU | Accelerometer measurement |
| [out] | time_stamp | Time stamp of the measurement |
|
overrideprotectedvirtual |
Reimplemented from warpos::App.
|
protected |
|
protected |
Internally saved approximated angular acceleration.
|
protected |
Dummy temporary array for swapping between std::array and clockwerk::CartesianVector.
|
protected |
|
protected |
|
protected |
Reference variable to the internal Dynamics.
|
protected |
Internal variables for the transformed measurements.
|
protected |
Reference variable to the internal Integrator.
|
protected |
|
protected |
Internally stored last valid measurement.
|
protected |
|
protected |
Temporary variables for the array input/outputs passed into the EkfTimeUpdate object.
|
protected |
|
protected |
|
protected |
Reference variable to the internal EkfTimeUpdate.
|
protected |
Packet to hold state after propagation.
|
protected |
Temporary variable for unitizing a quaternion.
|
protected |
Boolean value to track if a valid measurement has been internally saved yet.