Paparazzi UAS
v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
|
#include "subsystems/ins/ins_int.h"
#include "subsystems/abi.h"
#include "subsystems/imu.h"
#include "subsystems/gps.h"
#include "generated/airframe.h"
#include "subsystems/ins/vf_float.h"
#include "math/pprz_geodetic_int.h"
#include "math/pprz_isa.h"
#include "math/pprz_stat.h"
#include "subsystems/datalink/telemetry.h"
Go to the source code of this file.
Macros | |
#define | VFF_R_AGL 0.2 |
#define | INS_VFF_R_GPS 2.0 |
#define | INS_VFF_VZ_R_GPS 2.0 |
#define | INS_MAX_PROPAGATION_STEPS 200 |
maximum number of propagation steps without any updates in between More... | |
#define | USE_INS_NAV_INIT TRUE |
#define | INS_BARO_MAX_INIT_VAR 1.f |
default barometer to use in INS More... | |
#define | INS_INT_BARO_ID ABI_BROADCAST |
#define | INS_INT_IMU_ID ABI_BROADCAST |
ABI binding for IMU data. More... | |
#define | INS_INT_GPS_ID GPS_MULTI_ID |
#define | INS_INT_VEL_ID ABI_BROADCAST |
ABI binding for VELOCITY_ESTIMATE. More... | |
#define | INS_INT_POS_ID ABI_BROADCAST |
#define | INS_INT_AGL_ID ABI_BROADCAST |
ABI binding for AGL. More... | |
#define | press_hist_len 10 |
Functions | |
static void | baro_cb (uint8_t sender_id, uint32_t stamp, float pressure) |
static void | accel_cb (uint8_t sender_id, uint32_t stamp, struct Int32Vect3 *accel) |
static void | gps_cb (uint8_t sender_id, uint32_t stamp, struct GpsState *gps_s) |
static void | vel_est_cb (uint8_t sender_id, uint32_t stamp, float x, float y, float z, float noise_x, float noise_y, float noise_z) |
static void | pos_est_cb (uint8_t sender_id, uint32_t stamp, float x, float y, float z, float noise_x, float noise_y, float noise_z) |
static void | agl_cb (uint8_t sender_id, uint32_t stamp, float distance) |
agl_cb This callback handles all estimates of the height of the vehicle above the ground under it This is only used with the extended version of the vertical float filter More... | |
static void | send_ins (struct transport_tx *trans, struct link_device *dev) |
static void | send_ins_z (struct transport_tx *trans, struct link_device *dev) |
static void | send_ins_ref (struct transport_tx *trans, struct link_device *dev) |
static void | ins_ned_to_state (void) |
copy position and speed to state interface More... | |
static void | ins_update_from_vff (void) |
update ins state from vertical filter More... | |
void | ins_int_init (void) |
void | ins_reset_local_origin (void) |
INS local origin reset. More... | |
void | ins_reset_altitude_ref (void) |
INS altitude reference reset. More... | |
void | ins_int_propagate (struct Int32Vect3 *accel, float dt) |
void | ins_int_update_gps (struct GpsState *gps_s) |
Variables | |
abi_event | baro_ev |
static abi_event | accel_ev |
static abi_event | gps_ev |
static abi_event | vel_est_ev |
static abi_event | pos_est_ev |
static abi_event | agl_ev |
The agl ABI event. More... | |
struct InsInt | ins_int |
global INS state More... | |
INS for rotorcrafts combining vertical and horizontal filters.
Definition in file ins_int.c.
#define INS_BARO_MAX_INIT_VAR 1.f |
#define INS_INT_AGL_ID ABI_BROADCAST |
#define INS_INT_BARO_ID ABI_BROADCAST |
#define INS_INT_GPS_ID GPS_MULTI_ID |
#define INS_INT_IMU_ID ABI_BROADCAST |
#define INS_INT_POS_ID ABI_BROADCAST |
#define INS_INT_VEL_ID ABI_BROADCAST |
#define INS_MAX_PROPAGATION_STEPS 200 |
#define press_hist_len 10 |
|
static |
Definition at line 540 of file ins_int.c.
References ins_int_propagate(), and PRINT_CONFIG_MSG().
Referenced by ins_int_init().
agl_cb This callback handles all estimates of the height of the vehicle above the ground under it This is only used with the extended version of the vertical float filter
Definition at line 501 of file ins_int.c.
Referenced by ins_int_init().
Definition at line 328 of file ins_int.c.
References InsInt::baro_initialized, InsInt::baro_z, f, idx, INS_BARO_MAX_INIT_VAR, ins_int, ins_update_from_vff(), InsInt::ltp_initialized, pprz_isa_height_of_pressure(), press_hist_len, InsInt::propagation_cnt, InsInt::qfe, stateGetPositionEnu_f(), variance_f(), InsInt::vf_reset, vff_realign(), vff_update(), vff_update_baro(), EnuCoor_f::x, and EnuCoor_f::y.
Referenced by ins_int_init().
Definition at line 554 of file ins_int.c.
References ins_int_update_gps().
Referenced by ins_int_init().
void ins_int_init | ( | void | ) |
Definition at line 198 of file ins_int.c.
References accel_cb(), accel_ev, agl_cb(), agl_ev, baro_cb(), baro_ev, InsInt::baro_initialized, DefaultPeriodic, gps_cb(), gps_ev, InsInt::hf_realign, hff_init(), ins_init_origin_i_from_flightplan(), ins_int, INS_INT_AGL_ID, INS_INT_BARO_ID, INS_INT_GPS_ID, INS_INT_IMU_ID, INS_INT_POS_ID, INS_INT_VEL_ID, INS_MAX_PROPAGATION_STEPS, INT32_VECT3_ZERO, InsInt::ltp_accel, InsInt::ltp_def, InsInt::ltp_initialized, InsInt::ltp_pos, InsInt::ltp_speed, pos_est_cb(), pos_est_ev, InsInt::propagation_cnt, register_periodic_telemetry(), send_ins(), send_ins_ref(), send_ins_z(), vel_est_cb(), vel_est_ev, InsInt::vf_reset, and vff_init_zero().
void ins_int_propagate | ( | struct Int32Vect3 * | accel, |
float | dt | ||
) |
Definition at line 283 of file ins_int.c.
References ACCEL_BFP_OF_REAL, ACCEL_FLOAT_OF_BFP, Imu::body_to_imu, hff_propagate(), imu, ins_int, INS_MAX_PROPAGATION_STEPS, ins_ned_to_state(), ins_update_from_vff(), int32_rmat_transp_vmult(), InsInt::ltp_accel, orientationGetRMat_i(), InsInt::propagation_cnt, stateGetNedToBodyRMat_i(), stateSetAccelBody_i(), vff_propagate(), NedCoor_i::x, Int32Vect3::x, NedCoor_i::y, Int32Vect3::y, NedCoor_i::z, and Int32Vect3::z.
Referenced by accel_cb().
void ins_int_update_gps | ( | struct GpsState * | gps_s | ) |
Definition at line 387 of file ins_int.c.
References GpsState::ecef_pos, GpsState::ecef_vel, f, GpsState::fix, GPS_FIX_3D, InsInt::hf_realign, hff_realign(), hff_update_gps(), ins_int, ins_ned_to_state(), ins_reset_local_origin(), INS_VFF_R_GPS, INS_VFF_VZ_R_GPS, INT32_POS_OF_CM_DEN, INT32_POS_OF_CM_NUM, int32_quat_vmult(), INT32_SPEED_OF_CM_S_DEN, INT32_SPEED_OF_CM_S_NUM, INT32_VECT2_SCALE_2, InsInt::ltp_def, InsInt::ltp_initialized, InsInt::ltp_pos, InsInt::ltp_speed, ned_of_ecef_point_i(), ned_of_ecef_vect_i(), InsInt::propagation_cnt, QUAT_INVERT, stateGetNedToBodyQuat_i(), VECT2_ASSIGN, VECT2_SDIV, VECT3_SUB, vff_update_vz_conf(), vff_update_z_conf(), NedCoor_i::x, Int32Vect3::x, NedCoor_i::y, and NedCoor_i::z.
Referenced by gps_cb().
|
static |
copy position and speed to state interface
Definition at line 505 of file ins_int.c.
References ins_int, InsInt::ltp_accel, InsInt::ltp_pos, InsInt::ltp_speed, nps_bypass_ins, sim_overwrite_ins(), stateSetAccelNed_i(), stateSetPositionNed_i(), and stateSetSpeedNed_i().
Referenced by ins_int_propagate(), ins_int_update_gps(), pos_est_cb(), and vel_est_cb().
void ins_reset_altitude_ref | ( | void | ) |
INS altitude reference reset.
Reset only vertical reference to the current altitude. Does nothing if not implemented by specific INS algorithm.
Definition at line 266 of file ins_int.c.
References LlaCoor_i::alt, gps, GpsFixValid, GpsState::hmsl, LtpDef_i::hmsl, ins_int, LlaCoor_i::lat, LtpDef_i::lla, GpsState::lla_pos, LlaCoor_i::lon, InsInt::ltp_def, ltp_def_from_lla_i(), State::ned_origin_i, state, stateSetLocalOrigin_i(), and InsInt::vf_reset.
void ins_reset_local_origin | ( | void | ) |
INS local origin reset.
Reset horizontal and vertical reference to the current position. Does nothing if not implemented by specific INS algorithm.
INS local origin reset.
Definition at line 244 of file ins_int.c.
References LlaCoor_i::alt, GpsState::ecef_pos, gps, GpsFixValid, InsInt::hf_realign, GpsState::hmsl, LtpDef_i::hmsl, ins_int, LtpDef_i::lla, GpsState::lla_pos, InsInt::ltp_def, ltp_def_from_ecef_i(), InsInt::ltp_initialized, stateSetLocalOrigin_i(), and InsInt::vf_reset.
Referenced by ins_int_update_gps().
|
static |
update ins state from vertical filter
Definition at line 519 of file ins_int.c.
References ACCEL_BFP_OF_REAL, ins_int, InsInt::ltp_accel, InsInt::ltp_pos, InsInt::ltp_speed, POS_BFP_OF_REAL, SPEED_BFP_OF_REAL, vff, VffExtended::z, NedCoor_i::z, VffExtended::zdot, and VffExtended::zdotdot.
Referenced by baro_cb(), and ins_int_propagate().
|
static |
Definition at line 626 of file ins_int.c.
References f, hff_update_pos(), ins_int, ins_ned_to_state(), InsInt::ltp_pos, POS_BFP_OF_REAL, InsInt::propagation_cnt, vff_update_z_conf(), FloatVect2::x, NedCoor_i::x, FloatVect2::y, and NedCoor_i::y.
Referenced by ins_int_init().
|
static |
Definition at line 166 of file ins_int.c.
References dev, ins_int, InsInt::ltp_accel, InsInt::ltp_pos, InsInt::ltp_speed, NedCoor_i::x, NedCoor_i::y, and NedCoor_i::z.
Referenced by ins_int_init().
|
static |
Definition at line 180 of file ins_int.c.
References LlaCoor_i::alt, dev, LtpDef_i::ecef, LtpDef_i::hmsl, ins_int, LlaCoor_i::lat, LtpDef_i::lla, LlaCoor_i::lon, InsInt::ltp_def, InsInt::ltp_initialized, InsInt::qfe, EcefCoor_i::x, EcefCoor_i::y, and EcefCoor_i::z.
Referenced by ins_int_init().
|
static |
Definition at line 174 of file ins_int.c.
References InsInt::baro_z, dev, ins_int, InsInt::ltp_accel, InsInt::ltp_pos, InsInt::ltp_speed, and NedCoor_i::z.
Referenced by ins_int_init().
|
static |
Definition at line 564 of file ins_int.c.
References f, float_quat_vmult(), hff_update_vel(), ins_int, ins_ned_to_state(), InsInt::ltp_pos, InsInt::ltp_speed, POS_BFP_OF_REAL, InsInt::propagation_cnt, QUAT_INVERT, SPEED_BFP_OF_REAL, stateGetNedToBodyQuat_f(), vff_update_vz_conf(), FloatVect3::x, NedCoor_i::x, FloatVect3::y, NedCoor_i::y, and FloatVect3::z.
Referenced by ins_int_init().
|
static |
Definition at line 123 of file ins_int.c.
Referenced by ins_int_init().
|
static |
abi_event baro_ev |
Definition at line 114 of file ins_int.c.
Referenced by ins_int_init().
|
static |
Definition at line 129 of file ins_int.c.
Referenced by ins_int_init().
struct InsInt ins_int |
global INS state
Definition at line 161 of file ins_int.c.
Referenced by baro_cb(), ins_int_init(), ins_int_propagate(), ins_int_update_gps(), ins_ned_to_state(), ins_reset_altitude_ref(), ins_reset_local_origin(), ins_update_from_vff(), pos_est_cb(), send_ins(), send_ins_ref(), send_ins_z(), and vel_est_cb().
|
static |
Definition at line 146 of file ins_int.c.
Referenced by ins_int_init().
|
static |
Definition at line 138 of file ins_int.c.
Referenced by ins_int_init().