Code to let Gr20's BioRobotics2017 robot come to live.
Dependencies: FastPWM MODSERIAL QEI mbed
ref.h@0:caa8ee3bd882, 2017-11-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |