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

📄 objectrecognition.h

📁 该文件是包含了机器人足球比赛中的整个系统的代码
💻 H
字号:
// File: ObjectRecognition.h
// Date: 27/02/02


#ifndef _ObjectRecognition_h_DEFINED
#define _ObjectRecognition_h_DEFINED

#include "../Common/VisionObject.h"
#include "VisionData.h"
#include "../Common/Common.h"
#include "EllipseFitting.h"

#define FIELD_LENGTH 500

#define MINBALLAREA 16
#define MAXBALLS 20
//#define EFFECTIVE_IMAGE_HEIGHT IMAGE_HEIGHT-1 // last line of image is kind of bad.

#define MAX_BEACONS 5
#define MIN_BEACON_SIZE 2
#define MIN_BEACON_BLOB 2


// Verify Goal Parameters
#define GOAL_X_INCREMENT 5 
#define GOAL_Y_SEARCH 5
#define BLOB_DIST_TO_EDGE 5 // Minimum distance from the edge that is allow before distance calculations for the goal will be performed
#define GOAL_BLOB_DIST_TO_EDGE 25

// Horizon Elevation Check Parameters
#define HORIZON_BALL_DIST 50


class ObjectRecognition {

public:
  ObjectRecognition();

  // lots of these could go private.


  int numBalls_;
  VisionObject* balls_;
#ifdef _WIN32
  int* numBlobsClone_;
  Blob** blobsClone_; 
  int numBlobsVO_; 
  int* pixg;
  int pixnumg;
#endif //  _WIN32

  double CalculateEffectiveRoll(double pan, double tilt, double roll);
  void Initialize(void);
  bool CheckPoint(int xp[], int yp[], int n, int x, int y);
  void FindVisionObjects(VisionData*);
  void FindBlobs();
  void FindBalls();
  void FindBar();
  void FindBeacons();
  void FindGoals();
  void FindRobots();
  void CullRepeats();

private:
  bool VerifyBallRadius(Blob*);
  double RatioDistanceCalc(Blob*,bool);
  bool VerifyBlob(Blob* testBlob, int area, const double RATIO_LIMIT);
  int VerifyGoals(Blob*);
  bool MergeHalfBeacons(Blob*, Blob*);
  int FindHalfBeacons(Colour,VisionObject::ObjectType,VisionObject::ObjectType,Blob*,int);
  double CalculateBeaconDistance(Blob*, Blob*);
  double CalculateBeaconDistance2(Blob*, Blob*);
  int FindGoalsWork(Colour,VisionObject::ObjectType,VisionObject::ObjectType,VisionObject::ObjectType);
  void FindRobotsWork(Colour,VisionObject::ObjectType,int,int,double,double);
  bool AddBeacon(Blob *upperBlob, Blob *lowerBlob, VisionObject::ObjectType type, int pinkIndex);
  bool CloseToHorizon(int,int,int);
  void AddRunToBlob(Run addRun);
  void ConsumeBlob(Blob* consumingBlob, Blob* consumedBlob);

  // Sanity Factor System
  void CalculateBallConfidence(VisionObject*);
  void CalculateGoalConfidence(VisionObject*);
  void CalculateBeaconConfidence(VisionObject*);

  Blob* prevBlob[NUMCOLOURS];
  VisionData* visionData_;
  EllipseFitting ellipseFitting;

  VisionObject previousBallObject;

  int colourCounter[NUMCOLOURS];
};
#endif

⌨️ 快捷键说明

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