diff --git a/osi_common.proto b/osi_common.proto index 01fb932f2..58685962c 100644 --- a/osi_common.proto +++ b/osi_common.proto @@ -15,19 +15,19 @@ package osi3; // message Vector3d { - // The x coordinate. + // The x-coordinate. // // Unit: m, m/s, or m/s^2 // optional double x = 1; - // The y coordinate. + // The y-coordinate. // // Unit: m, m/s, or m/s^2 // optional double y = 2; - // The z coordinate. + // The z-coordinate. // // Unit: m, m/s, or m/s^2 // @@ -43,13 +43,13 @@ message Vector3d // message Vector2d { - // The x coordinate. + // The x-coordinate. // // Unit: m, m/s, or m/s^2 // optional double x = 1; - // The y coordinate. + // The y-coordinate. // // Unit: m, m/s, or m/s^2 // @@ -804,3 +804,84 @@ message ColorCMYK // optional double key = 4; } + +// +// \brief A description for the positions of the pedals. +// +message Pedalry +{ + // Position of the acceleration pedal. + // Range: 0-1 (Unpressed - fully pressed) + // + optional double pedal_position_acceleration = 1; + + // Position of the brake pedal. + // Range: 0-1 (Unpressed - fully pressed) + // + optional double pedal_position_brake = 2; + + // Position of the clutch pedal. + // Range: 0-1 (Unpressed - fully pressed) + // + optional double pedal_position_clutch = 3; +} + +// +// \brief A description of the steering wheel. +// +message VehicleSteeringWheel +{ + // Angle of the steering wheel. + // Zero means the steering wheel is in its center position. A positive value + // means the steering wheel is turned to the left. A negative value + // means the steering wheel is turned to the right of the center position. + // + // Unit: rad + // + optional double angle = 1; + + // Angular speed of the steering wheel. + // Zero means the steering wheel stays in its position. A positive value + // means the steering wheel is turned to the left. A negative value + // means the steering wheel is turned to the right. + // + // Unit: rad/s + // + optional double angular_speed = 2; + + // Torque of the steering wheel to the hand. + // Zero means there is no force from the steering wheel to the hand of the driver. + // A positive value means that the steering wheel would turn to the left without driver intervention. + // A negative value means that the steering wheel would turn to the right without driver intervention. + // + // Unit: N*m + // + optional double torque = 3; +} + +// +// \brief The geodetic position of an object, that is, the center of the 3D bounding box. +// +message GeodeticPosition +{ + // Longitude in decimal degrees regarding WGS84. + // + // Unit: Degree + // Range: [-180; 180] + // + optional double longitude = 1; + + // Latitude in decimal degrees regarding WGS84. + // + // Unit: Degree + // Range: [-90; 90] + // + optional double latitude = 2; + + // Height above sea level regarding EGM96. + // + // Unit: m + // Range: [-300; 10000] + // + optional double altitude = 3; +} diff --git a/osi_hostvehicledata.proto b/osi_hostvehicledata.proto index 711f7fcc6..a40f0e6dc 100644 --- a/osi_hostvehicledata.proto +++ b/osi_hostvehicledata.proto @@ -2,31 +2,277 @@ syntax = "proto2"; option optimize_for = SPEED; +import "osi_version.proto"; import "osi_common.proto"; package osi3; +// \brief Host vehicle data is about the perception of the vehicle about its own internal states. +// It captures the knowledge the vehicle has internally, which can differ from the actual or global truth for various reasons. +// This message can also be understood as an interface container for the signals of a rest bus simulation. // -// \brief Interface for host vehicle data that is available to sensors and -// other functions due to host vehicle's internal communication. +// It consists of different messages categorizing the vehicle in: +// Basics, powertrain, brake system, vehicle steering, vehicle wheels, vehicle localization. // // \image html OSI_HostVehicle.svg // -// All coordinates and orientations are relative to the global ground truth -// coordinate system. -// message HostVehicleData { + // The interface version used by the sender. + // + optional InterfaceVersion version = 9; + + // The timestamp of the host vehicle data. Zero time is arbitrary but must be + // identical for all messages. Zero time does not need to coincide with + // the unix epoch. Recommended is the starting time point of the + // simulation or measurement. + // + // \note This is the point in time that the host vehicle data message becomes + // available as snapshot from the board net information. + // + optional Timestamp timestamp = 10; + + // The ID of the host vehicle in any associated GroundTruth data. + // + optional Identifier host_vehicle_id = 11; + + // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics. // Current estimated location based on GPS- and related navigation sensors. // // \note Note that dimension and base_polygon need not be set. // optional BaseMoving location = 1; - // Current estimated location error based on GPS- and related navigation + // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics. + // Current estimated location error based on GPS and related navigation // sensors. // // \note Note that dimension and base_polygon need not be set. // optional BaseMoving location_rmse = 2; + + // The basic parameters of the vehicle. + // + optional VehicleBasics vehicle_basics = 3; + + // Interface regarding the powertrain. + // + optional VehiclePowertrain vehicle_powertrain = 4; + + // Interface regarding the brake system + // + optional VehicleBrakeSystem vehicle_brake_system = 5; + + // Interface regarding the steering. + // + optional VehicleSteering vehicle_steering = 6; + + // Interface regarding the internal wheel states. + // + optional VehicleWheels vehicle_wheels = 7; + + // Interface regarding the localization. + // + optional VehicleLocalization vehicle_localization = 8; + + // + // \brief The absolute base parameters of the vehicle. + // + message VehicleBasics + { + // The total mass of the vehicle (curb weight). + // + // Unit: kg + // + // \par Reference: + // Paragraph 42 of the German Road Traffic Admission Regulations (StVZO). + // + optional double curb_weight = 1; + } + + // + // \brief State description of the powertrain. + // + message VehiclePowertrain + { + // Position of the acceleration pedal. + // Range: 0-1 (Unpressed - fully pressed) + // + optional double pedal_position_acceleration = 1; + + // Position of the clutch pedal. + // Range: 0-1 (Unpressed - fully pressed) + // + optional double pedal_position_clutch = 2; + + // The actual gear of the transmission. + // For example, a gear lever can be on "D" and the transmission on "4", but not the + // other way around. + // + // The sign of this field is linked to the gear's mode as following: + // - zero: neutral position + // - positive: driving forward mode + // - negative: reverse mode (generally -1, but few vehicles have more than 1 + // reverse mode gears) + // + optional int32 gear_transmission = 3; + + // Information about the motor(s). + // + repeated Motor motor = 4; + + // + // \brief A description of the motor states. + // + message Motor + { + // The type of the motor. + // + optional Type type = 1; + + // Revolutions per minute of the motor. + // + // Unit: 1/min + // + optional double rpm = 2; + + // Torque of the motor. + // + // Unit: N*m + // + optional double torque = 3; + + // Definition which type of motor is used. + // + enum Type + { + // The motor type is unknown. + // + TYPE_UNKNOWN = 0; + + // It is another motor type. + // + TYPE_OTHER = 1; + + // A motor working after the principle of Nicolaus Otto. + // + TYPE_OTTO = 2; + + // A motor working after the principle of Rudolf Diesel. + // + TYPE_DIESEL = 3; + + // A motor working electric. + // + TYPE_ELECTRIC = 4; + } + } + } + + // + // \brief The focus here is on the description of the brake system. + // + message VehicleBrakeSystem + { + // Position of the brake pedal. + // Range: 0-1 (Unpressed - fully pressed) + // + optional double pedal_position_brake = 1; + } + + // + // \brief The focus here is on the description of the steering train. + // + message VehicleSteering + { + // Description of the steering wheel. + // + optional VehicleSteeringWheel vehicle_steering_wheel = 1; + } + + // + // \brief The focus here is on the description of internal wheel states. + // + message VehicleWheels + { + // Description of each wheel. + // + // \note OSI uses singular instead of plural for repeated field names. + // + repeated WheelData wheel_data = 1; + + // + // \brief The focus here is on the description of internal wheel states. + // + message WheelData + { + // The axle which contains this wheel. A value of 0 represents the + // foremost axle of the vehicle, with higher numbers ascending + // towards the rearmost axle. + // + optional uint32 axle = 1; + + // The index of the wheel on the axle, counted in positive y- direction, + // that is, right-to-left. + // + // For example, on a standard 2-axle, 4-wheel car, the rear-right + // wheel would be (axle=1, index=0). + // This concept also works for twin tires. + // + optional uint32 index = 2; + + // Rotation rate of the wheel based on the processed output of the hall sensor measurements at the wheel. + // The rotation rate around the y-axis with respect to the wheel's coordinate system. + // + // Unit: rad/s. + // + // The sign convention is defined using the right-hand rule. + // It is applied on the y-axis of the vehicle's reference system, that is, the center of bounding box. + // Counterclockwise is positive and clockwise is negative. + // + // \image html OSI_RotationRate.svg + // \note The vehicle's reference coordinate system is only used to determine the sign convention of the rotation rate. + // + optional double rotation_rate = 3; + + // Contains the longitudinal, measured slip of the tire. + // \par References: + // - https://www.kfz-tech.de/Biblio/Formelsammlung/Schlupf.htm + // + // Unit: % + // + // The sign convention is defined using the right-hand rule. + // It is applied on the y-axis of the vehicle's reference system, that is, the center of bounding box. + // Counterclockwise is positive and clockwise is negative. + // + optional double slip = 4; + } + } + + // + // \brief Current calculated and estimated location that can be based on GNSS and related navigation sensors. + // This message does not contain the individual sensor values of the sensor technology. + // + // This message contains the most accurate information the vehicle knows about its position + // available in the on-board network. + // Because of this the values can differ from the "true" values calculated out of + // GroundTruth::proj_string, GroundTruth::MovingObject::BaseMoving::position, GroundTruth::host_vehicle_id. + // + message VehicleLocalization + { + // Most accurate position information of the vehicle available in the on-board network. + // The reference point for position, that is, the center (x,y,z) of the bounding box + // in context to the global coordinate system. + // + optional Vector3d position = 1; + + // Most accurate orientation information of the vehicle available in the on-board network + // in context to the global coordinate system. + // + optional Orientation3d orientation = 2; + + // Most accurate geodetic information of the vehicle available in the on-board network. + // + optional GeodeticPosition geodetic_position = 3; + } }