As title.
How many kinds of GPS protocol are supported in openimu300 opensource code?
OpenIMU open-source code has built-in support for the following GPS protocols:
- NOVATEL_BINARY
- NMEA_TEXT
- SIRF_BINARY
However, NMEA is not recommened since it lacks some infomation required by the fusion algorithm.
A framework to support other GPS protocols is provided. Users can refer to driverGPS.c for details.
Generally a GPS receiver should provide information to fill the members of the following struct:
typedef struct {
int gpsValid; // 1 if data is valid
uint8_t updateFlag; // 1 if contains new data
double latitude; // latitude , degrees
double longitude; // longitude, degrees
double vNed[3]; // velocities, m/s NED (North East Down) x, y, z
double trueCourse; // [deg]
double rawGroundSpeed; // NMEA kph, SiRf m/s - change to m/s
double altitude; // above ellipsoid [m]
double GPSSecondFraction;
float altEllipsoid; // [km] altitude above ellipsoid for WMM
uint32_t itow; // gps Time Of Week, miliseconds
uint8_t GPSmonth; // mm
uint8_t GPSday; // dd
uint8_t GPSyear; // yy last two digits of year
char GPSHour; // hh
char GPSMinute; // mm
char GPSSecond; // ss
float GPSHorizAcc, GPSVertAcc;
float HDOP;
} gpsDataStruct_t;