Code for autonomous ground vehicle, Data Bus, 3rd place winner in 2012 Sparkfun AVC.

Dependencies:   Watchdog mbed Schedule SimpleFilter LSM303DLM PinDetect DebounceIn Servo

Revision:
0:826c6171fc1b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SystemState.h	Wed Jun 20 14:57:48 2012 +0000
@@ -0,0 +1,86 @@
+#ifndef _SYSTEMSTATE_H
+#define _SYSTEMSTATE_H
+
+#define SSBUF 0x2F
+
+/** 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            raw GPS course in degrees
+ * gpsSpeed             raw GPS speed in mph
+ * gpsHDOP              raw GPS Horizontal Dilution of Precision
+ ****** 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
+ * estHeading           estimated heading in degrees, this is the robot's reference for 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;
+    float gpsSpeed;
+    float gpsHDOP;
+    int gpsSats;
+    float lrEncDistance, rrEncDistance;
+    float lrEncSpeed, rrEncSpeed;
+    float encHeading;
+    float estHeading;
+    double estLatitude, estLongitude;
+    //double estNorthing, estEasting;
+    float estX, estY;
+    unsigned short nextWaypoint;
+    float bearing;
+    float distance;
+    float gbias;
+    float errAngle;
+    float leftRanger;
+    float rightRanger;
+    float centerRanger;
+    float crossTrackErr;
+} SystemState;
+
+#endif
\ No newline at end of file