Code to let Gr20's BioRobotics2017 robot come to live.
Dependencies: FastPWM MODSERIAL QEI mbed
ref.h
- Committer:
- megrootens
- Date:
- 2017-11-12
- Revision:
- 2:df0c6af898ac
- Parent:
- 0:caa8ee3bd882
- Child:
- 5:088917beb5e4
File content as of revision 2:df0c6af898ac:
/** * 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; /** * 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 kMaxSpeed = 0.05; // [m/s] const double kMaxStep = kMaxSpeed*kSampleTime; // [m] /** * Calibration motion; */ const double kCalibrationOmega = 20; // [deg/sec] const double kCalibrationError = 1; // [deg] const double kCalibrationOmegaStep = kCalibrationOmega*kSampleTime; // [deg] /** * Home angles */ const double kOriginTheta1 = robot::InverseKinematicsTheta(kMinX,kMinY,1);//[deg] const double kOriginTheta2 = robot::InverseKinematicsTheta(kMinX,kMinY,2); /** * 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(); }