This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf
Fork of autonomous Robot Android by
Diff: main.cpp
- Revision:
- 9:d3cdcdef9719
- Parent:
- 8:696c2f9dfc62
- Child:
- 10:09ddb819fdcb
diff -r 696c2f9dfc62 -r d3cdcdef9719 main.cpp --- a/main.cpp Sat Mar 30 06:55:08 2013 +0000 +++ b/main.cpp Sat Mar 30 16:35:22 2013 +0000 @@ -98,9 +98,9 @@ wait(0.1); robotControl.setEnable(true); wait(0.1); - robotControl.setAllToZero(0, 0, PI/2 ); + //robotControl.setAllToZero(0, 0, PI/2 ); + robotControl.setAllToZero(START_X_OFFSET, START_Y_OFFSET, PI/2 ); robotControl.start(); - // robotControl.setAllToZero(START_X_OFFSET, START_Y_OFFSET, PI/2 ); // robotControl.setDesiredPositionAndAngle(START_X_OFFSET, START_Y_OFFSET, PI/2); @@ -108,37 +108,32 @@ // wait(0.1); ////////////////////////////////////////// - - robotControl.setDesiredPositionAndAngle(0.0f, 1.0f, PI); - while(!(robotControl.getDistanceError() <= 0.1)) { - state.savePlotFile(s); - }; + /* + robotControl.setDesiredPositionAndAngle(0.0f, 1.0f, PI); + while(!(robotControl.getDistanceError() <= 0.1)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(-1.00f, 1.0f, -PI/2); - while(!(robotControl.getDistanceError() <= 0.1)) { - state.savePlotFile(s); - }; - - robotControl.setDesiredPositionAndAngle(-1.0f, 0.0f, 0); - while(!(robotControl.getDistanceError() <= 0.1)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(-1.00f, 1.0f, -PI/2); + while(!(robotControl.getDistanceError() <= 0.1)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(0.0f, -0.8f, PI/2); - while(!(robotControl.getDistanceError() <= 0.05)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(0.0f, -0.8f, PI/2); + while(!(robotControl.getDistanceError() <= 0.05)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(0.0f, -0.2f, PI/2); - while(!(robotControl.getDistanceError() <= 0.05)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(0.0f, -0.2f, PI/2); + while(!(robotControl.getDistanceError() <= 0.05)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(0.0, 0.0f, PI/2); - while(!(s.millis >= 65000)) { - state.savePlotFile(s); - }; - + robotControl.setDesiredPositionAndAngle(0.0, 0.0f, PI/2); + while(!(s.millis >= 32000)) { + state.savePlotFile(s); + }; + */ @@ -160,16 +155,30 @@ //////////////////////////////////////////////////////////////////////// + /* + + //Zum Umfang einstellen 2m fahren + robotControl.setDesiredPositionAndAngle(0.0f, 0.5f, PI/2); + while(!(robotControl.getDistanceError() <= 0.2)) { + state.savePlotFile(s); + }; + + robotControl.setDesiredPositionAndAngle(0.0f, 1.0f, PI/2); + while(!(robotControl.getDistanceError() <= 0.2)) { + state.savePlotFile(s); + }; + robotControl.setDesiredPositionAndAngle(0.0f, 1.5f, PI/2); + while(!(robotControl.getDistanceError() <= 0.2)) { + state.savePlotFile(s); + }; - //Zum Umfang einstellen 2m fahren - /* - robotControl.setDesiredPositionAndAngle(0.0f, 4.0f, PI/2); - while(!(s.millis >= 30000)) { - state.savePlotFile(s); - }; - */ + robotControl.setDesiredPositionAndAngle(0.0f, 2.0f, PI/2); + while(!(s.millis >= 30000)) { + state.savePlotFile(s); + }; + */ ///////////////oder//////////////////e @@ -193,78 +202,81 @@ while(!(s.millis >= 30000)) { state.savePlotFile(s); } + */ - //////////////////////////////////////////////////////// // Epä Parkour fahrä - /* - robotControl.setDesiredPositionAndAngle(START_X_OFFSET, START_Y_OFFSET, PI/2); - wait(0.1); - robotControl.setDesiredPositionAndAngle(-1.20f, 1.50f, 3*PI/4); - while(!(robotControl.getDistanceError() <= 0.4)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(START_X_OFFSET, START_Y_OFFSET, PI/2); + wait(0.1); - robotControl.setDesiredPositionAndAngle(-1.20f, 2.5f, PI/4); - while(!(robotControl.getDistanceError() <= 0.4)) { - state.savePlotFile(s); - }; - - robotControl.setDesiredPositionAndAngle(-0.45f, 3.2f, 3*PI/4); - while(!(robotControl.getDistanceError() <= 0.4)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(-1.50f, 1.50f, 3*PI/4); + while(!(robotControl.getDistanceError() <= 0.9)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(-1.0f, 3.6f, PI); - while(!(robotControl.getDistanceError() <= 0.2)) { - state.savePlotFile(s); - }; - - robotControl.setDesiredPositionAndAngle(-1.5f, 3.6f, PI); - while(!(robotControl.getDistanceError() <= 0.1)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(-1.20f, 2.1f, PI/4); + while(!(robotControl.getDistanceError() <= 0.7)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(-2.5f, 3.0f, -PI/2); - while(!(robotControl.getDistanceError() <= 0.4)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(-0.75f, 3.0f, PI/2); + while(!(robotControl.getDistanceError() <= 0.7)) { + state.savePlotFile(s); + }; - robotControl.setDesiredPositionAndAngle(-1.75f, 1.30f, -PI/2); - while(!(robotControl.getDistanceError() <= 0.06)) { - state.savePlotFile(s); - }; + robotControl.setDesiredPositionAndAngle(-1.0f, 3.75f, 3*PI/4); + while(!(robotControl.getDistanceError() <= 0.55)) { + state.savePlotFile(s); + }; - */ + robotControl.setDesiredPositionAndAngle(-1.5f, 3.6f, PI); + while(!(robotControl.getDistanceError() <= 0.1)) { + state.savePlotFile(s); + }; + + robotControl.setDesiredPositionAndAngle(-2.4f, 3.0f, -PI/2); + while(!(robotControl.getDistanceError() <= 1.0)) { + state.savePlotFile(s); + }; + + robotControl.setDesiredPositionAndAngle(-1.74f, 1.30f, -PI/2); + while(!(robotControl.getDistanceError() <= 0.1)) { + state.savePlotFile(s); + }; + robotControl.setDesiredPositionAndAngle(-1.75f, 0.80f, -PI/2); + while(!(s.millis >= 32000)) { + state.savePlotFile(s); +} - /* - printf("here we go... \n"); - AdkTerm.setupDevice(); - printf("Android Development Kit: start\r\n"); - USBInit(); - while (!(s.millis >= 60000)) { - USBLoop(); - printf("x: %f y: %f theta: %f", AdkTerm.getx(), AdkTerm.getx(), AdkTerm.getx() ) + /* + printf("here we go... \n"); + AdkTerm.setupDevice(); + printf("Android Development Kit: start\r\n"); + USBInit(); + while (!(s.millis >= 60000)) { + USBLoop(); + + printf("x: %f y: %f theta: %f", AdkTerm.getx(), AdkTerm.getx(), AdkTerm.getx() ) - if( AdkTerm.getx() == 99) { - break; + if( AdkTerm.getx() == 99) { + break; + } } - } - */ + */ - state.savePlotFile(s); - state.closePlotFile(); - state.stop(); - robotControl.setEnable(false); -} + state.savePlotFile(s); + state.closePlotFile(); + state.stop(); + robotControl.setEnable(false); + }