Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed QEI biquadFilter
robot.cpp@7:a80cb6b06320, 2016-11-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |