Nao機器人-Robocup場地信息


原文地址http://ahoj.cc/2019/04/Nao%E6%9C%BA%E5%99%A8%E4%BA%BA-Robocup%E5%9C%BA%E5%9C%B0%E4%BF%A1%E6%81%AF/


Robocup SPL 賽中的場地參數 和 BHuman 中的場地參數配置文件。

BHuman 場地配置文件:BHumanCodeRelease-master/Config/Locations/Default/fieldDimensions.cfg
單位 mm。

球場圖

自己畫的

Robocup SLP 場地參數

場地信息1


球門



BHuman 場地配置文件

// This is the field configuration for the indoor SPL field 2016
// 2016年室內SPL場地的場地配置 y是場地的寬(左爲+),x是場地的長(己方爲+)

// xPos 對手場地邊界  ok
xPosOpponentFieldBorder = 5200;         // origin -> far field boundary // 遠場邊界

// xPos 對手的目標   ok
xPosOpponentGoal = 5055;                // origin -> middle far side of goal    // 球門的中遠側

// xPos 對手的球門位置  ok
xPosOpponentGoalPost = 4525;            // origin -> middle goal post   // 中間目標後

// xPos 對手的底線  ok
xPosOpponentGroundline = 4500;          // origin -> middle goal line   // 中間目標線

// xPos 對手禁區    ok
xPosOpponentPenaltyArea = 3900;         // origin -> middle near penalty area line  // 罰球區中線附近

// 這個是 7 米,一半就是 3500   ok
xPosOpponentDropInLine = 3500;          // origin -> far end of throw-in line   // 擲界外球線的遠端

// 對手點球罰球點
xPosOpponentPenaltyMark = 3200;         // origin -> middle penalty mark // 中間點球罰球點

xPosPenaltyStrikerStartPosition = 2200; // 前鋒首發位置

xPosHalfWayLine = 0;
xPosOwnPenaltyMark = -xPosOpponentPenaltyMark;
xPosOwnDropInLine = -xPosOpponentDropInLine;
xPosOwnPenaltyArea = -xPosOpponentPenaltyArea;
xPosOwnGroundline = -xPosOpponentGroundline;
xPosOwnGoalPost = -xPosOpponentGoalPost;
xPosOwnGoal = -xPosOpponentGoal;
xPosOwnFieldBorder = -xPosOpponentFieldBorder;

// 左 場 邊界     ok
yPosLeftFieldBorder = 3700;             // origin -> side field boundary    端領域邊界

// 左線         ok
yPosLeftSideline = 3000;                // origin -> middle side line   中間側線

// 這個先不管   ok
yPosLeftDropInLine = 2600;              // origin -> thow-in line   // 邊線發球 線

// 左 禁區 區域     ok
yPosLeftPenaltyArea = 1100;             // origin -> middle left penalty area line  禁區區線

// 左邊 目標
// 1500 + 50 + 50 = 1600 / 2 = 800
yPosLeftGoal = 800;                     // origin -> middle left goal post  中左門柱

yPosCenterGoal = 0;
yPosRightGoal = -yPosLeftGoal;
yPosRightPenaltyArea = -yPosLeftPenaltyArea;
yPosRightDropInLine = -yPosLeftDropInLine;
yPosRightSideline = -yPosLeftSideline;
yPosRightFieldBorder = -yPosLeftFieldBorder;

// 線寬 50mm    ok
fieldLinesWidth = 50;

// 中心圓半徑 750mm ok
centerCircleRadius = 750;

// ok
goalPostRadius = 50;    // 門柱半徑

// ok
crossBarRadius = goalPostRadius;    // 橫樑半徑

// 球門高度 ,官方手冊上說 球門高度是 800   ok
goalHeight = 900;

// 點球罰球點大小   ok
penaltyMarkSize = 100;

