Skip to content

Added ENU coordinate system specifications to HostVehicleData #488

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 44 additions & 84 deletions osi_hostvehicledata.proto
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,14 @@ 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:
// Vehicle-Basics, Vehicle-Powermanagement, Vehicle-Powertrain, Vehicle-SteeringWheel, Vehicle-Wheels, Vehicle-Localization.
//
// \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.
Expand All @@ -36,16 +32,27 @@ 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.
//
optional GeodeticPosition 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.
//
Expand All @@ -71,16 +78,12 @@ message HostVehicleData
//
optional VehicleWheels vehicle_wheels = 7;

// Interface regarding the navigation.
//
optional VehiclePositionAndKinematics vehicle_position_and_kinematics = 8;

//
// \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
//
Expand All @@ -98,7 +101,7 @@ message HostVehicleData
// To be discussed.
//
}

//
// \brief State description of the powertrain.
//
Expand All @@ -124,7 +127,7 @@ message HostVehicleData
// reverse mode gears)
//
optional int32 gear_transmission = 3;

// Information about the motor(s).
//
repeated Motor motor = 4;
Expand All @@ -149,7 +152,7 @@ message HostVehicleData
//
optional double pedal_position_clutch = 3;
}

//
// \brief A description for the positions of the pedals.
//
Expand All @@ -158,7 +161,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
Expand All @@ -170,7 +173,7 @@ message HostVehicleData
// Unit: N*m
//
optional double torque = 3;

// Definition which type of motor is used.
//
enum Type
Expand All @@ -186,11 +189,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;
Expand All @@ -204,7 +207,7 @@ message HostVehicleData
//
message VehicleSteeringWheel
{
// Angle of the steering wheel.
// Angle of the steering wheel.
// 0=Central (Straight); Left>0; 0>Right.
//
// Unit: rad
Expand Down Expand Up @@ -254,7 +257,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).
Expand Down Expand Up @@ -291,72 +294,29 @@ message HostVehicleData
}
}

// \brief Geodetic position.
//
// \brief This message contains all the information the vehicle knows about its positioning and kinematics.
//
message VehiclePositionAndKinematics
message GeodeticPosition
{
// Longitude in decimal degrees regarding WGS84.
//
// \brief Current calculated and estimated kinematic data.
// Unit: Degree
// Range: [-180; 180]
//
message CartesianInformation
{
// Current calculated and estimated kinematic data.
//
// \note Note that dimension and base_polygon need not be set.
//
optional BaseMoving cartesian_data = 1;

// Current calculated and estimated kinematic data error.
//
// \note Note that dimension and base_polygon need not be set.
//
optional BaseMoving cartesian_data_rmse = 2;
}
optional double longitude = 1;

// Latitude in decimal degrees regarding WGS84.
//
// \brief Current calculated and estimated geodetic location.
// Unit: Degree
// Range: [-90; 90]
//
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;
optional double latitude = 2;

// Number of satellites.
//
// optional int32 number_of_satellites = 6;
}
}
// Height above sea level regarding EGM96.
//
// Unit: m
// Range: [-300; 10000]
//
optional double altitude = 3;
}
}