-
Notifications
You must be signed in to change notification settings - Fork 0
/
osi_motionrequest.proto
125 lines (109 loc) · 3.94 KB
/
osi_motionrequest.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
117
118
119
120
121
122
123
124
125
syntax = "proto2";
option optimize_for = SPEED;
import "osi_common.proto";
import "osi_version.proto";
package osi3;
//
// \brief This message is intended as an interface between a
// motion-planning function and the actuator management.
// The motion-planning function can thereby be a representation of a
// highly-automated driving function, a human driving behavior model, etc.
//
// The motion-planning function can either send a desired future trajectory or a desired
// future state. The message can be defined by an additional variable.
//
// \note The coordinate system is defined as right-handed.
// All coordinates and orientations are relative to the global coordinate system.
// The reference point of the vehicle is the middle of the rear axis.
// Units are m for positions, m/s for velocities, and m/s^2 for accelerations.
//
message MotionRequest
{
// The interface version used by the sender (simulation environment).
//
// \rules
// is_set
// \endrules
//
optional InterfaceVersion version = 1;
// The data timestamp of the simulation environment.
// A reference to \c Timestamp message.
//
// \rules
// is_set
// \endrules
//
optional Timestamp timestamp = 2;
// Define the type that is used to specify the motion request.
// This must be set. Additionally, the field corresponding to the specified
// option must be set.
//
optional MotionRequestType motion_request_type = 3;
// Defines a desired state.
// If the output option is set to DESIRED_STATE, this field must be set.
//
optional DesiredState desired_state = 4;
// Defines a desired trajectory.
// If the output option is set to DESIRED_TRAJECTORY, this field must be set.
//
optional DesiredTrajectory desired_trajectory = 5;
// Define different options for function output.
// Each option corresponds to a field in the message.
//
enum MotionRequestType
{
// Desired state calculated by the function.
//
MOTION_REQUEST_TYPE_DESIRED_STATE = 0;
// Desired trajectory calculated by the function.
//
MOTION_REQUEST_TYPE_TRAJECTORY = 1;
}
// \brief The desired state is calculated by the function as a result of
// the motion planning stack.
//
// The actuator management is supposed to reach the desired state at the
// specified time.
//
message DesiredState
{
// A reference to \c Timestamp message.
//
optional Timestamp timestamp = 1;
// Intended position to be reached in in x-, y-, and z-direction.
//
optional Vector3d position = 2;
// Intended orientation to be reached containing yaw, pitch and roll angle.
//
optional Orientation3d orientation = 3;
// Intended velocity to be reached in in x-, y-, and z-direction.
//
// Unit: m/s
//
optional Vector3d velocity = 4;
// Intended acceleration to be reached in x-, y-, and z-direction.
//
// Unit: m/s^2
//
optional Vector3d acceleration = 5;
}
// \brief Defined trajectory desired by the function.
//
// This trajectory is the result of the trajectory planning step in the function.
// The task of the actuator management is to follow this trajectory as closely as possible.
// The timestamps inside the trajectory must be defined in global simulation time.
//
// \note The trajectory is kept as a separate message for future extensions.
//
message DesiredTrajectory
{
// The trajectory consists of intended position (x, y, and z) and
// orientation (yaw, pitch and roll) of intended state to be reached.
// A reference to \c StatePoint message.
//
// \note The position within the trajectory point references to the
// middle point of the rear axis.
//
repeated StatePoint trajectory_point = 1;
}
}