From 22433e52a7b0f2e5c548edb915ea11a38a8077ad Mon Sep 17 00:00:00 2001 From: sicarius Date: Tue, 20 Feb 2007 21:01:02 +0000 Subject: [PATCH] +++ Codework, Navigator&Positiontracker done (buggy?) --- Information/Hardware/Portbelegung.ods | Bin 14582 -> 14552 bytes source/Concept/Framework/RoboCode.aps | 2 +- source/Concept/Framework/defines.h | 3 +- source/Concept/Framework/main.c | 58 ++++++++-------- .../Framework/modules/executor/navigator.c | 44 ++++++++++--- .../Framework/modules/input/mouse_sensor.h | 22 ++++++- .../modules/interpreter/position_tracker.c | 62 +++++++++++++++++- .../modules/interpreter/position_tracker.h | 6 ++ source/Concept/Framework/tools.h | 17 ++++- 9 files changed, 168 insertions(+), 46 deletions(-) diff --git a/Information/Hardware/Portbelegung.ods b/Information/Hardware/Portbelegung.ods index 13e4baeddf2b7be8e4225e9078d81671dd6513a3..397a9122ec38420e952731fe256936ac8f8656d6 100644 GIT binary patch delta 11965 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 delta 11957 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 MK6b&14hE5cmMzZ diff --git a/source/Concept/Framework/RoboCode.aps b/source/Concept/Framework/RoboCode.aps index 0cae013..83aaae6 100644 --- a/source/Concept/Framework/RoboCode.aps +++ b/source/Concept/Framework/RoboCode.aps @@ -1 +1 @@ -RoboCode16-Feb-2007 15:16:4619-Feb-2007 18:25:08241016-Feb-2007 15:16:4644, 12, 0, 462AVR GCCdefault\RoboCode.elfY:\Concept\Framework\falseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31000modules\io_module.catmega128io.cmain.crobot.ctools.cmodules\input\distance_sensor.cmodules\input\ir_sensor.cmodules\input\keyboard.cmodules\input\mouse_sensor.cmodules\input\sensor.cmodules\interpreter\position_tracker.cmodules\output\display.cmodules\output\dribbler.cmodules\output\engine.cmodules\output\kicker.cmodules\output\led.cmodules\interpreter\ball_tracker.cmodules\executor\navigator.cstdafx.htools.hatmega128io.hdefines.hrobot.hmodules\input\distance_sensor.hmodules\input\ir_sensor.hmodules\input\keyboard.hmodules\input\mouse_sensor.hmodules\input\sensor.hmodules\output\display.hmodules\output\dribbler.hmodules\output\engine.hmodules\output\kicker.hmodules\output\led.hmodules\interpreter\position_tracker.hmodules\io_module.hmodules\interpreter\ball_tracker.hmodules\executor\navigator.hdefaultNOatmega128100RoboCode.elfdefault\0modules\modules\executor\modules\input\modules\interpreter\modules\logic\modules\output\libm.a-Wall -gdwarf-2 -DF_CPU=16000000ULUL -O3 -fsigned-char-lmdefault0C:\WinAVR\bin\avr-g++.exeC:\WinAVR\utils\bin\make.exeY:\Concept\Framework\stdafx.hY:\Concept\Framework\tools.hY:\Concept\Framework\atmega128io.hY:\Concept\Framework\defines.hY:\Concept\Framework\robot.hY:\Concept\Framework\modules\input\distance_sensor.hY:\Concept\Framework\modules\input\ir_sensor.hY:\Concept\Framework\modules\input\keyboard.hY:\Concept\Framework\modules\input\mouse_sensor.hY:\Concept\Framework\modules\input\sensor.hY:\Concept\Framework\modules\output\display.hY:\Concept\Framework\modules\output\dribbler.hY:\Concept\Framework\modules\output\engine.hY:\Concept\Framework\modules\output\kicker.hY:\Concept\Framework\modules\output\led.hY:\Concept\Framework\modules\interpreter\position_tracker.hY:\Concept\Framework\modules\io_module.hY:\Concept\Framework\modules\interpreter\ball_tracker.hY:\Concept\Framework\modules\executor\navigator.hY:\Concept\Framework\modules\io_module.cY:\Concept\Framework\atmega128io.cY:\Concept\Framework\main.cY:\Concept\Framework\robot.cY:\Concept\Framework\tools.cY:\Concept\Framework\modules\input\distance_sensor.cY:\Concept\Framework\modules\input\ir_sensor.cY:\Concept\Framework\modules\input\keyboard.cY:\Concept\Framework\modules\input\mouse_sensor.cY:\Concept\Framework\modules\input\sensor.cY:\Concept\Framework\modules\interpreter\position_tracker.cY:\Concept\Framework\modules\output\display.cY:\Concept\Framework\modules\output\dribbler.cY:\Concept\Framework\modules\output\engine.cY:\Concept\Framework\modules\output\kicker.cY:\Concept\Framework\modules\output\led.cY:\Concept\Framework\modules\interpreter\ball_tracker.cY:\Concept\Framework\modules\executor\navigator.c00000stdafx.h100001defines.h100002robot.h100003atmega128io.h100004tools.h100005modules\interpreter\position_tracker.h100006modules\io_module.h100007modules\output\display.h100008modules\input\ir_sensor.h100009modules\output\engine.h100010modules\input\sensor.h100011modules\input\keyboard.h100012modules\io_module.c100013robot.c100014modules\input\ir_sensor.c100015modules\output\dribbler.h100016modules\output\kicker.h100017modules\output\led.h100018modules\input\distance_sensor.h100019modules\input\mouse_sensor.h100020modules\input\sensor.c100021main.c100022modules\interpreter\ball_tracker.h100023modules\interpreter\ball_tracker.c100024modules\interpreter\position_tracker.c100025modules\input\distance_sensor.c100026modules\output\engine.c100027modules\output\dribbler.c100028modules\executor\navigator.h100029modules\executor\navigator.c100030modules\output\display.c100031modules\input\mouse_sensor.c1299 75 1025 5566 033058 32861 33658 33107155 033058 32861 33658 3310745 033058 32861 33658 3310716 033058 32861 33658 3310711 033058 32861 33658 3310743 032287 32091 33013 325468 033058 32861 33784 3331673 033058 32861 33658 331072 032384 32233 33010 32534109 032296 32117 32926 3242227 032321 32148 32951 324536 032343 32177 32973 324821 032365 32206 32995 3251116 7132387 32235 33017 325409 032299 32119 32929 324243 032321 32148 32951 3245321 032343 32177 32973 324821 032365 32206 32995 3251171 0299 72 1025 52760 30Maximized32299 32119 32929 324241 0293 68 1019 523168 1932343 32177 32973 324823 0287 64 1013 51965 032387 32235 33017 325407 032299 32119 32929 324241 032321 32148 32951 324531 032343 32177 32973 324821 032365 32206 32995 3251139 0296 70 1022 525156 20300 100 930 4050 0322 129 952 4340 0 +RoboCode16-Feb-2007 15:16:4620-Feb-2007 21:59:37241016-Feb-2007 15:16:4644, 12, 0, 462AVR GCCdefault\RoboCode.elfY:\Concept\Framework\falseR00R01R02R03R04R05R06R07R08R09R10R11R12R13R14R15R16R17R18R19R20R21R22R23R24R25R26R27R28R29R30R31000modules\io_module.catmega128io.cmain.crobot.ctools.cmodules\input\distance_sensor.cmodules\input\ir_sensor.cmodules\input\keyboard.cmodules\input\mouse_sensor.cmodules\input\sensor.cmodules\interpreter\position_tracker.cmodules\output\display.cmodules\output\dribbler.cmodules\output\engine.cmodules\output\kicker.cmodules\output\led.cmodules\interpreter\ball_tracker.cmodules\executor\navigator.cstdafx.htools.hatmega128io.hdefines.hrobot.hmodules\input\distance_sensor.hmodules\input\ir_sensor.hmodules\input\keyboard.hmodules\input\mouse_sensor.hmodules\input\sensor.hmodules\output\display.hmodules\output\dribbler.hmodules\output\engine.hmodules\output\kicker.hmodules\output\led.hmodules\interpreter\position_tracker.hmodules\io_module.hmodules\interpreter\ball_tracker.hmodules\executor\navigator.hdefaultNOatmega128100RoboCode.elfdefault\0modules\modules\executor\modules\input\modules\interpreter\modules\logic\modules\output\libm.a-Wall -gdwarf-2 -DF_CPU=16000000ULUL -O3 -fsigned-char-lmdefault0C:\WinAVR\bin\avr-g++.exeC:\WinAVR\utils\bin\make.exeY:\Concept\Framework\stdafx.hY:\Concept\Framework\tools.hY:\Concept\Framework\atmega128io.hY:\Concept\Framework\defines.hY:\Concept\Framework\robot.hY:\Concept\Framework\modules\input\distance_sensor.hY:\Concept\Framework\modules\input\ir_sensor.hY:\Concept\Framework\modules\input\keyboard.hY:\Concept\Framework\modules\input\mouse_sensor.hY:\Concept\Framework\modules\input\sensor.hY:\Concept\Framework\modules\output\display.hY:\Concept\Framework\modules\output\dribbler.hY:\Concept\Framework\modules\output\engine.hY:\Concept\Framework\modules\output\kicker.hY:\Concept\Framework\modules\output\led.hY:\Concept\Framework\modules\interpreter\position_tracker.hY:\Concept\Framework\modules\io_module.hY:\Concept\Framework\modules\interpreter\ball_tracker.hY:\Concept\Framework\modules\executor\navigator.hY:\Concept\Framework\modules\io_module.cY:\Concept\Framework\atmega128io.cY:\Concept\Framework\main.cY:\Concept\Framework\robot.cY:\Concept\Framework\tools.cY:\Concept\Framework\modules\input\distance_sensor.cY:\Concept\Framework\modules\input\ir_sensor.cY:\Concept\Framework\modules\input\keyboard.cY:\Concept\Framework\modules\input\mouse_sensor.cY:\Concept\Framework\modules\input\sensor.cY:\Concept\Framework\modules\interpreter\position_tracker.cY:\Concept\Framework\modules\output\display.cY:\Concept\Framework\modules\output\dribbler.cY:\Concept\Framework\modules\output\engine.cY:\Concept\Framework\modules\output\kicker.cY:\Concept\Framework\modules\output\led.cY:\Concept\Framework\modules\interpreter\ball_tracker.cY:\Concept\Framework\modules\executor\navigator.c00000stdafx.h100001defines.h100002robot.h100003atmega128io.h100004tools.h100005modules\interpreter\position_tracker.h100006modules\io_module.h100007modules\output\display.h100008modules\input\ir_sensor.h100009modules\output\engine.h100010modules\input\sensor.h100011modules\input\keyboard.h100012modules\io_module.c100013robot.c100014modules\input\ir_sensor.c100015modules\output\dribbler.h100016modules\output\kicker.h100017modules\output\led.h100018modules\input\distance_sensor.h100019modules\input\mouse_sensor.h100020modules\input\sensor.c100021main.c100022modules\interpreter\ball_tracker.h100023modules\interpreter\ball_tracker.c100024modules\interpreter\position_tracker.c100025modules\input\distance_sensor.c100026modules\output\engine.c100027modules\output\dribbler.c100028modules\executor\navigator.h100029modules\executor\navigator.c100030modules\output\display.c100031modules\input\mouse_sensor.c100032c:\WinAVR\avr\include\math.h1291 76 1017 5576 0291 72 1025 55353 14Maximized33047 32859 33647 3310545 033047 32859 33647 3310516 033047 32859 33647 3310516 2233047 32859 33647 3310514 032276 32089 33002 325448 033047 32859 33773 33314107 6933047 32859 33647 331052 032373 32231 32999 32532101 3032285 32115 32915 3242027 032310 32146 32940 324516 032332 32175 32962 324801 032354 32204 32984 3250993 032376 32233 33006 325389 032288 32117 32918 324223 032310 32146 32940 3245121 032332 32175 32962 324801 032354 32204 32984 3250971 0288 70 1014 52568 2232288 32117 32918 324221 0282 66 1008 521159 432332 32175 32962 324803 0276 62 1002 51765 032376 32233 33006 3253855 032288 32117 32918 324221 032310 32146 32940 324511 032332 32175 32962 324801 032354 32204 32984 3250949 0285 68 1011 523184 43289 98 919 4030 0311 127 941 4320 0339 160 955 462144 0 diff --git a/source/Concept/Framework/defines.h b/source/Concept/Framework/defines.h index 8cf2d7a..586a3d8 100644 --- a/source/Concept/Framework/defines.h +++ b/source/Concept/Framework/defines.h @@ -58,9 +58,10 @@ //Constants #define SPEED_PER_PWM 1 #define DISTANCE_PER_VALUE 1 +#define TICKS_PER_CM 205.0f #define PI 3.14159265358979323846f -#define CYCLES_PER_CORRECTION 200 +#define CYCLES_PER_CORRECTION 20 #define EMPTY_FLOAT 81188.1484f //IO Module Names diff --git a/source/Concept/Framework/main.c b/source/Concept/Framework/main.c index 8a7d90f..b0fc96b 100755 --- a/source/Concept/Framework/main.c +++ b/source/Concept/Framework/main.c @@ -145,27 +145,29 @@ int main() Keyboard* ourKeyboard = localRobot->GetModule(IO_KEYBOARD_MAIN); uint32 i = 1; Navigator* ourNavigator = localRobot->GetModule(IO_NAVIGATOR_MAIN); + Position_Tracker* ourPosition_Tracker = localRobot->GetModule(IO_POSITION_TRACKER_MAIN); + float rotation = 0; - Mouse_Sensor* mouse_left = localRobot->GetModule(IO_SENSOR_MOUSE_LEFT); - Mouse_Sensor* mouse_right = localRobot->GetModule(IO_SENSOR_MOUSE_RIGHT); + //Mouse_Sensor* mouse_left = localRobot->GetModule(IO_SENSOR_MOUSE_LEFT); + //Mouse_Sensor* mouse_right = localRobot->GetModule(IO_SENSOR_MOUSE_RIGHT); //Run while(true) { - /*ourDisplay->Print(i++,1,1); - ourDisplay->Print(mouse_left->GetXMovement(),1,2); - ourDisplay->Print(" "); - ourDisplay->Print(mouse_left->GetYMovement(),10,2); - ourDisplay->Print(" "); - ourDisplay->Print(mouse_right->GetXMovement(),1,3); - ourDisplay->Print(" "); - ourDisplay->Print(mouse_right->GetYMovement(),10,3); - ourDisplay->Print(" "); - ourDisplay->Print(" ",1,4); // clear + ourDisplay->Print(i++,1,1); + + if(!(i % 200)) + { + ourDisplay->Clear(); + ourDisplay->PrintFloat(ourPosition_Tracker->GetPositionX(),1,2); + ourDisplay->PrintFloat(ourPosition_Tracker->GetPositionY(),1,3); + ourDisplay->PrintFloat(ourPosition_Tracker->GetOrientation() * 180.0f / PI,1,4); + } + - distanceSensor = localRobot->GetModule(IO_SENSOR_DISTANCE_0_DEG); + /*distanceSensor = localRobot->GetModule(IO_SENSOR_DISTANCE_0_DEG); value = distanceSensor->GetDistance(); ourDisplay->Print(value, 1, 4); ourDisplay->Print(";"); @@ -180,47 +182,41 @@ int main() distanceSensor = localRobot->GetModule(IO_SENSOR_DISTANCE_270_DEG); value = distanceSensor->GetDistance(); ourDisplay->Print(value); - ourDisplay->Print(";"); - - - msleep(500);*/ - + ourDisplay->Print(";"); */ + uint8 someInput = ourKeyboard->GetInput(); - //ourDisplay->Clear(); - ourDisplay->Print(i++,1,1); //ourDisplay->Print("Ready to accept...", 1, 2); - ourDisplay->Print(someInput, 1, 3); - ourDisplay->PrintFloat(rotation, 1, 4); switch(someInput) { case 0: ourNavigator->Stop(); + break; case 1: - ourNavigator->Drive(225, rotation, 200, rotation); + ourNavigator->Drive(225, rotation, 100, rotation); break; case 2: - ourNavigator->Drive(180, rotation, 200, rotation); + ourNavigator->Drive(180, rotation, 100, rotation); break; case 3: - ourNavigator->Drive(135, rotation, 200, rotation); + ourNavigator->Drive(135, rotation, 100, rotation); break; case 4: - ourNavigator->Drive(270, rotation, 200, rotation); + ourNavigator->Drive(270, rotation, 100, rotation); break; case 5: ourNavigator->Drive(0, rotation, 0, rotation); break; case 6: - ourNavigator->Drive(90, rotation, 200, rotation); + ourNavigator->Drive(90, rotation, 100, rotation); break; case 7: - ourNavigator->Drive(315, rotation, 200, rotation); + ourNavigator->Drive(315, rotation, 100, rotation); break; case 8: - ourNavigator->Drive(0, rotation, 200, rotation); + ourNavigator->Drive(0, rotation, 100, rotation); break; case 9: - ourNavigator->Drive(45, rotation, 200, rotation); + ourNavigator->Drive(45, rotation, 100, rotation); break; case 10: rotation += 10; @@ -230,8 +226,6 @@ int main() break; } - msleep(50); - /* //ourDisplay->Clear(); ourDisplay->Print(i++,1,1); diff --git a/source/Concept/Framework/modules/executor/navigator.c b/source/Concept/Framework/modules/executor/navigator.c index a69c533..5dbf8bf 100755 --- a/source/Concept/Framework/modules/executor/navigator.c +++ b/source/Concept/Framework/modules/executor/navigator.c @@ -54,6 +54,30 @@ void Navigator::Drive(float newDirection, float newAngle, float newSpeed, float } CalculateEngines(); + + //dings,,, + + /*float xDrive = cos(direction + PI / 6.0f); + float yDrive = sin(direction + PI / 6.0f); + + float vLeft = xDrive; + float vBack = (-xDrive + sqrt(3) * yDrive) / 2.0f; + float vRight = (-xDrive - sqrt(3) * yDrive) / 2.0f; + + vLeft = vLeft * this->robotSpeed + rotationSpeed; + vBack = vBack * this->robotSpeed + rotationSpeed; + vRight = vRight * this->robotSpeed + rotationSpeed; + + Engine* curEngine = parent->GetModule(IO_ENGINE_DRIVE_LEFT); + curEngine->SetSpeed(vLeft); + curEngine->SetEnabled(true); + curEngine = parent->GetModule(IO_ENGINE_DRIVE_BACK); + curEngine->SetSpeed(vBack); + curEngine->SetEnabled(true); + curEngine = parent->GetModule(IO_ENGINE_DRIVE_RIGHT); + curEngine->SetSpeed(vRight); + curEngine->SetEnabled(true); + curEngine = NULL;*/ } //----------------------------------------------------------------------------- @@ -154,6 +178,8 @@ void Navigator::CalculateDirection() //----------------------------------------------------------------------------- void Navigator::CalculateEngines() { + Position_Tracker* locationeer = parent->GetModule(IO_POSITION_TRACKER_MAIN); + if(direction != EMPTY_FLOAT) { float relativeDirection = this->direction - locationeer->GetOrientation(); @@ -165,15 +191,15 @@ void Navigator::CalculateEngines() float vBack = (-xDrive + sqrt(3) * yDrive) / 2.0f; float vRight = (-xDrive - sqrt(3) * yDrive) / 2.0f; - float speedCorrection = 1.0f; + /*float speedCorrection = 1.0f; float maxEngineSpeed = 255.0f; float minEngineSpeed = -255.0f; float maxSingleSpeed = max(max(fabs(vLeft), fabs(vBack)), fabs(vRight)); - /*float calcSpeed = sqrt(vLeft * vLeft - vLeft * vRight + vRight * vRight + - vBack * (vBack + vLeft + vRight));*/ + float calcSpeed = 1.0f;//sqrt(vLeft * vLeft - vLeft * vRight + vRight * vRight + + // vBack * (vBack + vLeft + vRight)); if(calcSpeed != 1.0f) { @@ -184,14 +210,14 @@ void Navigator::CalculateEngines() if(maxOverallSpeed > maxEngineSpeed) { robotSpeed = maxEngineSpeed / (maxSingleSpeed * speedCorrection); - } + }*/ - vLeft = vLeft * this->robotSpeed * speedCorrection; - vBack = vBack * this->robotSpeed * speedCorrection; - vRight = vRight * this->robotSpeed * speedCorrection; + vLeft = vLeft * this->robotSpeed;// * speedCorrection; + vBack = vBack * this->robotSpeed;// * speedCorrection; + vRight = vRight * this->robotSpeed;// * speedCorrection; - maxSingleSpeed = max(max(fabs(vLeft), fabs(vBack)), fabs(vRight)); + /*maxSingleSpeed = max(max(fabs(vLeft), fabs(vBack)), fabs(vRight)); float minSingleSpeed = min(min(vLeft, vBack), vRight); if(rotationSpeed) @@ -226,7 +252,7 @@ void Navigator::CalculateEngines() vRight -= this->rotationSpeed; } } - } + }*/ Engine* curEngine = parent->GetModule(IO_ENGINE_DRIVE_LEFT); curEngine->SetSpeed(vLeft); diff --git a/source/Concept/Framework/modules/input/mouse_sensor.h b/source/Concept/Framework/modules/input/mouse_sensor.h index 460e387..b3d1b1a 100755 --- a/source/Concept/Framework/modules/input/mouse_sensor.h +++ b/source/Concept/Framework/modules/input/mouse_sensor.h @@ -24,6 +24,8 @@ public: this->configReset = 0; this->configAwake = 0; this->newImage = false; + this->positionX = 0; + this->positionY = 0; } Mouse_Sensor(uint32 sensorId) @@ -47,6 +49,8 @@ public: this->registerDeltaY = 0x02; this->configReset = 0x80; this->configAwake = 0x01; + this->positionX = -3.88f * TICKS_PER_CM; + this->positionY = -3.88f * TICKS_PER_CM; break; case IO_SENSOR_MOUSE_RIGHT: this->hardwarePort = &PORTC; @@ -61,6 +65,8 @@ public: this->registerDeltaY = 0x02; this->configReset = 0x80; this->configAwake = 0x01; + this->positionX = -3.88f * TICKS_PER_CM; + this->positionY = 3.88f * TICKS_PER_CM; break; default: this->hardwarePort = NULL; @@ -101,8 +107,10 @@ protected: uint8 registerDeltaY; uint8 configReset; uint8 configAwake; + //Information + float positionX; + float positionY; -public: void WriteByte(uint8 newByte) { *hardwareDDR |= pinSDA;//Set SDA output @@ -180,6 +188,8 @@ public: return pixel; } + +public: uint8 GetSqual() { return Read(registerSqual); @@ -194,6 +204,16 @@ public: { return (int8)(Read(registerDeltaY)); } + + float GetPositionX() + { + return positionX; + } + + float GetPositionY() + { + return positionY; + } }; #endif diff --git a/source/Concept/Framework/modules/interpreter/position_tracker.c b/source/Concept/Framework/modules/interpreter/position_tracker.c index 262069a..c8cd52d 100755 --- a/source/Concept/Framework/modules/interpreter/position_tracker.c +++ b/source/Concept/Framework/modules/interpreter/position_tracker.c @@ -3,5 +3,65 @@ //----------------------------------------------------------------------------- void Position_Tracker::Update() { - //insert code here + Mouse_Sensor* mouseLeft = parent->GetModule(IO_SENSOR_MOUSE_LEFT); + Mouse_Sensor* mouseRight = parent->GetModule(IO_SENSOR_MOUSE_RIGHT); + + int8 leftX = mouseLeft->GetXMovement(); + int8 leftY = mouseLeft->GetYMovement(); + float distanceLeft = sqrt(leftX * leftX + leftY * leftY); + float angleLeft = easyAngle(atan2(leftY, leftX) + (225.0f * PI / 180.0f)); + + float movementLeftX = cos(angleLeft) * distanceLeft; + float movementLeftY = sin(angleLeft) * distanceLeft; + + if(!leftX && !leftY) + { + movementLeftX = 0; + movementLeftY = 0; + } + + int8 rightX = mouseRight->GetXMovement(); + int8 rightY = mouseRight->GetYMovement(); + float distanceRight = sqrt(rightX * rightX + rightY * rightY); + float angleRight = easyAngle(atan2(rightY, rightX) - (45.0f * PI / 180.0f)); + + float movementRightX = cos(angleRight) * distanceRight; + float movementRightY = sin(angleRight) * distanceRight; + + if(!rightX && !rightY) + { + movementRightX = 0; + movementRightY = 0; + } + + float movementDifferenceX = movementRightX - movementLeftX; + float movementDifferenceY = (movementRightY + mouseRight->GetPositionY()) - (movementLeftY + mouseLeft->GetPositionY()); + + float robotMovementX = movementDifferenceX / 2.0f; + float robotMovementY = movementDifferenceY / 2.0f; + robotMovementX += movementLeftX; + robotMovementY += movementLeftY + mouseLeft->GetPositionY(); + float robotDistance = sqrt(robotMovementX * robotMovementX + robotMovementY * robotMovementY); + + float orientationDiff = atan2(movementDifferenceY, movementDifferenceX) - (PI / 2.0f); + + float absoluteDiffX = cos(this->orientation + (orientationDiff / 2.0f)) * robotDistance * sign(robotMovementX); + float absoluteDiffY = sin(this->orientation + (orientationDiff / 2.0f)) * robotDistance * sign(robotMovementY); + + if(!robotMovementX && !robotMovementY) + { + absoluteDiffX = 0; + absoluteDiffY = 0; + } + + //(parent->GetModule(IO_DISPLAY_MAIN))->Print(" ", 5, 1); + //(parent->GetModule(IO_DISPLAY_MAIN))->Print(absoluteDiffX, 5, 1); + //(parent->GetModule(IO_DISPLAY_MAIN))->Print(absoluteDiffY, 12, 1); + + this->positionX += absoluteDiffX; + this->positionY += absoluteDiffY; + + this->orientation += orientationDiff; + + this->orientation = easyAngle(this->orientation); } diff --git a/source/Concept/Framework/modules/interpreter/position_tracker.h b/source/Concept/Framework/modules/interpreter/position_tracker.h index b31dd8f..e93ef0c 100755 --- a/source/Concept/Framework/modules/interpreter/position_tracker.h +++ b/source/Concept/Framework/modules/interpreter/position_tracker.h @@ -10,12 +10,18 @@ public: { this->parent = NULL; this->moduleId = 0; + this->positionX = 0; + this->positionY = 0; + this->orientation = 0; } Position_Tracker(uint32 trackerId) { this->parent = NULL; this->moduleId = trackerId; + this->positionX = 0; + this->positionY = 0; + this->orientation = 0; } protected: diff --git a/source/Concept/Framework/tools.h b/source/Concept/Framework/tools.h index 735e773..2607001 100644 --- a/source/Concept/Framework/tools.h +++ b/source/Concept/Framework/tools.h @@ -14,6 +14,21 @@ #define min(a, b) (((a) < (b)) ? (a) : (b)) #define sign(a) (((a) < 0) ? (-1) : (1)) +inline float easyAngle(float angle) +{ + while(angle < 0) + { + angle += 2.0f * PI; + } + + while(angle >= 2.0f * PI) + { + angle -= 2.0f * PI; + } + + return angle; +} + inline void sleep(uint16 sec) { for (uint16 s = 0; s < sec; s++) { @@ -48,7 +63,7 @@ inline float distance2d(float x1, float y1, float x2, float y2) inline float direction2d(float x1, float y1, float x2, float y2) { - return atan((y2 - y1) / (x2 - x1)); + return atan2((y2 - y1), (x2 - x1)); } #endif