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

📄 utilities.h

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

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

class Utilities
{
public:
  class HeadPoints {
  public:
    HeadPoints() {
      sTilt2 = 0;
      eTilt2 = 0;
      sPan = 0;
      ePan = 0;
      frames = 0;
    }
    
    HeadPoints(double _sTilt2, double _eTilt2, double _sPan, double _ePan, int _frames) {
      sTilt1 = 0.0;
      eTilt1 = 0.0;
      sTilt2 = _sTilt2;
      eTilt2 = _eTilt2;
      sPan = _sPan;
      ePan = _ePan;
      frames = _frames;
    }
    HeadPoints(double _sTilt1, double _eTilt1, double _sTilt2, double _eTilt2, double _sPan, double _ePan, int _frames) {
      sTilt1 = _sTilt1;
      eTilt1 = _eTilt1;
      sTilt2 = _sTilt2;
      eTilt2 = _eTilt2;
      sPan = _sPan;
      ePan = _ePan;
      frames = _frames;
    }
    
    double sTilt1;
    double eTilt1;
    double sTilt2;
    double eTilt2;
    double sPan;
    double ePan;
    double frames;
  };

  Utilities();
  // allows us to fiddle the locomotioncommand directly
  void RawCommand(LocomotionCommand lc);

// Steps
	void Step(int type, double frontStrideLength, double backStrideLength, double turn, double strafe, double stepFrequency);
  void TurnWithBall(double turn, double stepFrequency);
  void TurnWithBallHeadDown(double turn, double stepFrequency);
  void StrafeWithBall(double strafe, double stepFrequency);

	void Kick(int type, bool allowHeadUse);
	void Kick(int type, bool allowHeadUse, double angle);

// Head Actions
  void Head_Pan(double left, double right, double tilt, double speed,bool reset);
  void Head_PanForBall(bool reset, bool right, int totalFrames);

  void Head_FollowObject(int cx, int cy);
  void Head_FollowObjectHeadDown(int cx, int cy);
  void Head_MoveTo(double tilt, double pan, double roll);
  bool Head_FlickLook(bool left, bool restart);
  bool Head_MoveThroughPoints(HeadPoints points[], int arraySize, bool reset = false);
  bool Head_MoveThroughPointsNoClosest(HeadPoints points[], int arraySize, bool reset = false);

  bool SpinNotSlap(int type, double oppGoalHeading);
  bool IsQueueEmpty();
  void ClearQueue();

// Others
  double GetHeadingToOwnGoal();
  double GetHeadingToGoal();
  double GetHeadingToGoalRam();
  double GetClosestRobotAngle(double maxDistance);
};

#endif // UTILITIES_H

⌨️ 快捷键说明

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