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

Dependencies:   FastPWM MODSERIAL QEI mbed

Committer:
megrootens
Date:
Mon Nov 13 10:45:29 2017 +0000
Revision:
8:383a0fb48121
Parent:
7:b9a209f889f5
Updated docs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
megrootens 5:088917beb5e4 1 #ifndef _REF_H_
megrootens 5:088917beb5e4 2 #define _REF_H_
megrootens 7:b9a209f889f5 3
megrootens 7:b9a209f889f5 4 #include "robot.h"
megrootens 7:b9a209f889f5 5
megrootens 0:caa8ee3bd882 6 /**
megrootens 8:383a0fb48121 7 * Reference signal generation.
megrootens 8:383a0fb48121 8 * Nte that currently no safety limits are implemented! One could simply use the
megrootens 8:383a0fb48121 9 * min/max x/y values as a check.
megrootens 0:caa8ee3bd882 10 */
megrootens 0:caa8ee3bd882 11 namespace ref
megrootens 0:caa8ee3bd882 12 {
megrootens 2:df0c6af898ac 13 // Sample time for reference signals
megrootens 7:b9a209f889f5 14 static const double kSampleTime = 0.01;
megrootens 2:df0c6af898ac 15
megrootens 2:df0c6af898ac 16 /**
megrootens 2:df0c6af898ac 17 * Allowed range of motion and linear speed
megrootens 2:df0c6af898ac 18 */
megrootens 7:b9a209f889f5 19 static const double kMinX = 0.280; // [m]
megrootens 7:b9a209f889f5 20 static const double kMaxX = 0.560; // [m]
megrootens 2:df0c6af898ac 21
megrootens 7:b9a209f889f5 22 static const double kMinY = -0.140; // [m]
megrootens 7:b9a209f889f5 23 static const double kMaxY = 0.170; // [m]
megrootens 0:caa8ee3bd882 24
megrootens 7:b9a209f889f5 25 static const double kMaxSpeed = 0.05; // [m/s]
megrootens 7:b9a209f889f5 26 static const double kMaxStep = kMaxSpeed*kSampleTime; // [m]
megrootens 0:caa8ee3bd882 27
megrootens 2:df0c6af898ac 28 /**
megrootens 2:df0c6af898ac 29 * Calibration motion;
megrootens 2:df0c6af898ac 30 */
megrootens 7:b9a209f889f5 31 static const double kCalibrationOmega = 20; // [deg/sec]
megrootens 7:b9a209f889f5 32 static const double kCalibrationError = 1; // [deg]
megrootens 7:b9a209f889f5 33 static const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime; // [deg]
megrootens 0:caa8ee3bd882 34
megrootens 2:df0c6af898ac 35
megrootens 2:df0c6af898ac 36 /**
megrootens 2:df0c6af898ac 37 * Home angles
megrootens 2:df0c6af898ac 38 */
megrootens 7:b9a209f889f5 39 static const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1);//[deg]
megrootens 7:b9a209f889f5 40 static const double kOriginTheta2 = robot::InverseKinematicsTheta(kMinX,kMinY,2);
megrootens 7:b9a209f889f5 41
megrootens 0:caa8ee3bd882 42
megrootens 2:df0c6af898ac 43 /**
megrootens 2:df0c6af898ac 44 * Demo coordinates for linear movement between points
megrootens 2:df0c6af898ac 45 */
megrootens 7:b9a209f889f5 46 extern int i_demo_coord;
megrootens 7:b9a209f889f5 47 static const int kNumDemoCoords = 9;
megrootens 7:b9a209f889f5 48 static const double kDemoCoords[2][kNumDemoCoords] {
megrootens 0:caa8ee3bd882 49 {kMinX, kMaxX, kMaxX, kMinX, kMinX, kMaxX, kMaxX, kMinX, kMinX},
megrootens 0:caa8ee3bd882 50 {kMinY, kMinY, kMaxY, kMaxY, kMinY, kMaxY, kMinY, kMaxY, kMaxY}
megrootens 2:df0c6af898ac 51 };
megrootens 0:caa8ee3bd882 52
megrootens 2:df0c6af898ac 53 /**
megrootens 2:df0c6af898ac 54 * Current reference signal; motor angles and (x,y) through forward kinematics
megrootens 2:df0c6af898ac 55 */
megrootens 7:b9a209f889f5 56 extern double theta_1;
megrootens 7:b9a209f889f5 57 extern double theta_2;
megrootens 0:caa8ee3bd882 58
megrootens 0:caa8ee3bd882 59 double get_ref_x();
megrootens 0:caa8ee3bd882 60 double get_ref_y();
megrootens 0:caa8ee3bd882 61
megrootens 0:caa8ee3bd882 62 void SetPositionAsReference();
megrootens 0:caa8ee3bd882 63
megrootens 2:df0c6af898ac 64 /**
megrootens 2:df0c6af898ac 65 * Reference signal generation functions
megrootens 2:df0c6af898ac 66 */
megrootens 0:caa8ee3bd882 67 void UpdateReference();
megrootens 0:caa8ee3bd882 68
megrootens 0:caa8ee3bd882 69 void CalibrationReference();
megrootens 0:caa8ee3bd882 70 void HomingReference();
megrootens 0:caa8ee3bd882 71 void DemoReference();
megrootens 2:df0c6af898ac 72 }
megrootens 5:088917beb5e4 73
megrootens 5:088917beb5e4 74 #endif