// 地毯的邊界
carpetBorder = [
  {
    from = {x = xPosOpponentFieldBorder; y = yPosRightFieldBorder;};
    to   = {x = xPosOpponentFieldBorder; y = yPosLeftFieldBorder;};
  },{
    from = {x = xPosOpponentFieldBorder; y = yPosLeftFieldBorder;};
    to   = {x = xPosOwnFieldBorder;      y = yPosLeftFieldBorder;};
  },{
    from = {x = xPosOwnFieldBorder;      y = yPosLeftFieldBorder;};
    to   = {x = xPosOwnFieldBorder;      y = yPosRightFieldBorder;};
  },{
    from = {x = xPosOwnFieldBorder;      y = yPosRightFieldBorder;};
    to   = {x = xPosOpponentFieldBorder; y = yPosRightFieldBorder;};
  }
];

// 目標 框架 線
goalFrameLines = [
  {
    from = {x = xPosOwnGoalPost; y = yPosLeftGoal;};
    to   = {x = xPosOwnGoal; y = yPosLeftGoal;};
  },
  {
    from = {x = xPosOwnGoal; y = yPosLeftGoal;};
    to   = {x = xPosOwnGoal; y = yPosRightGoal;};
  },
  {
    from = {x = xPosOwnGoalPost; y = yPosRightGoal;};
    to   = {x = xPosOwnGoal; y = yPosRightGoal;};
  },
  {
    from = {x = xPosOpponentGoalPost; y = yPosLeftGoal;};
    to   = {x = xPosOpponentGoal; y = yPosLeftGoal;};
  },
  {
    from = {x = xPosOpponentGoal; y = yPosLeftGoal;};
    to   = {x = xPosOpponentGoal; y = yPosRightGoal;};
  },
  {
    from = {x = xPosOpponentGoalPost; y = yPosRightGoal;};
    to   = {x = xPosOpponentGoal; y = yPosRightGoal;};
  },
];

// 場邊界
fieldBorder = [
  {
    from = {x = xPosOpponentGroundline; y = yPosRightSideline;};
    to   = {x = xPosOpponentGroundline; y = yPosLeftSideline;};
  },{
    from = {x = xPosOpponentGroundline; y = yPosLeftSideline;};
    to   = {x = xPosOwnGroundline;      y = yPosLeftSideline;};
  },{
    from = {x = xPosOwnGroundline;      y = yPosLeftSideline;};
    to   = {x = xPosOwnGroundline;      y = yPosRightSideline;};
  },{
    from = {x = xPosOwnGroundline;      y = yPosRightSideline;};
    to   = {x = xPosOpponentGroundline; y = yPosRightSideline;};
  }
];

// 場 線
fieldLines = [
  // field border lines
  {
    from = {x = xPosOpponentGroundline; y = yPosRightSideline;};
    to   = {x = xPosOpponentGroundline; y = yPosLeftSideline;};
  },{
    from = {x = xPosOpponentGroundline; y = yPosLeftSideline;};
    to   = {x = xPosOwnGroundline;      y = yPosLeftSideline;};
  },{
    from = {x = xPosOwnGroundline;      y = yPosLeftSideline;};
    to   = {x = xPosOwnGroundline;      y = yPosRightSideline;};
  },{
    from = {x = xPosOwnGroundline;      y = yPosRightSideline;};
    to   = {x = xPosOpponentGroundline; y = yPosRightSideline;};
  },

// center line
  {
    from = {x = xPosHalfWayLine; y = yPosLeftSideline;};
    to   = {x = xPosHalfWayLine; y = yPosRightSideline;};
  },

// penalty areas
  {
    from = {x = xPosOwnGroundline;  y = yPosLeftPenaltyArea;};
    to   = {x = xPosOwnPenaltyArea; y = yPosLeftPenaltyArea;};
  },{
    from = {x = xPosOwnPenaltyArea; y = yPosLeftPenaltyArea;};
    to   = {x = xPosOwnPenaltyArea; y = yPosRightPenaltyArea;};
  },{
    from = {x = xPosOwnPenaltyArea; y = yPosRightPenaltyArea;};
    to   = {x = xPosOwnGroundline;  y = yPosRightPenaltyArea;};
  },

  {
    from = {x = xPosOpponentGroundline;  y = yPosLeftPenaltyArea;};
    to   = {x = xPosOpponentPenaltyArea; y = yPosLeftPenaltyArea;};
  },{
    from = {x = xPosOpponentPenaltyArea; y = yPosLeftPenaltyArea;};
    to   = {x = xPosOpponentPenaltyArea; y = yPosRightPenaltyArea;};
  },{
    from = {x = xPosOpponentPenaltyArea; y = yPosRightPenaltyArea;};
    to   = {x = xPosOpponentGroundline;  y = yPosRightPenaltyArea;};
  },


// penalty and center marks
  {
    from = {x = 3150; y = 0;};
    to   = {x = 3250; y = 0;};
  },{
    from = {x = xPosOpponentPenaltyMark; y = -fieldLinesWidth;};
    to   = {x = xPosOpponentPenaltyMark; y =  fieldLinesWidth;};
  },

  {
    from = {x = -3150; y = 0;};
    to   = {x = -3250; y = 0;};
  },{
    from = {x = xPosOwnPenaltyMark; y = -fieldLinesWidth;};
    to   = {x = xPosOwnPenaltyMark; y =  fieldLinesWidth;};
  },

  {
    from = {x = -fieldLinesWidth; y = 0;};
    to   = {x =  fieldLinesWidth; y = 0;};
  }
];

