@@ -2,31 +2,281 @@ syntax = "proto2";
2
2
3
3
option optimize_for = SPEED ;
4
4
5
+ import "osi_version.proto" ;
5
6
import "osi_common.proto" ;
6
7
7
8
package osi3 ;
8
9
10
+ // \brief Host vehicle data is about the perception of the vehicle about it's own, internal states.
11
+ // It can be understood as an interface container for restbussimulation signals.
12
+ // If there is a duplication with values from the rest of SensorView or SensorData, than these shall be taken.
9
13
//
10
- // \brief Interface for host vehicle data that is available to sensors and
11
- // other functions due to host vehicle's internal communication .
14
+ // It consists of different messages categorizing the vehicle in:
15
+ // Vehicle-Basics, Vehicle-Powertrain, Vehicle-SteeringWheel, Vehicle-Wheels, Vehicle-Localization .
12
16
//
13
17
// \image html OSI_HostVehicle.svg
14
18
//
15
- // All coordinates and orientations are relative to the global ground truth
16
- // coordinate system.
17
- //
18
19
message HostVehicleData
19
20
{
21
+ // The interface version used by the sender.
22
+ //
23
+ optional InterfaceVersion version = 10 ;
24
+
25
+ // The timestamp of the host vehicle data. Zero time is arbitrary but must be
26
+ // identical for all messages. Zero time does not need to coincide with
27
+ // the unix epoch. Recommended is the starting time point of the
28
+ // simulation or measurement.
29
+ //
30
+ // \note This is the point in time that the host vehicle data message becomes
31
+ // available as snapshot from the board net information.
32
+ //
33
+ optional Timestamp timestamp = 11 ;
34
+
35
+ // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics.
20
36
// Current estimated location based on GPS- and related navigation sensors.
21
37
//
22
38
// \note Note that dimension and base_polygon need not be set.
23
39
//
24
40
optional BaseMoving location = 1 ;
25
41
26
- // Current estimated location error based on GPS- and related navigation
42
+ // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics.
43
+ // Current estimated location error based on GPS- and related navigation
27
44
// sensors.
28
45
//
29
46
// \note Note that dimension and base_polygon need not be set.
30
47
//
31
48
optional BaseMoving location_rmse = 2 ;
49
+
50
+ // The basic parameters of the vehicle.
51
+ //
52
+ optional VehicleBasics vehicle_basics = 3 ;
53
+
54
+ // Interface regarding the powertrain.
55
+ //
56
+ optional VehiclePowertrain vehicle_powertrain = 4 ;
57
+
58
+ // Interface regarding the steering wheel.
59
+ //
60
+ optional VehicleSteeringWheel vehicle_steering_wheel = 5 ;
61
+
62
+ // Interface regarding the wheels.
63
+ //
64
+ optional VehicleWheels vehicle_wheels = 6 ;
65
+
66
+ // Interface regarding the localization.
67
+ //
68
+ optional VehiclePositionAndKinematics vehicle_position_and_kinematics = 7 ;
69
+
70
+ //
71
+ // \brief The absolute base parameters of the vehicle.
72
+ //
73
+ message VehicleBasics
74
+ {
75
+ // The total mass of the vehicle (curb weight).
76
+ //
77
+ // Unit: kg
78
+ //
79
+ // \par Reference:
80
+ // Paragraph 42 of the German Road Traffic Admission Regulations (StVZO).
81
+ //
82
+ optional double curb_weight = 1 ;
83
+ }
84
+
85
+ //
86
+ // \brief State description of the powertrain.
87
+ //
88
+ message VehiclePowertrain
89
+ {
90
+ // The positions of the pedals.
91
+ //
92
+ optional Pedalry pedalry = 1 ;
93
+
94
+ // The actual gear of the transmission.
95
+ // E.g. a gear lever can be in "D" and transmission in "4", but not the
96
+ // other way around.
97
+ //
98
+ // The sign of this field is linked to the gear's mode as following:
99
+ // - zero: neutral position
100
+ // - positive: driving forward mode
101
+ // - negative: reverse mode (generally -1, but few vehicles have several
102
+ // reverse mode gears)
103
+ //
104
+ optional int32 gear_transmission = 2 ;
105
+
106
+ // Information about the motor(s).
107
+ //
108
+ repeated Motor motor = 3 ;
109
+
110
+ //
111
+ // \brief A description for the positions of the pedals.
112
+ //
113
+ message Motor
114
+ {
115
+ // The type of the motor.
116
+ //
117
+ optional Type type = 1 ;
118
+
119
+ // Rounds per minute of the engine. RPM can be from E-Motor/ Engine.
120
+ //
121
+ // Unit: 1/min
122
+ //
123
+ optional double rpm = 2 ;
124
+
125
+ // Torque in Nm. It can either be from Engine/E-Motor or combined Torque values.
126
+ //
127
+ // Unit: N*m
128
+ //
129
+ optional double torque = 3 ;
130
+
131
+ // Definition which type of motor is used.
132
+ //
133
+ enum Type
134
+ {
135
+ // The powertrain mode is unknown.
136
+ //
137
+ TYPE_UNKNOWN = 0 ;
138
+
139
+ // It is another powertrain mode.
140
+ //
141
+ TYPE_OTHER = 1 ;
142
+
143
+ // A motor working after the principle of Nicolaus Otto.
144
+ //
145
+ TYPE_OTTO = 2 ;
146
+
147
+ // A motor working after the principle of Rudolf Diesel.
148
+ //
149
+ TYPE_DIESEL = 3 ;
150
+
151
+ // A motor working electric.
152
+ //
153
+ TYPE_ELECTRIC = 4 ;
154
+ }
155
+ }
156
+ }
157
+
158
+ //
159
+ // \brief The focus here is on the description of the wheels.
160
+ //
161
+ message VehicleWheels
162
+ {
163
+ // Description of each wheel.
164
+ //
165
+ // \note OSI uses singular instead of plural for repeated field names.
166
+ //
167
+ repeated WheelData wheel_data = 1 ;
168
+
169
+ //
170
+ // \brief The focus here is on the description of a wheel.
171
+ //
172
+ message WheelData
173
+ {
174
+ // The axle which contains this wheel. A value of 0 represents the
175
+ // front-most axle of the vehicle with higher numbers incrementing
176
+ // towards the rear-most axle.
177
+ //
178
+ optional uint32 axle = 1 ;
179
+
180
+ // The index of the wheel on the axle, counting in the direction
181
+ // of positive-y, that is, right-to-left.
182
+ //
183
+ // For example, on a standard 2-axle, 4-wheel car, the rear-right
184
+ // wheel would be (axle=1, index=0).
185
+ // This concept works also for twin tires.
186
+ //
187
+ optional uint32 index = 2 ;
188
+
189
+ // Rotation rate of the wheel based on the processed output of the hall sensor measurements at the wheel.
190
+ // The rotation rate around the y-axis with respect to the wheel's coordinate system.
191
+ //
192
+ // Unit: rad/s.
193
+ //
194
+ // The sign convention is defined using the right-hand rule.
195
+ // It is applied on the y-axis of the vehicle's reference system (center of bounding box).
196
+ // Counterclockwise is positive and clockwise is negative.
197
+ //
198
+ // \image html OSI_RotationRate.svg
199
+ // \note The vehicle's reference coordinate system is only used to determine the sign convention of the rotation rate.
200
+ //
201
+ optional double rotation_rate = 3 ;
202
+
203
+ // Contains the longitudinal, measured slip of the tire.
204
+ // \par References:
205
+ // - https://www.kfz-tech.de/Biblio/Formelsammlung/Schlupf.htm
206
+ //
207
+ // Unit: %
208
+ //
209
+ // The sign convention is defined using the right-hand rule.
210
+ // It is applied on the y-axis of the vehicle's reference system (center of bounding box).
211
+ // Counterclockwise is positive and clockwise is negative.
212
+ //
213
+ optional double slip = 4 ;
214
+ }
215
+ }
216
+
217
+ //
218
+ // \brief Current calculated and estimated location that can be based on GNSS- and related navigation sensors,
219
+ // but this message does not contain the single sensor values of the sensorics.
220
+ //
221
+ // This message contains the most accurate information the vehicle knows about its positioning and kinematics
222
+ // available on the board net.
223
+ // Because of this the values can differ from the "true" values calculated out of
224
+ // GroundTruth::proj_string, GroundTruth::MovingObject::BaseMoving::position, GroundTruth::host_vehicle_id.
225
+ //
226
+ message VehiclePositionAndKinematics
227
+ {
228
+ // Geodetic origin of the ENU (east-north-up) cartesian coordinate system regarding WGS84.
229
+ //
230
+ optional GeodeticPosition enu_origin = 1 ;
231
+
232
+ // The host vehicle location and kinematics at \c HostVehicleData::timestamp.
233
+ //
234
+ // \note If \c HostVehicleData::enu_origin is specified, then the \c BaseMoving parent frame used by
235
+ // \c HostVehicleData::location is the ENU frame according to ISO8855 with the geodetic origin of
236
+ // \c HostVehicleData::enu_origin. Otherwise \c BaseMoving parent frame is an arbitrary cartesian coordinate system
237
+ // with its axis conventions following ISO8855.
238
+ //
239
+ // \note Note that dimension and base_polygon need not be set.
240
+ //
241
+ optional BaseMoving base = 2 ;
242
+
243
+ // The host vehicle location and kinematics root-mean-square errors at \c HostVehicleData::timestamp.
244
+ //
245
+ // \note If \c HostVehicleData::enu_origin is specified, then the \c BaseMoving parent frame used by
246
+ // \c HostVehicleData::location is the ENU frame according to ISO8855 with the geodetic origin of
247
+ // \c HostVehicleData::enu_origin. Otherwise \c BaseMoving parent frame is an arbitrary cartesian coordinate system
248
+ // with its axis conventions following ISO8855.
249
+ //
250
+ // \note Note that dimension and base_polygon need not be set.
251
+ //
252
+ optional BaseMoving base_rmse = 3 ;
253
+
254
+ //
255
+ // \brief The geodetic position of the vehicle.
256
+ // In which context it is used has to be specified in the concrete field.
257
+ //
258
+ message GeodeticPosition
259
+ {
260
+ // Longitude in decimal degrees regarding WGS84.
261
+ //
262
+ // Unit: Degree
263
+ // Range: [-180; 180]
264
+ //
265
+ optional double longitude = 1 ;
266
+
267
+ // Latitude in decimal degrees regarding WGS84.
268
+ //
269
+ // Unit: Degree
270
+ // Range: [-90; 90]
271
+ //
272
+ optional double latitude = 2 ;
273
+
274
+ // Height above sea level regarding EGM96.
275
+ //
276
+ // Unit: m
277
+ // Range: [-300; 10000]
278
+ //
279
+ optional double altitude = 3 ;
280
+ }
281
+ }
32
282
}
0 commit comments