Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
nps_sensor_mag.c
Go to the documentation of this file.
1#include "nps_sensor_mag.h"
2
3#include "generated/airframe.h"
4#include "nps_fdm.h"
5#include "nps_sensors.h"
7
27
28void nps_sensor_mag_run_step(struct NpsSensorMag *mag, double time, struct DoubleRMat *body_to_imu)
29{
30
31 if (time < mag->next_update) {
32 return;
33 }
34
35 /* transform magnetic field to body frame */
36 struct DoubleVect3 h_body;
38
39 /* transform to imu frame */
40 struct DoubleVect3 h_imu;
41 MAT33_VECT3_MUL(h_imu, *body_to_imu, h_body);
42
43 /* transform to sensor frame */
44 struct DoubleVect3 h_sensor;
46
47 /* compute magnetometer reading */
49 VECT3_ADD(mag->value, mag->neutral);
50 /* FIXME: ADD error reading */
51
52 /* round signal to account for adc discretisation */
54 /* saturate */
55 VECT3_BOUND_CUBE(mag->value, mag->min, mag->max);
56
57 mag->next_update += NPS_MAG_DT;
58 mag->data_available = TRUE;
59}
60
void double_quat_vmult(struct DoubleVect3 *v_out, struct DoubleQuat *q, struct DoubleVect3 *v_in)
static void double_rmat_of_eulers(struct DoubleRMat *rm, struct DoubleEulers *e)
#define DOUBLE_VECT3_ROUND(_v)
rotation matrix
#define FLOAT_MAT33_DIAG(_m, _d00, _d11, _d22)
#define VECT3_BOUND_CUBE(_v, _min, _max)
#define MAT33_VECT3_MUL(_vout, _mat, _vin)
#define VECT3_ASSIGN(_a, _x, _y, _z)
#define VECT3_ADD(_a, _b)
uint16_t foo
Definition main_demo5.c:58
struct DoubleVect3 ltp_h
Definition nps_fdm.h:105
struct DoubleQuat ltp_to_body_quat
Definition nps_fdm.h:91
struct NpsFdm fdm
Holds all necessary NPS FDM state information.
void nps_sensor_mag_init(struct NpsSensorMag *mag, double time)
void nps_sensor_mag_run_step(struct NpsSensorMag *mag, double time, struct DoubleRMat *body_to_imu)
struct DoubleVect3 neutral
struct DoubleMat33 sensitivity
struct DoubleVect3 value
struct DoubleVect3 noise_std_dev
struct DoubleRMat imu_to_sensor_rmat
Paparazzi fixed point algebra.
#define TRUE
Definition std.h:4
#define FALSE
Definition std.h:5