⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headtricks.h

📁 该文件是包含了机器人足球比赛中的整个系统的代码
💻 H
字号:
#ifndef HEADTRICKS_H
#define HEADTRICKS_H

// Bag of head tricks

#include "../Common/LocomotionCommand.h"
#include "../Common/HeadCommand.h"
#include "Trick.h"

class HeadTricks {
public :

  // INCOMPLETE!!
  class FixateOnBeacon : public Trick {
  public: 
    FixateOnBeacon(int _framesAllowed);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private:
    Utilities utils;
    int framesAllowed;
    int currentFrame;

    int targetBeacon;
    double targetAngle;
    double targetTilt;
  };
  class AngledSearch : public Trick {
  public: 
    AngledSearch(bool);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private:
    Utilities utils;
    bool panLeft;
  };
  class LookAt : public Trick {
  public:
    LookAt(double,double,double,int);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private:
    double tilt;
    double pan;
    double roll;
    int numFrames;
    int currentFrame;
    Utilities utils;
  };

  class FollowBallWithHeadSticky : public Trick {
  public:
    FollowBallWithHeadSticky(int);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private:
    double underChinAngle;
    int stickiness;
    int stickinessCount;

    int lastBallCx, lastBallCy;
    double lastTiltSmall, lastTiltBig;
    double lastPan;
    double lastElevation, lastHeading;
    int panDirection;
    Utilities utils;
  };

  class HeadPanForBall : public Trick {
  public: 
    HeadPanForBall();
    HeadPanForBall(int);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private :
    Utilities utils;
    int numFramesPerSweep;
  };

  class FollowBeaconWithHeadSticky : public Trick {
  public:
    FollowBeaconWithHeadSticky(int,VisionObject**);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private:
    int stickiness;
    int stickinessCount;
    int objectID;
    VisionObject** targetBeaconReference;
    bool targetGP;
    Utilities utils;
  };

  class HeadPan : public Trick {
  public: 
    HeadPan(double, double, double, double);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private :
    Utilities utils;
    double left;
    double right;
    double tilt;
    double speed;
  };

    class HoldThenMove : public Trick {
  public: 
    HoldThenMove(double, double, double, double, double);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private :
    Utilities utils;
    double holdTime;
    double t1;
    double t2;
    double p;
    double speed;
    double t1step;
    double t2step;
    double pstep;
  };

  class QuickPan : public Trick {
  public: 
    QuickPan(int _numFrames, bool _panLeft);
    virtual int Start();
    virtual int Abort();
    virtual int Continue();
    virtual bool IsUsingHead();
    virtual char* GetErrorMsg(int);
    virtual char* GetName();
  private :
    Utilities utils;
    int currentFrame, numFrames, halfNumFrames;
    bool panLeft;
    double currentTilt1, currentTilt2, currentPan;
    double interpolationRateTilt1, interpolationRateTilt2, interpolationRatePan;
  };

};
#endif // HEADTRICKS_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -