📄 movementtricks.h
字号:
#ifndef MOVEMENTTRICKS_H
#define MOVEMENTTRICKS_H
// Bag of primarily movement tricks
#include "../Common/LocomotionCommand.h"
#include "../Common/HeadCommand.h"
#include "Trick.h"
class MovementTricks {
public :
class ChaseBall : public Trick {
public:
enum {
CB_RAM,
CB_SLAP,
CB_GRAB,
};
ChaseBall() {Init(false, CB_GRAB);}
ChaseBall(bool _getAroundBall) {Init(_getAroundBall, CB_GRAB);}
ChaseBall(int _chaseMode) {Init(false,_chaseMode);}
ChaseBall(bool _getAroundBall, int _chaseMode) {Init(_getAroundBall,_chaseMode);}
void Init(bool _getAroundBall, int _chaseMode);
void SetChaseMode(int m);
int GetChaseMode() { return chaseMode; }
bool CheckUnderChin7(bool slapping);
virtual ~ChaseBall();
virtual int Start();
virtual int Abort();
virtual int Continue();
int Continue210();
int Continue7();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
private :
double PushBallDownWallHeadingModifier();
double VeerAroundBallHeadingModifier(long,double);
double RamBall(int);
bool CheckStealthDog(double* leftObstacle, double* rightObstacle);
double StealthDog();
int previousStealthDirection;
double previousVeerDirection;
Utilities utils;
Trick* headTrick;
double underChinAngle;
int chaseMode; // 0 = run into side of ball, 1 = slap, 2 = grab
bool getAroundBall;
bool pushBallRightWall;
bool pushBallLeftWall;
long lastPushBallDetect;
double maxWalkAroundDistance;
double timeBallUnderChin;
bool GetAroundBallOnWall();
// This is a 'temp' internal variable that is reset every time Continue() executes
LocomotionCommand nLC;
};
class MoveToPoint : public Trick {
public:
enum {
MTP_DYNAMIC,
MTP_FORWARDS,
MTP_BACKWARDS,
MTP_MANHATTAN,
MTP_DYNAMIC_FACE_BALL,
MTP_DYNAMIC_NO_HEADING
};
MoveToPoint(double,double,double, int);
MoveToPoint(double,double,double, int, bool , double, double, double);
virtual ~MoveToPoint();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
void ResetHome(double x_, double y_) {x=x_; y=y_;}
void SetType(int type_) { lcq_.Clear(); type = type_; }
int GetType() { return type; }
void SetRange(double xR_, double yR_, double hR_) { xRange = xR_; yRange = yR_; hRange = hR_; }
void SetExit(bool exit_) { canExit = exit_; }
double GetX() {return x;}
double GetY() {return y;}
double GetHeading() {return heading;}
void SetKeeper(bool k) {isKeeper = k;}
bool GetKeeper() {return isKeeper;}
private :
Utilities utils;
double x;
double y;
double heading;
int type;
double xRange;
double yRange;
double hRange;
bool isKeeper;
bool canExit; // This will allow
};
class SearchForBall : public Trick {
public:
SearchForBall(bool _turnRight, double _degreesToTurn);
SearchForBall(double _degreesToTurn);
virtual ~SearchForBall();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
private:
bool turnRight;
double degreesTurned;
double degreesToTurn;
long startFrame;
Trick* headTrick;
Utilities utils;
int frameDelay;
long frameDelayStart;
};
class CheckLocalisation : public Trick {
public:
CheckLocalisation(double _degreesToTurn, int _turnIncrement);
virtual ~CheckLocalisation();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
private:
bool startedHead;
int turnIncrement;
bool lookAroundFirst;
bool turnRight;
double degreesTurned;
double degreesToTurn;
long startFrame;
Trick* headTrick;
Utilities utils;
};
class ChaseBeacon : public Trick {
public:
ChaseBeacon(VisionObject**);
virtual ~ChaseBeacon();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
void Set(double,double,double,double,double,double,double,double,double,double,double);
private :
Utilities utils;
Trick* headTrick;
double stepFreq,maxForward,maxBack,fsh,ffo,fso,fh,bsh,bfo,bso,bh;
VisionObject** targetBeaconReference;
double timeObjectInRange;
};
class FaceBeacon : public Trick {
public:
FaceBeacon(VisionObject**,bool);
virtual ~FaceBeacon();
virtual int Start();
virtual int Abort();
virtual int Continue();
virtual bool IsUsingHead();
virtual char* GetErrorMsg(int);
virtual char* GetName();
private:
Trick* headTrick;
VisionObject** targetBeaconReference;
bool turnRight;
bool doneNull;
Utilities utils;
};
};
#endif // MOVEMENTTRICKS_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -