ai
Revision 0:8ad510cbb76c, committed 2012-04-26
- Comitter:
- narshu
- Date:
- Thu Apr 26 19:59:10 2012 +0000
- Commit message:
Changed in this revision
ai.cpp | Show annotated file Show diff for this revision Revisions of this file |
ai.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 8ad510cbb76c ai.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ai.cpp Thu Apr 26 19:59:10 2012 +0000 @@ -0,0 +1,83 @@ + +#include "ai.h" +#include "rtos.h" +#include "globals.h" + +AI::AI() : + thr_AI(aithreadwrapper,this,osPriorityNormal,1024) { + flag_terminate = false; + //printf("aistart\r\n"); +} + +void AI::settarget(float targetX, float targetY, float targetTheta, bool targetfacing){ + targetlock.lock(); + target.x = targetX; + target.y = targetY; + target.theta = targetTheta; + target.facing = targetfacing; + targetlock.unlock(); +} + +void AI::settarget(Target targetin){ + targetlock.lock(); + target = targetin; + targetlock.unlock(); +} + +AI::Target AI::gettarget(){ + targetlock.lock(); + Target temptarget = target; + targetlock.unlock(); + return temptarget; +} + +void AI::ai_thread () { + /* + //printf("aithreadstart\r\n"); + Thread::signal_wait(0x01); + settarget(660, 400, PI/2, true); + + Thread::signal_wait(0x01); + settarget(660, 570, PI, true); + + Thread::signal_wait(0x01); + settarget(400, 870, PI, true); + + Thread::signal_wait(0x01); + settarget(660, 870, PI, false); + + flag_terminate = true; + */ + + // goes to the mid + Thread::signal_wait(0x01); + settarget(1500, 1000, PI/2, true); + + // left roll + Thread::signal_wait(0x01); + settarget(500, 1700, PI/2, true); + + // mid + Thread::signal_wait(0x01); + settarget(1500, 1000, PI/2, true); + + // map + Thread::signal_wait(0x01); + settarget(1500, 1700, PI/2, true); + + // mid + Thread::signal_wait(0x01); + settarget(1500, 1000, -PI/2, true); + + // home + Thread::signal_wait(0x01); + settarget(500, 500, 0, true); + + Thread::signal_wait(0x01); + flag_terminate = true; + //OLED3 = true; + + while (true) { + Thread::wait(osWaitForever); + } +} \ No newline at end of file
diff -r 000000000000 -r 8ad510cbb76c ai.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ai.h Thu Apr 26 19:59:10 2012 +0000 @@ -0,0 +1,33 @@ +#ifndef AI_H +#define AI_H + +#include "rtos.h" + +class AI { +public: +AI(); + +Mutex targetlock; +Thread thr_AI; + +struct Target { + float x; + float y; + float theta; + bool facing; +} target; + +void settarget(float targetX, float targetY, float targetTheta, bool targetfacing = true); +void settarget(Target); +Target gettarget(); + +bool flag_terminate;// = false; + +private: + +void ai_thread (); +static void aithreadwrapper(void const *arg){ ((AI*)arg)->ai_thread(); } + +}; + +#endif //AI_H \ No newline at end of file