![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Code to let Gr20's BioRobotics2017 robot come to live.
Dependencies: FastPWM MODSERIAL QEI mbed
Diff: ref.h
- Revision:
- 2:df0c6af898ac
- Parent:
- 0:caa8ee3bd882
- Child:
- 5:088917beb5e4
--- a/ref.h Sun Nov 12 12:05:22 2017 +0000 +++ b/ref.h Sun Nov 12 14:06:23 2017 +0000 @@ -1,45 +1,68 @@ /** * 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; -const double kCalibrationOmega = 20; // [deg/sec] -const double kCalibrationError = 1; -const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime; + +/** + * Allowed range of motion and linear speed + */ +const double kMinX = 0.280; // [m] +const double kMaxX = 0.560; // [m] + +const double kMinY = -0.140; // [m] +const double kMaxY = 0.170; // [m] -const double kMinX = 0.290; -const double kMaxX = 0.600; +const double kMaxSpeed = 0.05; // [m/s] +const double kMaxStep = kMaxSpeed*kSampleTime; // [m] -const double kMinY = -0.140; -const double kMaxY = 0.190; +/** + * Calibration motion; + */ +const double kCalibrationOmega = 20; // [deg/sec] +const double kCalibrationError = 1; // [deg] +const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime; // [deg] -const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1); + +/** + * Home angles + */ +const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1);//[deg] const double kOriginTheta2 = robot::InverseKinematicsTheta(kMinX,kMinY,2); -const double kMaxSpeed = 0.05;// [m/s] -const double kMaxStep = kMaxSpeed*kSampleTime; - +/** + * Demo coordinates for linear movement between points + */ int i_demo_coord = 0; const int kNumDemoCoords = 9; const double kDemoCoords[2][kNumDemoCoords] { {kMinX, kMaxX, kMaxX, kMinX, kMinX, kMaxX, kMaxX, kMinX, kMinX}, {kMinY, kMinY, kMaxY, kMaxY, kMinY, kMaxY, kMinY, kMaxY, kMaxY} - }; +}; +/** + * Current reference signal; motor angles and (x,y) through forward kinematics + */ double theta_1 = 0; double theta_2 = 0; double get_ref_x(); double get_ref_y(); - - void SetPositionAsReference(); +/** + * Reference signal generation functions + */ void UpdateReference(); void CalibrationReference(); void HomingReference(); void DemoReference(); -} \ No newline at end of file +}