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;}
  ];
};

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