PnLCalib / config /field_config.py
2nzi's picture
Upload 63 files
3d1f2c9
"""
Configuration file for football field elements (lines and keypoints)
All measurements are in meters
Field dimensions: 105m x 68m
Origin (0,0) is at top-left corner
"""
# Lines configuration
LINES = {
1: {"name": "Big rect. left bottom", "description": "Surface de réparation gauche - ligne basse"},
2: {"name": "Big rect. left main", "description": "Surface de réparation gauche - ligne parallèle"},
3: {"name": "Big rect. left top", "description": "Surface de réparation gauche - ligne haute"},
4: {"name": "Big rect. right bottom", "description": "Surface de réparation droite - ligne basse"},
5: {"name": "Big rect. right main", "description": "Surface de réparation droite - ligne parallèle"},
6: {"name": "Big rect. right top", "description": "Surface de réparation droite - ligne haute"},
7: {"name": "Goal left crossbar", "description": "Barre transversale but gauche"},
8: {"name": "Goal left post left", "description": "Poteau gauche but gauche"},
9: {"name": "Goal left post right", "description": "Poteau droit but gauche"},
10: {"name": "Goal right crossbar", "description": "Barre transversale but droit"},
11: {"name": "Goal right post left", "description": "Poteau gauche but droit"},
12: {"name": "Goal right post right", "description": "Poteau droit but droit"},
13: {"name": "Middle line", "description": "Ligne médiane"},
14: {"name": "Side line bottom", "description": "Ligne de but"},
15: {"name": "Side line left", "description": "Ligne de touche gauche"},
16: {"name": "Side line right", "description": "Ligne de touche droite"},
17: {"name": "Side line top", "description": "Ligne de but opposée"},
18: {"name": "Small rect. left bottom", "description": "Petite surface gauche - ligne basse"},
19: {"name": "Small rect. left main", "description": "Petite surface gauche - ligne parallèle"},
20: {"name": "Small rect. left top", "description": "Petite surface gauche - ligne haute"},
21: {"name": "Small rect. right bottom", "description": "Petite surface droite - ligne basse"},
22: {"name": "Small rect. right main", "description": "Petite surface droite - ligne parallèle"},
23: {"name": "Small rect. right top", "description": "Petite surface droite - ligne haute"}
}
# Keypoints configuration
KEYPOINTS = {
# Points principaux (1-30)
1: {"name": "Top Left Corner", "coords": [0.0, 0.0], "description": "Coin supérieur gauche"},
2: {"name": "Top Middle", "coords": [52.5, 0.0], "description": "Milieu ligne du haut"},
3: {"name": "Top Right Corner", "coords": [105.0, 0.0], "description": "Coin supérieur droit"},
4: {"name": "Left Big Box Top", "coords": [0.0, 16.5], "description": "Surface gauche haut"},
5: {"name": "Left Big Box Main", "coords": [16.5, 16.5], "description": "Surface gauche principale"},
6: {"name": "Right Big Box Main", "coords": [88.5, 16.5], "description": "Surface droite principale"},
7: {"name": "Right Big Box Top", "coords": [105.0, 16.5], "description": "Surface droite haut"},
8: {"name": "Left Small Box Top", "coords": [0.0, 5.5], "description": "Petite surface gauche haut"},
9: {"name": "Left Small Box Main", "coords": [5.5, 5.5], "description": "Petite surface gauche principale"},
10: {"name": "Right Small Box Main", "coords": [99.5, 5.5], "description": "Petite surface droite principale"},
11: {"name": "Right Small Box Top", "coords": [105.0, 5.5], "description": "Petite surface droite haut"},
12: {"name": "Left Goal Crossbar Right", "coords": [3.66, 0.0], "description": "Barre transversale gauche - droite"},
13: {"name": "Left Goal Post Right", "coords": [3.66, 2.44], "description": "Poteau droit but gauche"},
14: {"name": "Right Goal Post Left", "coords": [101.34, 2.44], "description": "Poteau gauche but droit"},
15: {"name": "Right Goal Crossbar Left", "coords": [101.34, 0.0], "description": "Barre transversale droite - gauche"},
16: {"name": "Left Goal Crossbar Left", "coords": [0.0, 0.0], "description": "Barre transversale gauche - gauche"},
17: {"name": "Left Goal Post Left", "coords": [0.0, 2.44], "description": "Poteau gauche but gauche"},
18: {"name": "Right Goal Post Right", "coords": [105.0, 2.44], "description": "Poteau droit but droit"},
19: {"name": "Right Goal Crossbar Right", "coords": [105.0, 0.0], "description": "Barre transversale droite - droite"},
20: {"name": "Left Small Box Bottom", "coords": [0.0, 0.0], "description": "Petite surface gauche bas"},
21: {"name": "Left Small Box Bottom Main", "coords": [5.5, 0.0], "description": "Petite surface gauche bas principale"},
22: {"name": "Right Small Box Bottom Main", "coords": [99.5, 0.0], "description": "Petite surface droite bas principale"},
23: {"name": "Right Small Box Bottom", "coords": [105.0, 0.0], "description": "Petite surface droite bas"},
24: {"name": "Left Big Box Bottom", "coords": [0.0, 0.0], "description": "Surface gauche bas"},
25: {"name": "Bottom Middle", "coords": [52.5, 0.0], "description": "Milieu ligne du bas"},
26: {"name": "Right Big Box Bottom", "coords": [105.0, 0.0], "description": "Surface droite bas"},
27: {"name": "Left Big Box Bottom Main", "coords": [16.5, 0.0], "description": "Surface gauche bas principale"},
28: {"name": "Bottom Middle Top", "coords": [52.5, 68.0], "description": "Milieu ligne opposée"},
29: {"name": "Right Big Box Bottom Main", "coords": [88.5, 0.0], "description": "Surface droite bas principale"},
30: {"name": "Left Penalty Spot", "coords": [11.0, 34.0], "description": "Point de penalty gauche"},
# Points auxiliaires (31-57)
31: {"name": "Left Box Aux 1", "coords": [16.5, 20.0], "description": "Point auxiliaire surface gauche 1"},
32: {"name": "Center Circle Left", "coords": [43.35, 34.0], "description": "Rond central gauche"},
33: {"name": "Center Circle Right", "coords": [61.65, 34.0], "description": "Rond central droit"},
34: {"name": "Right Box Aux 1", "coords": [88.5, 20.0], "description": "Point auxiliaire surface droite 1"},
35: {"name": "Left Box Aux 2", "coords": [16.5, 48.0], "description": "Point auxiliaire surface gauche 2"},
36: {"name": "Right Box Aux 2", "coords": [88.5, 48.0], "description": "Point auxiliaire surface droite 2"},
37: {"name": "Center Circle Top Left", "coords": [43.35, 24.85], "description": "Rond central haut gauche"},
38: {"name": "Center Circle Top Right", "coords": [61.65, 24.85], "description": "Rond central haut droit"},
39: {"name": "Center Circle Bottom Left", "coords": [43.35, 43.15], "description": "Rond central bas gauche"},
40: {"name": "Center Circle Bottom Right", "coords": [61.65, 43.15], "description": "Rond central bas droit"},
41: {"name": "Center Circle Left Inner", "coords": [46.03, 34.0], "description": "Rond central intérieur gauche"},
42: {"name": "Center Circle Right Inner", "coords": [58.97, 34.0], "description": "Rond central intérieur droit"},
43: {"name": "Center Circle Top Inner", "coords": [52.5, 27.53], "description": "Rond central intérieur haut"},
44: {"name": "Center Circle Bottom Inner", "coords": [52.5, 40.47], "description": "Rond central intérieur bas"},
45: {"name": "Left Penalty Arc Left", "coords": [19.99, 32.29], "description": "Arc penalty gauche - point gauche"},
46: {"name": "Left Penalty Arc Right", "coords": [19.99, 35.71], "description": "Arc penalty gauche - point droit"},
47: {"name": "Right Penalty Arc Left", "coords": [85.01, 32.29], "description": "Arc penalty droit - point gauche"},
48: {"name": "Right Penalty Arc Right", "coords": [85.01, 35.71], "description": "Arc penalty droit - point droit"},
49: {"name": "Left Penalty Arc Top", "coords": [16.5, 34.0], "description": "Arc penalty gauche - point haut"},
50: {"name": "Right Penalty Arc Top", "coords": [88.5, 34.0], "description": "Arc penalty droit - point haut"},
51: {"name": "Left Penalty Area Center", "coords": [16.5, 34.0], "description": "Centre surface de réparation gauche"},
52: {"name": "Right Penalty Area Center", "coords": [88.5, 34.0], "description": "Centre surface de réparation droite"},
53: {"name": "Right Penalty Spot", "coords": [94.0, 34.0], "description": "Point de penalty droit"},
54: {"name": "Center Spot", "coords": [52.5, 34.0], "description": "Point central"},
55: {"name": "Left Box Center", "coords": [16.5, 34.0], "description": "Centre surface gauche"},
56: {"name": "Right Box Center", "coords": [88.5, 34.0], "description": "Centre surface droite"},
57: {"name": "Center Circle Center", "coords": [52.5, 34.0], "description": "Centre rond central"}
}
# Field dimensions
FIELD_DIMENSIONS = {
"length": 105.0, # meters
"width": 68.0, # meters
"center_circle_radius": 9.15,
"penalty_area_length": 16.5,
"penalty_area_width": 40.32,
"goal_area_length": 5.5,
"goal_area_width": 18.32,
"penalty_spot_dist": 11.0,
"goal_height": 2.44,
"goal_width": 7.32
}
# Line intersections that form keypoints
KEYPOINT_LINE_PAIRS = [
["Side line top", "Side line left"],
["Side line top", "Middle line"],
["Side line right", "Side line top"],
["Side line left", "Big rect. left top"],
["Big rect. left top", "Big rect. left main"],
["Big rect. right top", "Big rect. right main"],
["Side line right", "Big rect. right top"],
["Side line left", "Small rect. left top"],
["Small rect. left top", "Small rect. left main"],
["Small rect. right top", "Small rect. right main"],
["Side line right", "Small rect. right top"],
["Goal left crossbar", "Goal left post right"],
["Side line left", "Goal left post right"],
["Side line right", "Goal right post left"],
["Goal right crossbar", "Goal right post left"],
["Goal left crossbar", "Goal left post left"],
["Side line left", "Goal left post left"],
["Side line right", "Goal right post right"],
["Goal right crossbar", "Goal right post right"],
["Side line left", "Small rect. left bottom"],
["Small rect. left bottom", "Small rect. left main"],
["Small rect. right bottom", "Small rect. right main"],
["Side line right", "Small rect. right bottom"],
["Side line left", "Big rect. left bottom"],
["Big rect. left bottom", "Big rect. left main"],
["Big rect. right bottom", "Big rect. right main"],
["Side line right", "Big rect. right bottom"],
["Side line left", "Side line bottom"],
["Side line right", "Side line bottom"]
]
# Auxiliary keypoint pairs
KEYPOINT_AUX_PAIRS = [
["Small rect. left main", "Side line top"],
["Big rect. left main", "Side line top"],
["Big rect. right main", "Side line top"],
["Small rect. right main", "Side line top"],
["Small rect. left main", "Big rect. left top"],
["Big rect. right top", "Small rect. right main"],
["Small rect. left top", "Big rect. left main"],
["Small rect. right top", "Big rect. right main"],
["Small rect. left bottom", "Big rect. left main"],
["Small rect. right bottom", "Big rect. right main"],
["Small rect. left main", "Big rect. left bottom"],
["Small rect. right main", "Big rect. right bottom"],
["Small rect. left main", "Side line bottom"],
["Big rect. left main", "Side line bottom"],
["Big rect. right main", "Side line bottom"],
["Small rect. right main", "Side line bottom"]
]