etsi_its_messages v3.5.0
Loading...
Searching...
No Matches
cdd_v2-1-1_getters.h
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2// Copyright Institute for Automotive Engineering (ika), RWTH Aachen University
3
8
9#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_GETTERS_H
10#define ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_GETTERS_H
11
12#include <GeographicLib/UTMUPS.hpp>
13
15
22inline double getLongitudinalAcceleration(const AccelerationComponent& longitudinal_acceleration) {
23 return ((double)longitudinal_acceleration.value.value) * 1e-1;
24}
25
32inline double getLongitudinalAccelerationConfidence(const AccelerationComponent& longitudinal_acceleration) {
33 return ((double)longitudinal_acceleration.confidence.value) * 1e-1 / etsi_its_msgs::ONE_D_GAUSSIAN_FACTOR;
34}
35
42inline double getLateralAcceleration(const AccelerationComponent& lateral_acceleration) {
43 return ((double)lateral_acceleration.value.value) * 1e-1;
44}
45
52inline double getLateralAccelerationConfidence(const AccelerationComponent& lateral_acceleration) {
53 return ((double)lateral_acceleration.confidence.value) * 1e-1 / etsi_its_msgs::ONE_D_GAUSSIAN_FACTOR;
54}
55
56
63template <typename PositionConfidenceEllipse>
64inline std::tuple<double, double, double> getPositionConfidenceEllipse(PositionConfidenceEllipse& position_confidence_ellipse) {
65 return {
66 getSemiAxis(position_confidence_ellipse.semi_major_axis_length),
67 getSemiAxis(position_confidence_ellipse.semi_minor_axis_length),
68 position_confidence_ellipse.semi_major_axis_orientation.value * 1e-1
69 };
70}
71
79template <typename PositionConfidenceEllipse>
80inline std::array<double, 4> getPositionConfidenceEllipse(const PositionConfidenceEllipse& position_confidence_ellipse, const double object_heading){
81 auto [semi_major, semi_minor, major_orientation] = getPositionConfidenceEllipse(position_confidence_ellipse);
82 return CovMatrixFromConfidenceEllipse(semi_major, semi_minor, major_orientation, object_heading);
83}
84
92template <typename PositionConfidenceEllipse>
93inline std::array<double, 4> getWGSPositionConfidenceEllipse(const PositionConfidenceEllipse& position_confidence_ellipse){
94 auto [semi_major, semi_minor, major_orientation] = getPositionConfidenceEllipse(position_confidence_ellipse);
95 return WGSCovMatrixFromConfidenceEllipse(semi_major, semi_minor, major_orientation);
96}
97
98
99#endif // ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_GETTERS_H
Common getter functions for the ETSI ITS Common Data Dictionary (CDD) v1.3.1, v2.1....
double getSemiAxis(const SemiAxisLength &semi_axis_length)
Get the Semi Axis object.
std::array< double, 4 > CovMatrixFromConfidenceEllipse(double semi_major, double semi_minor, double major_orientation, const double object_heading)
Convert the confidence ellipse to a covariance matrix.
std::array< double, 4 > WGSCovMatrixFromConfidenceEllipse(double semi_major, double semi_minor, double major_orientation)
Convert the confidence ellipse to a covariance matrix.
std::array< double, 4 > getWGSPositionConfidenceEllipse(const PositionConfidenceEllipse &position_confidence_ellipse)
Get the covariance matrix of the position confidence ellipse.
double getLateralAcceleration(const AccelerationComponent &lateral_acceleration)
Get the lateral acceleration.
double getLongitudinalAcceleration(const AccelerationComponent &longitudinal_acceleration)
Get the longitudinal acceleration.
double getLateralAccelerationConfidence(const AccelerationComponent &lateral_acceleration)
Get the Lateral Acceleration Confidence.
double getLongitudinalAccelerationConfidence(const AccelerationComponent &longitudinal_acceleration)
Get the Longitudinal Acceleration Confidence.
std::tuple< double, double, double > getPositionConfidenceEllipse(PositionConfidenceEllipse &position_confidence_ellipse)
Extract major axis length, minor axis length and orientation from the given position confidence ellip...