Project Paint / Mbed 2 deprecated arm_control

Dependencies:   mbed QEI biquadFilter

Committer:
ronvbree
Date:
Wed Nov 02 16:29:13 2016 +0000
Revision:
7:a80cb6b06320
Parent:
3:1f47375270c5
Child:
12:8295c02d740f
zyxvw

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ronvbree 2:fc869e45e672 1 #include "robot.h"
ronvbree 2:fc869e45e672 2
ronvbree 2:fc869e45e672 3 /*
ronvbree 2:fc869e45e672 4 Pins
ronvbree 2:fc869e45e672 5 */
ronvbree 2:fc869e45e672 6
ronvbree 2:fc869e45e672 7 const PinName upperMotorDir = D7;
ronvbree 2:fc869e45e672 8 const PinName upperMotorPWM = D6;
ronvbree 2:fc869e45e672 9
ronvbree 2:fc869e45e672 10 const PinName lowerMotorDir = D4;
ronvbree 2:fc869e45e672 11 const PinName lowerMotorPWM = D5;
ronvbree 2:fc869e45e672 12
ronvbree 2:fc869e45e672 13 const PinName upperEncoderPin1 = D13;
ronvbree 2:fc869e45e672 14 const PinName upperEncoderPin2 = D12;
ronvbree 2:fc869e45e672 15
ronvbree 2:fc869e45e672 16 const PinName lowerEncoderPin1 = D10;
ronvbree 2:fc869e45e672 17 const PinName lowerEncoderPin2 = D9;
ronvbree 2:fc869e45e672 18
ronvbree 7:a80cb6b06320 19 const float initialArmLength = L_min;
ronvbree 2:fc869e45e672 20
ronvbree 2:fc869e45e672 21 /*
ronvbree 2:fc869e45e672 22 Constructor
ronvbree 2:fc869e45e672 23 */
ronvbree 2:fc869e45e672 24
ronvbree 2:fc869e45e672 25 Robot::Robot():
ronvbree 7:a80cb6b06320 26 upperArm(initialArmLength, upperMotorPWM, upperMotorDir, upperEncoderPin1, upperEncoderPin2),
ronvbree 7:a80cb6b06320 27 lowerArm(initialArmLength, lowerMotorPWM, lowerMotorDir, lowerEncoderPin1, lowerEncoderPin2) {
ronvbree 7:a80cb6b06320 28 killed = false;
ronvbree 2:fc869e45e672 29 }
ronvbree 2:fc869e45e672 30
ronvbree 2:fc869e45e672 31 /*
ronvbree 2:fc869e45e672 32 Methods
ronvbree 2:fc869e45e672 33 */
ronvbree 2:fc869e45e672 34
ronvbree 7:a80cb6b06320 35 // Update the arms
ronvbree 7:a80cb6b06320 36 void Robot::update() {
ronvbree 2:fc869e45e672 37 upperArm.update();
ronvbree 2:fc869e45e672 38 lowerArm.update();
ronvbree 2:fc869e45e672 39 }
ronvbree 2:fc869e45e672 40
ronvbree 2:fc869e45e672 41 // Set upper arm velocity (rad/s)
ronvbree 2:fc869e45e672 42 void Robot::setUpperArmVelocity(float referenceVelocity) {
ronvbree 7:a80cb6b06320 43 if (!killed) {
ronvbree 7:a80cb6b06320 44 upperArm.setVelocity(referenceVelocity);
ronvbree 7:a80cb6b06320 45 }
ronvbree 3:1f47375270c5 46 }
ronvbree 3:1f47375270c5 47
ronvbree 2:fc869e45e672 48 // Set lower arm velocity (rad/s) (multiplied with -1 because for some reason the directions are different for the two arms)
ronvbree 2:fc869e45e672 49 void Robot::setLowerArmVelocity(float referenceVelocity) {
ronvbree 7:a80cb6b06320 50 if (!killed) {
ronvbree 7:a80cb6b06320 51 lowerArm.setVelocity(-1 * referenceVelocity);
ronvbree 7:a80cb6b06320 52 }
ronvbree 2:fc869e45e672 53 }
ronvbree 2:fc869e45e672 54
ronvbree 2:fc869e45e672 55 // Turn off both arms
ronvbree 2:fc869e45e672 56 void Robot::kill() {
ronvbree 7:a80cb6b06320 57 killed = true;
ronvbree 2:fc869e45e672 58 upperArm.kill();
ronvbree 2:fc869e45e672 59 lowerArm.kill();
ronvbree 2:fc869e45e672 60 }
ronvbree 7:a80cb6b06320 61
ronvbree 7:a80cb6b06320 62 // Indicates if the robot has been killed
ronvbree 7:a80cb6b06320 63 bool Robot::isKilled() {
ronvbree 7:a80cb6b06320 64 return killed;
ronvbree 7:a80cb6b06320 65 }
ronvbree 7:a80cb6b06320 66
ronvbree 7:a80cb6b06320 67 // Get upper arm length
ronvbree 7:a80cb6b06320 68 float Robot::getUpperArmLength(){
ronvbree 7:a80cb6b06320 69 return upperArm.getLength();
ronvbree 7:a80cb6b06320 70 }
ronvbree 7:a80cb6b06320 71
ronvbree 7:a80cb6b06320 72 // Get lower arm length
ronvbree 7:a80cb6b06320 73 float Robot::getLowerArmLength(){
ronvbree 7:a80cb6b06320 74 return lowerArm.getLength();
ronvbree 7:a80cb6b06320 75 }