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

Dependencies:   FastPWM MODSERIAL QEI mbed

Revision:
2:df0c6af898ac
Parent:
1:ff11ee1c6baa
Child:
5:088917beb5e4
--- a/robot.h	Sun Nov 12 12:05:22 2017 +0000
+++ b/robot.h	Sun Nov 12 14:06:23 2017 +0000
@@ -21,10 +21,15 @@
 
 /**
  * Robot
+ *
+ * Implementation can be found in main.cpp
  */
 namespace robot
 {
+// sample time
+const double kSampleTime = 0.001;
 
+// Robot states
 enum State {
     OFF,
     CALIBRATION,
@@ -34,6 +39,7 @@
     MANUAL
 };
 
+// Robot state description
 const char *StateNames[] = {
     "Off",
     "Calibration",
@@ -43,26 +49,33 @@
     "Manual"
 };
 
+// State changing
 void SwitchState(State new_state);
 void GoToNextState();
 
-State state = OFF;
 
-const double kSampleTime = 0.001;
-
+/**
+ * Robot properties
+ */
 const double kL1 = 0.30;
 const double kL2 = 0.38;
 
 const double kCalibAngleMotor1 = 140;
-const double kCalibAngleMotor2 = 0;
+const double kCalibAngleMotor2 = -3;
 
-
+/**
+ * Motors and controllers
+ */
 Motor m1(M1_PWM, M1_DIR, M1_ENC_A, M1_ENC_B, GEAR_RATIO*COUNTS_PER_REV);
 Motor m2(M2_PWM, M2_DIR, M2_ENC_A, M2_ENC_B, GEAR_RATIO*COUNTS_PER_REV, true);
 
-Controller c1(.200,.100,0.020,kSampleTime);
-Controller c2(.200,.100,0.020,kSampleTime);
+Controller c1(.500,.200,0.070,kSampleTime);
+Controller c2(.400,.200,0.050,kSampleTime);
 
+/**
+ * Robot state
+ */
+State state = OFF;
 bool is_calibrated = false;
 
 bool has_power();
@@ -71,14 +84,19 @@
 double get_x();
 double get_y();
 
+/**
+ * Forward and inverse kinematics
+ */
 double ForwardKinematicsX(double theta_1, double theta_2);
 double ForwardKinematicsY(double theta_1, double theta_2);
-
 double InverseKinematicsTheta(double x, double y, int i);
 
+/**
+ * Robot actions
+ */
 void Start();
 void Stop();
 void ControlLoop();
 
 void SetCalibrationAngles();
-}
\ No newline at end of file
+}