forked from NUbots/RobocupProtocol
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrobocup_extension.proto
116 lines (91 loc) · 3.4 KB
/
robocup_extension.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
syntax = "proto3";
package robocup.humanoid;
import "google/protobuf/timestamp.proto";
/// A column vector of two floats
message fvec2 {
float x = 1;
float y = 2;
}
/// A column vector of three floats
message fvec3 {
float x = 1;
float y = 2;
float z = 3;
}
/// A matrix of three vectors
/// Specified as column vectors
message fmat3 {
fvec3 x = 1;
fvec3 y = 2;
fvec3 z = 3;
}
/// The detected team of the robot
enum Team {
UNKNOWN_TEAM = 0;
BLUE = 1;
RED = 2;
}
message Robot {
/// ID of the robot, 0 if not known
uint32 player_id = 1;
/// The position of the robot on the field according to the following convention
/// x meters along the field with 0 at the centre of the field and positive towards opponent goals
/// y meters across the field with 0 at the centre of the field and positive to the left
/// θ orientation of the robot (anti-clockwise from the x axis from above the field)
fvec3 position = 2;
/// The covariance measure of the robots [x, y, θ] values
/// If this is unavailable leave this unset
fmat3 covariance = 3;
/// Robot team, if known
Team team = 4;
}
message Ball {
/// The position of the ball on the field according to the following convention
/// x meters along the field with 0 at the centre of the field and positive towards opponent goals
/// y meters across the field with 0 at the centre of the field and positive to the left
/// z meters above the field with 0 at the surface of the field and positive up
fvec3 position = 1;
/// The velocity of the ball
/// x m/s along the field with 0 at the centre of the field and positive towards opponent goals
/// y m/s across the field with 0 at the centre of the field and positive to the left
/// z m/s above the field with 0 at the surface of the field and positive up
/// Set to 0 if not available
fvec3 velocity = 2;
/// The covariance measure of the balls [x, y, z] values
/// If this is unavailable leave this unset
fmat3 covariance = 3;
}
/// The current playing state of the robot
enum State {
UNKNOWN_STATE = 0;
UNPENALISED = 1;
PENALISED = 2;
}
message Message {
/// Timestamp of message creation
google.protobuf.Timestamp timestamp = 1;
/// The robots current state
State state = 2;
/// Position, orientation, and covariance of the player on the field
Robot current_pose = 3;
/// The current walk speed of the robot in it's local [x, y, θ] coordinates
/// x and y in m/s and θ in rad/s
/// positive x being forwards, positive y being strafing to the left, and positive θ being anti-clockwise
fvec3 walk_command = 4;
/// Position and orientation of the players target on the field specified
Robot target_pose = 5;
/// Position that the robot is aiming to kick the ball to
/// If no kick is planned set to [0, 0]
/// Vector has origin on the ground between the robots feet
fvec2 kick_target = 6;
/// Position, velocity, and covariance of the ball on the field
Ball ball = 7;
/// Position, orientation, and covariance of detected robots on the field
repeated Robot others = 8;
/// IDs 1-100 are reserved for official use
/****************************
* EXTENSIONS GO BELOW HERE *
****************************/
/// Maximum walking speed of the robot
float max_walking_speed = 101;
}