Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ahrs_gx3.h File Reference

Driver for Microstrain GX3 IMU/AHRS subsystem. More...

#include "generated/airframe.h"
#include "subsystems/imu.h"
#include "subsystems/ins.h"
#include "subsystems/gps.h"
#include "mcu_periph/uart.h"
#include "state.h"
#include "led.h"
+ Include dependency graph for ahrs_gx3.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  GX3Packet
 
struct  AhrsGX3
 

Macros

#define GX3_MAX_PAYLOAD   128
 
#define GX3_MSG_LEN   67
 
#define GX3_HEADER   0xC8
 
#define GX3_MIN_FREQ   300
 
#define IMU_GX3_LONG_DELAY   4000000
 
#define PRIMARY_AHRS   ahrs_gx3
 

Enumerations

enum  GX3PacketStatus { GX3PacketWaiting, GX3PacketReading }
 

Functions

void gx3_packet_read_message (void)
 
void gx3_packet_parse (uint8_t c)
 
void ahrs_gx3_init (void)
 
void ahrs_gx3_align (void)
 
void ahrs_gx3_register (void)
 
void ahrs_gx3_publish_imu (void)
 
void imu_gx3_init (void)
 
void imu_gx3_periodic (void)
 
void imu_gx3_event (void)
 

Variables

struct AhrsGX3 ahrs_gx3
 Axis definition: X axis pointing forward, Y axis pointing to the right and Z axis pointing down. More...
 

Detailed Description

Driver for Microstrain GX3 IMU/AHRS subsystem.

Takes care of configuration of the IMU, communication and parsing the received packets. See GX3 datasheet for configuration options.

Author
Michal Podhradsky micha.nosp@m.l.po.nosp@m.dhrad.nosp@m.sky@.nosp@m.aggie.nosp@m.mail.nosp@m..usu..nosp@m.edu

Definition in file ahrs_gx3.h.


Data Structure Documentation

struct GX3Packet

Definition at line 54 of file ahrs_gx3.h.

Data Fields
uint32_t chksm_error
uint32_t hdr_error
bool msg_available
uint8_t msg_buf[GX3_MAX_PAYLOAD]
uint8_t msg_idx
uint8_t status
struct AhrsGX3

Definition at line 70 of file ahrs_gx3.h.

+ Collaboration diagram for AhrsGX3:
Data Fields
struct FloatVect3 accel measured acceleration in IMU frame
uint16_t chksm aux variable for checksum
float freq data frequency
bool is_aligned
uint32_t ltime aux time stamp
struct FloatQuat ltp_to_imu_quat Rotation from LocalTangentPlane to IMU frame as quaternions.
float mag_offset Difference between true and magnetic north.
struct GX3Packet packet Packet struct.
struct FloatRates rate measured angular rates in IMU frame
struct FloatRMat rmat measured attitude in IMU frame (rotational matrix)
uint32_t time GX3 time stamp.

Macro Definition Documentation

#define GX3_HEADER   0xC8

Definition at line 46 of file ahrs_gx3.h.

Referenced by gx3_packet_parse().

#define GX3_MAX_PAYLOAD   128

Definition at line 44 of file ahrs_gx3.h.

#define GX3_MIN_FREQ   300

Definition at line 47 of file ahrs_gx3.h.

#define GX3_MSG_LEN   67

Definition at line 45 of file ahrs_gx3.h.

Referenced by gx3_packet_parse(), and gx3_verify_chk().

#define IMU_GX3_LONG_DELAY   4000000

Definition at line 49 of file ahrs_gx3.h.

Referenced by imu_gx3_init().

#define PRIMARY_AHRS   ahrs_gx3

Definition at line 88 of file ahrs_gx3.h.

Enumeration Type Documentation

Enumerator
GX3PacketWaiting 
GX3PacketReading 

Definition at line 63 of file ahrs_gx3.h.

Function Documentation

void ahrs_gx3_align ( void  )

Definition at line 75 of file ahrs_gx3.c.

References ahrs_gx3, AhrsGX3::is_aligned, and uart_put_byte().

Referenced by imu_gx3_init().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ahrs_gx3_init ( void  )

Definition at line 327 of file ahrs_gx3.c.

References ahrs_gx3, Imu::body_to_imu, imu, AhrsGX3::is_aligned, AhrsGX3::ltp_to_imu_quat, AhrsGX3::mag_offset, orientationGetQuat_f(), and QUAT_COPY.

Referenced by ahrs_gx3_register().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ahrs_gx3_publish_imu ( void  )

Definition at line 353 of file ahrs_gx3.c.

References Imu::accel, get_sys_time_usec(), Imu::gyro, imu, IMU_GX3_ID, and Imu::mag.

Referenced by imu_gx3_event().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ahrs_gx3_register ( void  )
Todo:
: provide enable function

Definition at line 340 of file ahrs_gx3.c.

References ahrs_gx3_init(), and ahrs_register_impl().

+ Here is the call graph for this function:

void gx3_packet_parse ( uint8_t  c)

Definition at line 294 of file ahrs_gx3.c.

References ahrs_gx3, GX3Packet::chksm_error, GX3_HEADER, GX3_MSG_LEN, gx3_verify_chk(), GX3PacketReading, GX3PacketWaiting, GX3Packet::hdr_error, GX3Packet::msg_available, GX3Packet::msg_buf, GX3Packet::msg_idx, AhrsGX3::packet, and GX3Packet::status.

Referenced by ReadGX3Buffer().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void imu_gx3_event ( void  )

Definition at line 368 of file ahrs_gx3.c.

References ahrs_gx3, ahrs_gx3_publish_imu(), gx3_packet_read_message(), GX3Packet::msg_available, AhrsGX3::packet, ReadGX3Buffer(), and uart_char_available().

+ Here is the call graph for this function:

void imu_gx3_periodic ( void  )

Definition at line 218 of file ahrs_gx3.c.

Variable Documentation

struct AhrsGX3 ahrs_gx3

Axis definition: X axis pointing forward, Y axis pointing to the right and Z axis pointing down.

Positive pitch : nose up Positive roll : right wing down Positive yaw : clockwise

Definition at line 47 of file ahrs_gx3.c.

Referenced by ahrs_gx3_align(), ahrs_gx3_init(), gx3_packet_parse(), gx3_packet_read_message(), imu_gx3_event(), imu_gx3_init(), ReadGX3Buffer(), and send_gx3().