// 中心圓
centerCircle = {
  center = {x = xPosHalfWayLine; y = 0;};
  radius = centerCircleRadius;
  numOfSegments = 16;
};

// 角落
corners = {
  xCorner = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;}
  ];

  tCorner0 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosOwnGroundline; y = yPosLeftPenaltyArea;},
    {x = xPosOwnGroundline; y = yPosRightPenaltyArea;}
  ];

  tCorner90 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosHalfWayLine; y = yPosRightSideline;}
  ];

  tCorner180 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosOpponentGroundline; y = yPosLeftPenaltyArea;},
    {x = xPosOpponentGroundline; y = yPosRightPenaltyArea;}
  ];

  tCorner270 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosHalfWayLine; y = yPosLeftSideline;}
  ];

  lCorner0 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosOwnGroundline; y = yPosLeftPenaltyArea;},
    {x = xPosOwnGroundline; y = yPosRightPenaltyArea;},
    {x = xPosHalfWayLine; y = yPosRightSideline;},
    {x = xPosOwnGroundline; y = yPosRightSideline;},
    {x = xPosOpponentPenaltyArea; y = yPosRightPenaltyArea;}
  ];

  lCorner90 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosOpponentGroundline; y = yPosLeftPenaltyArea;},
    {x = xPosOpponentGroundline; y = yPosRightPenaltyArea;},
    {x = xPosHalfWayLine; y = yPosRightSideline;},
    {x = xPosOpponentGroundline; y = yPosRightSideline;},
    {x = xPosOwnPenaltyArea; y = yPosRightPenaltyArea;}
  ];

  lCorner180 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosOpponentGroundline; y = yPosLeftPenaltyArea;},
    {x = xPosOpponentGroundline; y = yPosRightPenaltyArea;},
    {x = xPosHalfWayLine; y = yPosLeftSideline;},
    {x = xPosOpponentGroundline; y = yPosLeftSideline;},
    {x = xPosOwnPenaltyArea; y = yPosLeftPenaltyArea;}
  ];

  lCorner270 = [
    {x = xPosHalfWayLine; y = centerCircleRadius;},
    {x = xPosHalfWayLine; y = -centerCircleRadius;},
    {x = xPosOwnGroundline; y = yPosLeftPenaltyArea;},
    {x = xPosOwnGroundline; y = yPosRightPenaltyArea;},
    {x = xPosHalfWayLine; y = yPosLeftSideline;},
    {x = xPosOwnGroundline; y = yPosLeftSideline;},
    {x = xPosOpponentPenaltyArea; y = yPosLeftPenaltyArea;}
  ];
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章