Paparazzi UAS  v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
ins_vectornav.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Michal Podhradsky, michal.podhradsky@aggiemail.usu.edu
3  * Utah State University, http://aggieair.usu.edu/
4  *
5  * This file is part of paparazzi.
6  *
7  * paparazzi is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * paparazzi is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with paparazzi; see the file COPYING. If not, write to
19  * the Free Software Foundation, 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
29 #ifndef INS_VECTORNAV_H
30 #define INS_VECTORNAV_H
31 
32 // Modules
33 #include "modules/gps/gps.h"
34 #include "modules/ins/ins.h"
35 
36 // Peripheral
38 
39 // Geodetic / Math
40 #include "math/pprz_algebra.h"
41 #include "math/pprz_geodetic_int.h"
43 #include "math/pprz_geodetic_int.h"
44 #include "math/pprz_isa.h"
45 
46 // Generated
47 #include "generated/airframe.h"
48 
49 // Systime
50 #include "mcu_periph/sys_time.h"
51 
52 // Abi
53 #include "modules/core/abi.h"
54 
55 
56 #if !defined INS_VN_BODY_TO_IMU_PHI && !defined INS_VN_BODY_TO_IMU_THETA && !defined INS_VN_BODY_TO_IMU_PSI
57 #define INS_VN_BODY_TO_IMU_PHI 0
58 #define INS_VN_BODY_TO_IMU_THETA 0
59 #define INS_VN_BODY_TO_IMU_PSI 0
60 #endif
61 
62 
63 // Ins implementation state (fixed point)
64 struct InsVectornav {
65  struct LtpDef_i ltp_def; // initial position
66  bool ltp_initialized; // status indicator
67 
68  // output LTP NED for telemetry messages
69  struct NedCoor_i ltp_pos_i;
70  struct NedCoor_i ltp_speed_i;
71  struct NedCoor_i ltp_accel_i;
72  struct LlaCoor_f lla_pos;
73  struct NedCoor_f ltp_accel_f;
74 
75  // baro [height above ground]
76  float baro_z;
77  float qfe;
78 
79  // Packet data
80  struct VNPacket vn_packet;
81  struct VNData vn_data;
82  enum VNStatus vn_status;
84 
85  // in fixed point for sending as ABI and telemetry msgs
86  struct Int32Vect3 accel_i;
87  struct Int32Rates gyro_i;
88 
91 };
92 
93 
94 // global INS state
95 extern struct InsVectornav ins_vn;
96 
97 extern void ins_vectornav_init(void);
98 extern void ins_vectornav_event(void);
99 extern void ins_vectornav_set_sacc(void);
100 extern void ins_vectornav_set_pacc(void);
101 extern void ins_vectornav_propagate(void);
102 extern void ins_vectornav_monitor(void);
103 
104 #endif /* INS_VECTORNAV_H */
Main include for ABI (AirBorneInterface).
Device independent GPS code (interface)
angular rates
definition of the local (flat earth) coordinate system
vector in North East Down coordinates
Integrated Navigation System interface.
struct NedCoor_f ltp_accel_f
Definition: ins_vectornav.h:73
struct NedCoor_i ltp_accel_i
Definition: ins_vectornav.h:71
void ins_vectornav_monitor(void)
Monitors vectornav data rate and changes GPS lock if the data rate is too low.
struct LlaCoor_f lla_pos
Definition: ins_vectornav.h:72
struct Int32Vect3 accel_i
Definition: ins_vectornav.h:86
void ins_vectornav_set_pacc(void)
Find maximum uncertainty (NED) position accuracy in cm.
struct VNData vn_data
Data struct.
Definition: ins_vectornav.h:81
void ins_vectornav_propagate(void)
Propagate the received states into the vehicle state machine.
struct VNPacket vn_packet
Packet struct.
Definition: ins_vectornav.h:80
struct InsVectornav ins_vn
Definition: ins_vectornav.c:32
float baro_z
z-position calculated from baro in meters (z-down)
Definition: ins_vectornav.h:76
bool ltp_initialized
Definition: ins_vectornav.h:66
void ins_vectornav_set_sacc(void)
Set speed (velocity) uncertainty (NED) speed accuracy in cm/s.
struct OrientationReps body_to_imu
body_to_imu rotation
Definition: ins_vectornav.h:90
enum VNStatus vn_status
VN status.
Definition: ins_vectornav.h:82
struct NedCoor_i ltp_pos_i
Definition: ins_vectornav.h:69
struct Int32Rates gyro_i
Definition: ins_vectornav.h:87
struct NedCoor_i ltp_speed_i
Definition: ins_vectornav.h:70
void ins_vectornav_init(void)
Initialize Vectornav struct.
void ins_vectornav_event(void)
Event handling for Vectornav.
uint16_t vn_rate
data frequency
Definition: ins_vectornav.h:83
struct LtpDef_i ltp_def
Definition: ins_vectornav.h:65
Paparazzi generic algebra macros.
Paparazzi floating point algebra.
vector in Latitude, Longitude and Altitude
vector in North East Down coordinates Units: meters
Paparazzi fixed point math for geodetic calculations.
Paparazzi atmospheric pressure conversion utilities.
Architecture independent timing functions.
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
Definition: vl53l1_types.h:88
Vectornav VN-200 INS subsystem.
VNStatus
Definition: vn200_serial.h:77