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.
Diff: Motion.cpp
- Revision:
- 27:f111ba194412
- Parent:
- 26:f964408401fa
- Child:
- 28:b7ce1e3bf08b
diff -r f964408401fa -r f111ba194412 Motion.cpp
--- a/Motion.cpp Tue May 15 17:57:59 2018 +0000
+++ b/Motion.cpp Tue May 15 18:34:39 2018 +0000
@@ -10,7 +10,7 @@
const float Motion::KD = 0.0f;
const int Motion::MOVE_DIST = 1605;
const float Motion::MOVE_SPEED = 50.0f;
-const float Motion::SCAN_SPEED = 50.0f;
+const float Motion::RUN_SPEED = 70.0f;
const float Motion::ROTATE_SPEED = 80.0f;
const float Motion::ACCEL_CONST = 3.5f; //2.212f
@@ -52,7 +52,8 @@
avgSpeed = ( abs(controller.getSpeedLeft()) + abs(controller.getSpeedRight()) ) * 0.5f;
- accel(MOVE_SPEED);
+ if (speedRun == true) accel(RUN_SPEED);
+ else accel(MOVE_SPEED);
control();
if ((distanceC) < 40.0f) {
@@ -122,7 +123,7 @@
avgSpeed = ( abs(controller.getSpeedLeft()) + abs(controller.getSpeedRight()) ) * 0.5f;
- accel(MOVE_SPEED);
+ accel(RUN_SPEED);
control();
if (distanceC < 101.0f && lastMove == false) {
@@ -173,7 +174,7 @@
}
- accel(SCAN_SPEED);
+ accel(MOVE_SPEED);
control();
if ((distanceC) < 40.0f) {
@@ -269,8 +270,8 @@
countsL = counterLeft.read();
countsR = counterRight.read();
- controller.setDesiredSpeedLeft(17.0f);
- controller.setDesiredSpeedRight(-83.0f);
+ controller.setDesiredSpeedLeft(24.15f);
+ controller.setDesiredSpeedRight(-115.85f);
while ((countsL - countsLOld) < 440 || (countsR - countsROld) > -2148) {
@@ -291,8 +292,8 @@
countsL = counterLeft.read();
countsR = counterRight.read();
- controller.setDesiredSpeedLeft(83.0f);
- controller.setDesiredSpeedRight(-17.0f);
+ controller.setDesiredSpeedLeft(115.85f);
+ controller.setDesiredSpeedRight(-24.15f);
while ((countsL - countsLOld) < 2148 || (countsR - countsROld) > -440) {
@@ -432,6 +433,9 @@
void Motion::runTask(int path[],int task, bool reverse, int junction) {
+ if (reverse == true) speedRun = 1;
+ else speedRun = 0;
+
switch(path[task]) {
case 1:
@@ -538,10 +542,14 @@
void Motion::accel(float targetSpeed) {
+ float fastSpeed;
+
+ if (speedRun == true) fastSpeed = targetSpeed*2.0f;
+ else fastSpeed = targetSpeed*2.8f;
avgSpeed = ( abs(controller.getSpeedLeft()) + abs(controller.getSpeedRight()) ) * 0.5f;
- if ( avgSpeed < targetSpeed && deceleration == false && acceleration == false) {
+ if (avgSpeed < targetSpeed && deceleration == false && acceleration == false) {
actSpeed = ACCEL_CONST * t.read()*60.0f;
@@ -549,13 +557,13 @@
actSpeed = 55.0f;
- }else if (avgSpeed < targetSpeed*2.8f && acceleration == true) {
+ }else if (avgSpeed < fastSpeed && acceleration == true) {
actSpeed = ACCEL_CONST * t.read()*60.0f;
}else if (avgSpeed > targetSpeed+5.0f && deceleration == true) {
- actSpeed = targetSpeed*2.8f - ACCEL_CONST * t.read()*60.0f;
+ actSpeed = fastSpeed - ACCEL_CONST * t.read()*60.0f;
}else if (avgSpeed < targetSpeed && deceleration == true) {
