From 06bf30945e3a24ddf78344409d102fe8f42920ee Mon Sep 17 00:00:00 2001 From: u21n80 Date: Fri, 26 Feb 2021 07:05:58 +0100 Subject: [PATCH 1/3] Moved vehicle location, coordinate system origin and rmse to toplevel as there is no need for an additional message. Coordinate system of location and rmse has been clearly specified, if enu_origin is not specified then the old behavior where an arbitrary cartesian coordinate system is used, is restored. Also removed the raw Gnss sensor information as they shall be moved to a sensor specific message like it is the case for lidar measurements and images." Signed-off-by: u21n80 --- osi_hostvehicledata.proto | 142 +++++++++++--------------------------- 1 file changed, 39 insertions(+), 103 deletions(-) diff --git a/osi_hostvehicledata.proto b/osi_hostvehicledata.proto index d83061a61..0c2b1b3e8 100644 --- a/osi_hostvehicledata.proto +++ b/osi_hostvehicledata.proto @@ -8,8 +8,7 @@ import "osi_common.proto"; package osi3; // \brief Host vehicle data is about the perception of the vehicle about it's own, internal states. -// It describes data that the host vehicle knows about itself, -// e.g. from location sensors, internal sensors, board net etc. +// It describes data that the host vehicle knows about itself, e.g. from location sensors, board net etc. // A dynamic model can serve as input provider. // Sensors, mockups or other modules can make usage of the host vehicle data. // It consists of different messages categorizing the vehicle in: @@ -17,14 +16,11 @@ package osi3; // // \image html OSI_HostVehicle.svg // -// All coordinates and orientations are relative to the global ground truth coordinate system. -// Otherwise it is mentioned explicitly. -// message HostVehicleData { // The interface version used by the sender. // - optional InterfaceVersion version = 10; + optional InterfaceVersion version = 1; // 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 @@ -34,22 +30,35 @@ message HostVehicleData // \note This is the point in time that the host vehicle data message becomes // available on the board net system. // - optional Timestamp timestamp = 11; + optional Timestamp timestamp = 2; + + // Geodetic origin of the ENU (east-north-up) cartesian coordinate system regarding WGS84. + // + // Order: Longitude[rad], latitude[rad], altitude[m]. + // + optional Vector3d enu_origin = 3; - // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics. - // Current estimated location based on GPS- and related navigation sensors. + // The host vehicle location and kinematics at \c HostVehicleData::timestamp. + // + // \note If \c HostVehicleData::enu_origin is specified, then the \c BaseMoving parent frame used by + // \c HostVehicleData::location is the ENU frame according to ISO8855 with the geodetic origin of + // \c HostVehicleData::enu_origin. Otherwise \c BaseMoving parent frame is an arbitrary cartesian coordinate system + // with its axis conventions following ISO8855. // // \note Note that dimension and base_polygon need not be set. // - optional BaseMoving location = 1; + optional BaseMoving location = 4; - // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics. - // Current estimated location error based on GPS- and related navigation - // sensors. + // The host vehicle location and kinematics root-mean-square errors at \c HostVehicleData::timestamp. + // + // \note If \c HostVehicleData::enu_origin is specified, then the \c BaseMoving parent frame used by + // \c HostVehicleData::location is the ENU frame according to ISO8855 with the geodetic origin of + // \c HostVehicleData::enu_origin. Otherwise \c BaseMoving parent frame is an arbitrary cartesian coordinate system + // with its axis conventions following ISO8855. // // \note Note that dimension and base_polygon need not be set. // - optional BaseMoving location_rmse = 2; + optional BaseMoving location_rmse = 5; // The ID of the object. Can be discussed. // @@ -57,38 +66,34 @@ message HostVehicleData // is_globally_unique // \endrules // - optional Identifier id = 3; + optional Identifier id = 6; // The basic parameters of the vehicle. // - optional VehicleBasics vehicle_basics = 4; + optional VehicleBasics vehicle_basics = 7; // Interface regarding the powermanagement. // - optional VehiclePowermanagement vehicle_powermanagement = 5; + optional VehiclePowermanagement vehicle_powermanagement = 8; // Interface regarding the powertrain. // - optional VehiclePowertrain vehicle_powertrain = 6; + optional VehiclePowertrain vehicle_powertrain = 9; // Interface regarding the steering wheel. // - optional VehicleSteeringWheel vehicle_steering_wheel = 7; + optional VehicleSteeringWheel vehicle_steering_wheel = 10; // Interface regarding the wheels. // - optional VehicleWheels vehicle_wheels = 8; - - // Interface regarding the navigation. - // - optional VehiclePositionAndKinematics vehicle_position_and_kinematics = 9; + optional VehicleWheels vehicle_wheels = 11; // // \brief The absolute base parameters of the vehicle. // message VehicleBasics { - // The total mass of the vehicle (curb weight). + // The total mass of the vehicle (curb weight). // // Unit: kg // @@ -106,7 +111,7 @@ message HostVehicleData // To be discussed. // } - + // // \brief State description of the powertrain. // @@ -132,7 +137,7 @@ message HostVehicleData // reverse mode gears) // optional int32 gear_transmission = 3; - + // Information about the motor(s). // repeated Motor motor = 4; @@ -157,7 +162,7 @@ message HostVehicleData // optional double pedal_position_clutch = 3; } - + // // \brief A description for the positions of the pedals. // @@ -166,7 +171,7 @@ message HostVehicleData // The type of the motor. // optional Type type = 1; - + // Rounds per minute of the engine. RPM can be from E-Motor/ Engine. // // Unit: 1/min @@ -178,7 +183,7 @@ message HostVehicleData // Unit: N*m // optional double torque = 3; - + // Definition which type of motor is used. // enum Type @@ -194,11 +199,11 @@ message HostVehicleData // 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; @@ -212,7 +217,7 @@ message HostVehicleData // message VehicleSteeringWheel { - // Angle of the steering wheel. + // Angle of the steering wheel. // 0=Central (Straight); Left>0; 0>Right. // // Unit: rad @@ -262,7 +267,7 @@ message HostVehicleData // optional uint32 index = 2; - // Dry friction is a force that opposes the relative lateral motion of two solid surfaces + // Dry friction is a force that opposes the relative lateral motion of two solid surfaces // in contact. It is subdivided into static friction between non-moving surfaces and kinetic // friction between moving surfaces. // Ued here is the dry friction coefficient of the paired materials (see reference). @@ -298,73 +303,4 @@ message HostVehicleData optional double slip = 6; } } - - // - // \brief This message contains all the information the vehicle knows about its kinematic states. - // - message VehiclePositionAndKinematics - { - // - // \brief Current kinematic data based on the output of the Intertial Measurement Unit (IMU). - // - message CartesianInformation - { - // Current kinematic data based on the output of the Intertial Measurement Unit (IMU). - // - // \note Note that dimension and base_polygon need not be set. - // - optional BaseMoving cartesian_data = 1; - - // Current kinematic data error based on the output of the Intertial Measurement Unit (IMU). - // - // \note Note that dimension and base_polygon need not be set. - // - optional BaseMoving cartesian_data_rmse = 2; - } - - // - // \brief Current estimated location based on the output of the GPS-Unit. - // - message GeoreferencedInformation - { - // 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; - - // To be discussed as it is in CartesianInformation. - // Heading in decimal degrees. - // - // Unit: Degree - // Range: [0; 360] - // - // optional double heading = 4; - - // Accuracy of localization measurement in percentage of the units. - // - // Unit: % - // - // optional double localization_accuracy = 5; - - // Number of satellites. - // - // optional int32 number_of_satellites = 6; - } - } } From 9840a937d6f799479b13bd0d8f93916602dc480b Mon Sep 17 00:00:00 2001 From: u21n80 Date: Fri, 26 Feb 2021 07:05:58 +0100 Subject: [PATCH 2/3] Moved vehicle location, coordinate system origin and rmse to toplevel as there is no need for an additional message. Coordinate system of location and rmse has been clearly specified, if enu_origin is not specified then the old behavior where an arbitrary cartesian coordinate system is used, is restored. Also removed the raw Gnss sensor information as they shall be moved to a sensor specific message like it is the case for lidar measurements and images." Signed-off-by: u21n80 --- osi_hostvehicledata.proto | 122 +++++++++----------------------------- 1 file changed, 29 insertions(+), 93 deletions(-) diff --git a/osi_hostvehicledata.proto b/osi_hostvehicledata.proto index d83061a61..9980282e4 100644 --- a/osi_hostvehicledata.proto +++ b/osi_hostvehicledata.proto @@ -8,8 +8,7 @@ import "osi_common.proto"; package osi3; // \brief Host vehicle data is about the perception of the vehicle about it's own, internal states. -// It describes data that the host vehicle knows about itself, -// e.g. from location sensors, internal sensors, board net etc. +// It describes data that the host vehicle knows about itself, e.g. from location sensors, board net etc. // A dynamic model can serve as input provider. // Sensors, mockups or other modules can make usage of the host vehicle data. // It consists of different messages categorizing the vehicle in: @@ -17,9 +16,6 @@ package osi3; // // \image html OSI_HostVehicle.svg // -// All coordinates and orientations are relative to the global ground truth coordinate system. -// Otherwise it is mentioned explicitly. -// message HostVehicleData { // The interface version used by the sender. @@ -36,16 +32,29 @@ message HostVehicleData // optional Timestamp timestamp = 11; - // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics. - // Current estimated location based on GPS- and related navigation sensors. + // Geodetic origin of the ENU (east-north-up) cartesian coordinate system regarding WGS84. + // + // Order: Longitude[rad], latitude[rad], altitude[m]. + // + optional Vector3d enu_origin = 12; + + // The host vehicle location and kinematics at \c HostVehicleData::timestamp. + // + // \note If \c HostVehicleData::enu_origin is specified, then the \c BaseMoving parent frame used by + // \c HostVehicleData::location is the ENU frame according to ISO8855 with the geodetic origin of + // \c HostVehicleData::enu_origin. Otherwise \c BaseMoving parent frame is an arbitrary cartesian coordinate system + // with its axis conventions following ISO8855. // // \note Note that dimension and base_polygon need not be set. // optional BaseMoving location = 1; - // Deprecated: Will be removed in next major release. Moved to VehiclePositionAndKinematics. - // Current estimated location error based on GPS- and related navigation - // sensors. + // The host vehicle location and kinematics root-mean-square errors at \c HostVehicleData::timestamp. + // + // \note If \c HostVehicleData::enu_origin is specified, then the \c BaseMoving parent frame used by + // \c HostVehicleData::location is the ENU frame according to ISO8855 with the geodetic origin of + // \c HostVehicleData::enu_origin. Otherwise \c BaseMoving parent frame is an arbitrary cartesian coordinate system + // with its axis conventions following ISO8855. // // \note Note that dimension and base_polygon need not be set. // @@ -79,16 +88,12 @@ message HostVehicleData // optional VehicleWheels vehicle_wheels = 8; - // Interface regarding the navigation. - // - optional VehiclePositionAndKinematics vehicle_position_and_kinematics = 9; - // // \brief The absolute base parameters of the vehicle. // message VehicleBasics { - // The total mass of the vehicle (curb weight). + // The total mass of the vehicle (curb weight). // // Unit: kg // @@ -106,7 +111,7 @@ message HostVehicleData // To be discussed. // } - + // // \brief State description of the powertrain. // @@ -132,7 +137,7 @@ message HostVehicleData // reverse mode gears) // optional int32 gear_transmission = 3; - + // Information about the motor(s). // repeated Motor motor = 4; @@ -157,7 +162,7 @@ message HostVehicleData // optional double pedal_position_clutch = 3; } - + // // \brief A description for the positions of the pedals. // @@ -166,7 +171,7 @@ message HostVehicleData // The type of the motor. // optional Type type = 1; - + // Rounds per minute of the engine. RPM can be from E-Motor/ Engine. // // Unit: 1/min @@ -178,7 +183,7 @@ message HostVehicleData // Unit: N*m // optional double torque = 3; - + // Definition which type of motor is used. // enum Type @@ -194,11 +199,11 @@ message HostVehicleData // 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; @@ -212,7 +217,7 @@ message HostVehicleData // message VehicleSteeringWheel { - // Angle of the steering wheel. + // Angle of the steering wheel. // 0=Central (Straight); Left>0; 0>Right. // // Unit: rad @@ -262,7 +267,7 @@ message HostVehicleData // optional uint32 index = 2; - // Dry friction is a force that opposes the relative lateral motion of two solid surfaces + // Dry friction is a force that opposes the relative lateral motion of two solid surfaces // in contact. It is subdivided into static friction between non-moving surfaces and kinetic // friction between moving surfaces. // Ued here is the dry friction coefficient of the paired materials (see reference). @@ -298,73 +303,4 @@ message HostVehicleData optional double slip = 6; } } - - // - // \brief This message contains all the information the vehicle knows about its kinematic states. - // - message VehiclePositionAndKinematics - { - // - // \brief Current kinematic data based on the output of the Intertial Measurement Unit (IMU). - // - message CartesianInformation - { - // Current kinematic data based on the output of the Intertial Measurement Unit (IMU). - // - // \note Note that dimension and base_polygon need not be set. - // - optional BaseMoving cartesian_data = 1; - - // Current kinematic data error based on the output of the Intertial Measurement Unit (IMU). - // - // \note Note that dimension and base_polygon need not be set. - // - optional BaseMoving cartesian_data_rmse = 2; - } - - // - // \brief Current estimated location based on the output of the GPS-Unit. - // - message GeoreferencedInformation - { - // 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; - - // To be discussed as it is in CartesianInformation. - // Heading in decimal degrees. - // - // Unit: Degree - // Range: [0; 360] - // - // optional double heading = 4; - - // Accuracy of localization measurement in percentage of the units. - // - // Unit: % - // - // optional double localization_accuracy = 5; - - // Number of satellites. - // - // optional int32 number_of_satellites = 6; - } - } } From defcd14a925ccd575cb845a4cb39887f971582f9 Mon Sep 17 00:00:00 2001 From: u21n80 Date: Tue, 20 Apr 2021 07:11:31 +0200 Subject: [PATCH 3/3] Made geodetic origin a message type instead of Vector3d to have a better documentation of the values stored inside. Signed-off-by: u21n80 --- osi_hostvehicledata.proto | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/osi_hostvehicledata.proto b/osi_hostvehicledata.proto index 396e6df9a..0b57ceb08 100644 --- a/osi_hostvehicledata.proto +++ b/osi_hostvehicledata.proto @@ -34,9 +34,7 @@ message HostVehicleData // Geodetic origin of the ENU (east-north-up) cartesian coordinate system regarding WGS84. // - // Order: Longitude[rad], latitude[rad], altitude[m]. - // - optional Vector3d enu_origin = 12; + optional GeodeticPosition enu_origin = 12; // The host vehicle location and kinematics at \c HostVehicleData::timestamp. // @@ -295,4 +293,30 @@ message HostVehicleData optional double slip = 6; } } + + // \brief Geodetic position. + // + 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; + } }