Robocup SPL 赛中的场地参数 和 BHuman 中的场地参数配置文件。
BHuman 场地配置文件:
BHumanCodeRelease-master/Config/Locations/Default/fieldDimensions.cfg
单位 mm。
// 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;}
];
};