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

Dependencies:   FastPWM MODSERIAL QEI mbed

Committer:
megrootens
Date:
Sun Nov 12 00:14:05 2017 +0000
Revision:
0:caa8ee3bd882
Child:
2:df0c6af898ac
setup code. too much play in gears and axles slip. But performance already better than bio robotics.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
megrootens 0:caa8ee3bd882 1 /**
megrootens 0:caa8ee3bd882 2 * Reference signals
megrootens 0:caa8ee3bd882 3 */
megrootens 0:caa8ee3bd882 4 namespace ref
megrootens 0:caa8ee3bd882 5 {
megrootens 0:caa8ee3bd882 6 const double kSampleTime = 0.01;
megrootens 0:caa8ee3bd882 7 const double kCalibrationOmega = 20; // [deg/sec]
megrootens 0:caa8ee3bd882 8 const double kCalibrationError = 1;
megrootens 0:caa8ee3bd882 9 const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime;
megrootens 0:caa8ee3bd882 10
megrootens 0:caa8ee3bd882 11 const double kMinX = 0.290;
megrootens 0:caa8ee3bd882 12 const double kMaxX = 0.600;
megrootens 0:caa8ee3bd882 13
megrootens 0:caa8ee3bd882 14 const double kMinY = -0.140;
megrootens 0:caa8ee3bd882 15 const double kMaxY = 0.190;
megrootens 0:caa8ee3bd882 16
megrootens 0:caa8ee3bd882 17 const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1);
megrootens 0:caa8ee3bd882 18 const double kOriginTheta2 = robot::InverseKinematicsTheta(kMinX,kMinY,2);
megrootens 0:caa8ee3bd882 19
megrootens 0:caa8ee3bd882 20 const double kMaxSpeed = 0.05;// [m/s]
megrootens 0:caa8ee3bd882 21 const double kMaxStep = kMaxSpeed*kSampleTime;
megrootens 0:caa8ee3bd882 22
megrootens 0:caa8ee3bd882 23 int i_demo_coord = 0;
megrootens 0:caa8ee3bd882 24 const int kNumDemoCoords = 9;
megrootens 0:caa8ee3bd882 25 const double kDemoCoords[2][kNumDemoCoords] {
megrootens 0:caa8ee3bd882 26 {kMinX, kMaxX, kMaxX, kMinX, kMinX, kMaxX, kMaxX, kMinX, kMinX},
megrootens 0:caa8ee3bd882 27 {kMinY, kMinY, kMaxY, kMaxY, kMinY, kMaxY, kMinY, kMaxY, kMaxY}
megrootens 0:caa8ee3bd882 28 };
megrootens 0:caa8ee3bd882 29
megrootens 0:caa8ee3bd882 30 double theta_1 = 0;
megrootens 0:caa8ee3bd882 31 double theta_2 = 0;
megrootens 0:caa8ee3bd882 32
megrootens 0:caa8ee3bd882 33 double get_ref_x();
megrootens 0:caa8ee3bd882 34 double get_ref_y();
megrootens 0:caa8ee3bd882 35
megrootens 0:caa8ee3bd882 36
megrootens 0:caa8ee3bd882 37
megrootens 0:caa8ee3bd882 38 void SetPositionAsReference();
megrootens 0:caa8ee3bd882 39
megrootens 0:caa8ee3bd882 40 void UpdateReference();
megrootens 0:caa8ee3bd882 41
megrootens 0:caa8ee3bd882 42 void CalibrationReference();
megrootens 0:caa8ee3bd882 43 void HomingReference();
megrootens 0:caa8ee3bd882 44 void DemoReference();
megrootens 0:caa8ee3bd882 45 }