Code to let Gr20's BioRobotics2017 robot come to live.

Dependencies:   FastPWM MODSERIAL QEI mbed

Revision:
7:b9a209f889f5
Parent:
5:088917beb5e4
Child:
8:383a0fb48121
--- a/ref.h	Mon Nov 13 09:34:39 2017 +0000
+++ b/ref.h	Mon Nov 13 10:39:55 2017 +0000
@@ -1,49 +1,51 @@
 #ifndef _REF_H_
 #define _REF_H_
+
+#include "robot.h"
+
 /**
  * Reference signals
  * __note that currently no safety limits are implemented__
  * simply use the min/max x&y values as a check
- *
- * Implementation can be found in main.cpp
  */
 namespace ref
 {
 // Sample time for reference signals
-const double kSampleTime = 0.01;
+static const double kSampleTime = 0.01;
 
 /**
  * Allowed range of motion and linear speed
  */
-const double kMinX = 0.280;  // [m]
-const double kMaxX = 0.560;  // [m]
+static const double kMinX = 0.280;  // [m]
+static const double kMaxX = 0.560;  // [m]
 
-const double kMinY = -0.140; // [m]
-const double kMaxY =  0.170; // [m]
+static const double kMinY = -0.140; // [m]
+static const double kMaxY =  0.170; // [m]
 
-const double kMaxSpeed = 0.05;                 // [m/s]
-const double kMaxStep = kMaxSpeed*kSampleTime; // [m]
+static const double kMaxSpeed = 0.05;                 // [m/s]
+static const double kMaxStep = kMaxSpeed*kSampleTime; // [m]
 
 /**
  * Calibration motion;
  */
-const double kCalibrationOmega = 20; // [deg/sec]
-const double kCalibrationError = 1;  // [deg]
-const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime; // [deg]
+static const double kCalibrationOmega = 20; // [deg/sec]
+static const double kCalibrationError = 1;  // [deg]
+static const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime; // [deg]
 
 
 /**
  * Home angles
  */
-const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1);//[deg]
-const double kOriginTheta2 = robot::InverseKinematicsTheta(kMinX,kMinY,2);
+static const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1);//[deg]
+static const double kOriginTheta2 = robot::InverseKinematicsTheta(kMinX,kMinY,2);
+
 
 /**
  * Demo coordinates for linear movement between points
  */
-int i_demo_coord = 0;
-const int kNumDemoCoords = 9;
-const double kDemoCoords[2][kNumDemoCoords]  {
+extern int i_demo_coord;
+static const int kNumDemoCoords = 9;
+static const double kDemoCoords[2][kNumDemoCoords]  {
     {kMinX, kMaxX, kMaxX, kMinX, kMinX, kMaxX, kMaxX, kMinX, kMinX},
     {kMinY, kMinY, kMaxY, kMaxY, kMinY, kMaxY, kMinY, kMaxY, kMaxY}
 };
@@ -51,8 +53,8 @@
 /**
  * Current reference signal; motor angles and (x,y) through forward kinematics
  */
-double theta_1 = 0;
-double theta_2 = 0;
+extern double theta_1;
+extern double theta_2;
 
 double get_ref_x();
 double get_ref_y();