![]() |
WarpTwin
Documentation for WarpTwin models and classes.
|
GNC App for performing the GPS measurement update step of an EKF when a GPS receiver is available to report the vehicle position in a known reference frame (e.g., ECEF, ECI, or NED). This app implements the EKF measurement correction step by comparing the measured GPS position (after necessary frame and lever-arm transformations) to the predicted position from the EKF state. More...
#include <GPSUpdate.h>

Classes | |
| struct | Params |
| struct | Inputs |
| struct | Outputs |
Public Member Functions | |
| GPSUpdate (FlightExecutive &executive) | |
| virtual | ~GPSUpdate () |
| 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. | |
| inertial_nav::MagMeasVector | getResidual () |
| Getter function to grab the internal residual. | |
| 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 | |
| GPSMeasurements< inertial_nav::STATE_SIZE > | _measurements |
| Reference variable to the internal Measurements. | |
| EkfMeasurementUpdate< inertial_nav::STATE_SIZE, GPS_MEASUREMENT_VECTOR_ELEMENTS, GPS_MEASUREMENT_OBSERVER_VECTOR_ELEMENTS > | _measUpdate |
| Reference variable to the internal EkfMeasurementsUpdate. | |
| 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::MagObsVector | _dummyObs |
| inertial_nav::StateVector | _state_input_array |
| Temporary variables for the array input/outputs passed into the EkfMeasurementUpdate object. | |
| inertial_nav::StateVector | _state_output_array |
| inertial_nav::GpsObsVector | _state_observer_array |
| Temporary variables for the array input/outputs passed into the EkfMeasurementUpdate object. | |
| inertial_nav::GpsMeasVector | _measurement_array |
| Temporary variables for the array input/outputs passed into the EkfMeasurementUpdate object. | |
| inertial_nav::GpsMeasVector | _residual |
| clockwerk::CartesianVector< 3 > | _gps_meas_vec_B_pI__pI |
| Internal variables for the transformed measurements. | |
| clockwerk::Quaternion | _unit_quat |
| Temporary variable for unitizing a quaternion. | |
| tlm_gnc_gps_update_state | _tlm_a_posteriori_state |
| Packet to hold state after measurement incorporation. | |
| clockwerk::Time | _repeat_check_time |
| Variables to verify we are not processing stale measurements. | |
| clockwerk::CartesianVector< 3 > | _repeat_check_meas |
| 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 GPS measurement update step of an EKF when a GPS receiver is available to report the vehicle position in a known reference frame (e.g., ECEF, ECI, or NED). This app implements the EKF measurement correction step by comparing the measured GPS position (after necessary frame and lever-arm transformations) to the predicted position from the EKF state.
This update step is primarily used to correct drift in position and velocity estimates that accumulate during IMU-only dead-reckoning propagation. By incorporating absolute GPS position fixes, the EKF can bound long-term error growth in navigation states.
The method assumes that the GPS receiver outputs position in a global reference frame (commonly ECEF or ECI) and that the transformation between the GPS antenna phase center, the body frame, and the EKF state reference frame is known. Corrections account for lever-arm offsets between the GPS sensor and the body center of gravity as well as orientation differences between the reporting frame and the pseudo-inertial frame used by the EKF.
Author: James Tabony james.nosp@m..tab.nosp@m.ony@a.nosp@m.ttx..nosp@m.tech
| warpos::GPSUpdate::GPSUpdate | ( | 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.
|
inline |
Getter function to grab the internal residual.
|
overrideprotectedvirtual |
Reimplemented from warpos::App.
|
protected |
Dummy temporary array for swapping between std::array and clockwerk::CartesianVector.
|
protected |
|
protected |
|
protected |
Internal variables for the transformed measurements.
|
protected |
Reference variable to the internal EkfMeasurementsUpdate.
|
protected |
Temporary variables for the array input/outputs passed into the EkfMeasurementUpdate object.
|
protected |
Reference variable to the internal Measurements.
|
protected |
|
protected |
Variables to verify we are not processing stale measurements.
|
protected |
|
protected |
Temporary variables for the array input/outputs passed into the EkfMeasurementUpdate object.
|
protected |
Temporary variables for the array input/outputs passed into the EkfMeasurementUpdate object.
|
protected |
|
protected |
Packet to hold state after measurement incorporation.
|
protected |
Temporary variable for unitizing a quaternion.