Code for autonomous rover for Sparkfun AVC. DataBus won 3rd in 2012 and the same code was used on Troubled Child, a 1986 Jeep Grand Wagoneer to win 1st in 2014.
Dependencies: mbed Watchdog SDFileSystem DigoleSerialDisp
SystemState.h
- Committer:
- shimniok
- Date:
- 2013-06-06
- Revision:
- 2:fbc6e3cf3ed8
- Parent:
- 1:cb84b477886c
- Child:
- 3:42f3821c4e54
File content as of revision 2:fbc6e3cf3ed8:
#ifndef _SYSTEMSTATE_H #define _SYSTEMSTATE_H #define SSBUF 0x3F // 0b0000 0011 1111 1111 /** System State is the main mechanism for communicating current realtime system state to * the rest of the system for logging, data display, etc. */ /* struct systemState * structure containing system sensor data ****** System Status * millis number of milliseconds since epoch (or startup) * current current draw in amps * voltage voltage in volts ****** Data reported by IMU * g[3] raw 3-axis gyro values; if using 1-axis, then store data in gx * gTemp Gyro temperature * a[3] raw 3-axis accelerometer values * m[3] raw 3-axis magnetometer values; if using 2d then store data in mx and my * gHeading independently calculated gyro heading in degrees * cHeading independently calculated compass heading in degrees ****** AHRS Estimates * roll, pitch, yaw estimated attitude in degrees relative to the world frame ****** Data reported by GPS * gpsLatitude raw GPS latitude in fractional degrees (e.g., 39.123456) * gpsLongitude raw GPS longitude in fractional degrees (e.g., -104.123456 * gpsCourse_deg raw GPS course in degrees * gpsSpeed_mps raw GPS speed in m/s * gpsHDOP raw GPS Horizontal Dilution of Precision * gpsSats raw GPS Satellite fix count ****** Odometry data * lrEncDistance left rear encoder distance since last log update * rrEncDistance right rear encoder distance since last log update * lrEncSpeed left rear encoder speed * rrEncSpeed right rear encoder speed * encHeading estimated heading based on encoder readings ****** Estimated Position and Heading * estLagHeading estimated heading in degrees, lagged to sync with gps * estHeading estimated current heading * estLatitude estimated latitude in fractional degrees (e.g., 39.123456) * estLongitude estimated longitude in fractional degrees (e.g., -104.123456) * estNorthing some algorithms use UTM. Estimated UTM northing * estEasting estimated UTM easting * estX, estY some algorithms use simple x, y distance from origin (meters) ****** Waypoint data * nextWaypoint integer ID of the next waypoint * bearing estimated bearing to next waypoint in degrees * distance estimated distance to next waypoint in meters ****** Control data * throttle raw servo setting(units?) * steering raw servo setting(units?) */ typedef struct { unsigned int millis; float current, voltage; int g[3]; int gTemp; int a[3]; int m[3]; float gHeading; float cHeading; //float roll, pitch, yaw; double gpsLatitude; double gpsLongitude; float gpsCourse_deg; float gpsSpeed_mps; float gpsHDOP; int gpsSats; float lrEncDistance, rrEncDistance; float lrEncSpeed, rrEncSpeed; float encHeading; float estHeading; float estLagHeading; double estLatitude, estLongitude; //double estNorthing, estEasting; float estX, estY; unsigned short nextWaypoint; float bearing; float distance; float gbias; float errAngle; float steerAngle; } SystemState; #endif