Skip to content
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

RViz Plugin for SPATEM/MAPEM #55

Merged
merged 78 commits into from
Jan 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
fb7a4ee
add initial mapem plugin version
jpbusch Dec 18, 2023
2449608
minor cleanup and fixes in mapem display
gkueppers Dec 19, 2023
18384f7
start implementing mapem access
gkueppers Dec 19, 2023
23cf501
add tests for mapem access
gkueppers Dec 19, 2023
b99fdf1
further implementation of mapem access
gkueppers Dec 20, 2023
896cac3
move checks to top-level file
gkueppers Dec 21, 2023
c38eb8a
implement test to get unix stamp from mapem
gkueppers Dec 21, 2023
3af105d
add additional setter/getter/utils for mapem/j2735
gkueppers Dec 21, 2023
1616c5e
improved tests
gkueppers Dec 21, 2023
1f0384a
rename to intersection_render_object
gkueppers Dec 21, 2023
7b0b05c
update mapem display to make use of intersection render object
gkueppers Dec 21, 2023
ce372d0
improved j2735 access
gkueppers Dec 21, 2023
5ffb775
visualizing intersection ref-points
gkueppers Dec 22, 2023
39175d8
set stamp of intersection render object to receive time if stamp is n…
gkueppers Dec 22, 2023
d35e6ac
adjsut scale and rviz config
gkueppers Dec 27, 2023
5ce9df1
move set/get functions for BitStrings to separate file
gkueppers Dec 27, 2023
3a3ae16
renaem j2735 access
gkueppers Dec 27, 2023
f5a2dd4
additional getter/setter for j2735
gkueppers Dec 27, 2023
9d468b6
visualizing some mapem lanes
gkueppers Dec 27, 2023
c58855d
visualizing ingress/egress lane in separrate color
gkueppers Dec 28, 2023
c9185c4
wip spatem subscriber
gkueppers Dec 28, 2023
4d1c6ea
wip on spat subscriber
gkueppers Dec 28, 2023
5ffb9f3
improved ui for spatem topic
gkueppers Dec 29, 2023
0f13576
handling and assignment of movement states to intersections
gkueppers Dec 29, 2023
d245079
move access functions which data-types are not part of spatem to mape…
gkueppers Dec 29, 2023
3b014f1
add spatem access main headers
gkueppers Dec 29, 2023
c35abf5
adjust to access restructuring
gkueppers Dec 29, 2023
cb07521
derive information from spatem
gkueppers Dec 29, 2023
e490770
remove outdated movement states
gkueppers Dec 29, 2023
b13cc0a
colorizing traffic lights according to movement state
gkueppers Dec 29, 2023
e7d6612
don't render traffic lights for egress lanes
gkueppers Dec 29, 2023
9b437de
fix ros1 tests
gkueppers Jan 2, 2024
0b42b85
restore etsi_its_msgs_utils from current spatem/mapem branch
gkueppers Nov 25, 2024
4b5152f
comment mapem plugin for now in cmake-lists and package xml
gkueppers Nov 25, 2024
65ad8d9
renaming of message package names in rviz plugin
gkueppers Nov 27, 2024
3e2295f
rename mapem and spatem access headers
gkueppers Nov 27, 2024
6b04eb5
move checks out of cdd directory to top-level impl dir
gkueppers Nov 27, 2024
524a0bc
adapt rviz plugin to new messages
gkueppers Nov 27, 2024
5c1e03d
restore cdd-checks for now
gkueppers Nov 27, 2024
ff0f6e5
fix plugins description
gkueppers Nov 27, 2024
253ceae
include mapem tests into new test structure
gkueppers Nov 27, 2024
634d009
adapt default spatem topic
gkueppers Nov 27, 2024
85d1f93
remove empty line in mapem-test definition
gkueppers Nov 27, 2024
2c5bccf
fix mapem plugin after adjustment of message-type naming
gkueppers Nov 28, 2024
731bbd5
fix get_bitstring
gkueppers Nov 29, 2024
d63feb4
add mapem to rviz demo config
gkueppers Nov 29, 2024
f0fbeb5
improve pcap2bag
gkueppers Dec 19, 2024
bbc217c
Merge branch 'main' into feature/spat-map-plugin
gkueppers Dec 19, 2024
41944b2
rename asn1_utils to primitive access
gkueppers Dec 27, 2024
b1153c9
integrate asn1_primitive_access
gkueppers Dec 27, 2024
c60b6b8
move cdd_checks to top-level checks file
gkueppers Dec 27, 2024
81b052d
adapt setBitString to fix tests
gkueppers Dec 30, 2024
4b29733
move j2735 methods to mapem access
gkueppers Dec 30, 2024
70f9563
add getter for unixSeconds to spatem access
gkueppers Dec 30, 2024
9f3e0ad
add tests for spatem access
gkueppers Dec 30, 2024
0af2907
align mapem display to new access without j2735
gkueppers Dec 30, 2024
06c90a2
align copyright note
gkueppers Dec 30, 2024
1de17fd
remove undef of non existent CDD_CHECKS_H
gkueppers Dec 30, 2024
9ee1ec5
fix typo in comment
gkueppers Dec 30, 2024
9ee0034
add property for MAPEM lanes width, and spatem sphere scale
gkueppers Dec 30, 2024
8478663
use gmtime instead of localtime when getting unix-seconds of the year
gkueppers Jan 2, 2025
323d94f
update rviz config
gkueppers Jan 2, 2025
33cab83
use timegm instead of mktime in tests
gkueppers Jan 2, 2025
4ff0c1f
align namespace handling for checks and asn1 primitives
gkueppers Jan 2, 2025
beaaeea
rename to throwIfNotPresent
gkueppers Jan 2, 2025
a1599b2
Merge branch 'main' into feature/spat-map-plugin
gkueppers Jan 3, 2025
6897c00
adapt copyrights in spatem/mapem files
gkueppers Jan 3, 2025
8976077
add some missing doxystrings
gkueppers Jan 3, 2025
14245c2
integrate getter for intersection-id
gkueppers Jan 3, 2025
ac354f4
implement and use getters for MinuteOfTheYear and DSecond
gkueppers Jan 3, 2025
ac35bc3
implement and use getter for signalGroupID
gkueppers Jan 3, 2025
bdad4d3
use local intersection state variable
gkueppers Jan 3, 2025
d101b79
add spatem ts setters
gkueppers Jan 3, 2025
9e2a77c
implement tests for spatem setter/getter
gkueppers Jan 3, 2025
fc81692
add doxystrings for spatem setters
gkueppers Jan 3, 2025
e453356
increase sphere scale in example rviz config
gkueppers Jan 3, 2025
cfc3f5b
add getter for current phase-state
gkueppers Jan 14, 2025
3eee1c5
implement getter in RViz plugin
gkueppers Jan 14, 2025
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
=============================================================================
MIT License

Copyright (c) 2023-2024 Institute for Automotive Engineering (ika), RWTH Aachen University

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=============================================================================
*/

#ifndef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_GETTERS_H
#define ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_GETTERS_H

/**
* @file impl/asn1_primitives_getters.h
* @brief File containing getter-functions that are used in the context of ETIS ITS Messages related to ASN.1 datatype primitives
*/

/**
* @brief Get a Bit String in form of bool vector
*
* @param buffer as uint8_t vector
* @param bits_unused number of bits to ignore at the end of the bit string
* @return std::vector<bool>
*/
inline std::vector<bool> getBitString(const std::vector<uint8_t>& buffer, const int bits_unused) {
// bit string size
const int bits_per_byte = 8;
const int n_bytes = buffer.size();
const int n_bits = n_bytes * bits_per_byte;
std::vector<bool> bits;
bits.resize(n_bits - bits_unused, 0);

// loop over bytes in reverse order
for (int byte_idx = n_bytes - 1; byte_idx >= 0; byte_idx--) {
// loop over bits in a byte
for (int bit_idx_in_byte = bits_per_byte - 1; bit_idx_in_byte >= 0; bit_idx_in_byte--) {

// map bit index in byte to bit index in total bitstring
int bit_idx = (n_bytes - byte_idx - 1) * bits_per_byte + bit_idx_in_byte;
if (byte_idx == 0 && bit_idx < bits_unused) break;

// extract bit from bitstring and set output array entry appropriately
bool byte_has_true_bit = buffer[byte_idx] & (1 << bit_idx_in_byte);
if (byte_has_true_bit) bits[bits_per_byte-bit_idx-1] = true;
}
}
return bits;
}

#endif // ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_GETTERS_H
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
=============================================================================
MIT License

Copyright (c) 2023-2024 Institute for Automotive Engineering (ika), RWTH Aachen University

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
=============================================================================
*/

#ifndef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_SETTERS_H
#define ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_SETTERS_H

/**
* @file impl/asn1_primitives_setters.h
* @brief File containing setter-functions that are used in the context of ETIS ITS Messages related to ASN.1 datatype primitives
*/

/**
* @brief Set a Bit String by a vector of bools
*
* @tparam T
* @param bitstring BitString to set
* @param bits vector of bools
*/
template <typename T>
inline void setBitString(T& bitstring, const std::vector<bool>& bits) {
// bit string size
const int bits_per_byte = 8;
const int n_bytes = (bits.size() - 1) / bits_per_byte + 1;
const int n_bits = n_bytes * bits_per_byte;

// init output
bitstring.bits_unused = n_bits - bits.size();
bitstring.value = std::vector<uint8_t>(n_bytes);

// loop over all bytes in reverse order
for (int byte_idx = n_bytes - 1; byte_idx >= 0; byte_idx--) {

// loop over bits in a byte
for (int bit_idx_in_byte = bits_per_byte - 1; bit_idx_in_byte >= 0; bit_idx_in_byte--) {

// map bit index in byte to bit index in total bitstring
int bit_idx = (n_bytes - byte_idx - 1) * bits_per_byte + bit_idx_in_byte;
if (byte_idx == 0 && bit_idx < bitstring.bits_unused) break;

// set bit in output bitstring appropriately
if (bit_idx < bits.size()) {
bitstring.value[byte_idx] |= bits[bits_per_byte - bit_idx - 1] << bit_idx_in_byte;
}
}
}
}

#endif // ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_SETTERS_H
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,18 @@ SOFTWARE.
* @brief Main CAM access implementation header
*/

#undef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_GETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_SETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_UTILS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_CHECKS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_GETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_SETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V1_3_1_GETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V1_3_1_SETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_GETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_SETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CHECKS_H

#pragma once

Expand All @@ -48,6 +50,7 @@ SOFTWARE.

#include <GeographicLib/UTMUPS.hpp>

#include <etsi_its_msgs_utils/impl/constants.h>
#include <etsi_its_msgs_utils/impl/cam/cam_getters.h>
#include <etsi_its_msgs_utils/impl/cam/cam_setters.h>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ SOFTWARE.
#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
#define ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H

#include <etsi_its_msgs_utils/impl/asn1_primitives/asn1_primitives_getters.h>

/**
* @brief Get the Station ID object
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ SOFTWARE.

#pragma once

#include <etsi_its_msgs_utils/impl/constants.h>

namespace etsi_its_cam_msgs::access {

#include <etsi_its_msgs_utils/impl/cdd/cdd_v1-3-1_setters.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ SOFTWARE.
#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H
#define ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H

#include <etsi_its_msgs_utils/impl/checks.h>
#include <etsi_its_msgs_utils/impl/constants.h>
#include <etsi_its_msgs_utils/impl/asn1_primitives/asn1_primitives_setters.h>

/**
* @brief Set the GenerationDeltaTime-Value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,18 @@ SOFTWARE.
* @brief Main CAM TS access implementation header
*/

#undef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_GETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_ASN1_PRIMITIVES_ASN1_PRIMITIVES_SETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_GETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_SETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_UTILS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_CHECKS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_GETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_SETTERS_COMMON_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V1_3_1_GETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V1_3_1_SETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_GETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_SETTERS_H
#undef ETSI_ITS_MSGS_UTILS_IMPL_CHECKS_H

#pragma once

Expand All @@ -48,6 +50,7 @@ SOFTWARE.

#include <GeographicLib/UTMUPS.hpp>

#include <etsi_its_msgs_utils/impl/constants.h>
#include <etsi_its_msgs_utils/impl/cam/cam_ts_getters.h>
#include <etsi_its_msgs_utils/impl/cam/cam_ts_setters.h>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,6 @@ SOFTWARE.

#pragma once

#include <etsi_its_msgs_utils/impl/constants.h>

namespace etsi_its_cam_ts_msgs::access {

#include <etsi_its_msgs_utils/impl/cdd/cdd_v2-1-1_setters.h>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SOFTWARE.
* @brief Utility functions for the ETSI ITS CAM (EN and TS)
*/

#include <etsi_its_msgs_utils/impl/cdd/cdd_checks.h>
#include <etsi_its_msgs_utils/impl/checks.h>
#include <etsi_its_msgs_utils/impl/constants.h>

#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CAM_CAM_UTILS_H
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,37 +74,6 @@ inline double getAltitude(const Altitude& altitude) { return ((double)altitude.a
*/
inline double getSpeed(const Speed& speed) { return ((double)speed.speed_value.value) * 1e-2; }

/**
* @brief Get a Bit String in form of bool vector
*
* @param buffer as uint8_t vector
* @param bits_unused number of bits to ignore at the end of the bit string
* @return std::vector<bool>
*/
inline std::vector<bool> getBitString(const std::vector<uint8_t>& buffer, const int bits_unused) {
// bit string size
const int bits_per_byte = 8;
const int n_bytes = buffer.size();
const int n_bits = n_bytes * bits_per_byte;
std::vector<bool> bits;
bits.resize(n_bits - bits_unused, 0);

// loop over bytes in reverse order
for (int byte_idx = n_bytes - 1; byte_idx >= 0; byte_idx--) {
// loop over bits in a byte
for (int bit_idx_in_byte = 0; bit_idx_in_byte < bits_per_byte; bit_idx_in_byte++) {
// map bit index in byte to bit index in total bitstring
int bit_idx = (n_bytes - byte_idx - 1) * bits_per_byte + bit_idx_in_byte;
if (byte_idx == 0 && bit_idx >= n_bits - bits_unused) break;

// extract bit from bitstring and set output array entry appropriately
bool byte_has_true_bit = buffer[byte_idx] & (1 << bit_idx_in_byte);
if (byte_has_true_bit) bits[bit_idx] = 1;
}
}
return bits;
}

/**
* @brief Get the UTM Position defined by the given ReferencePosition
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ SOFTWARE.
#ifndef ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_SETTERS_COMMON_H
#define ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_SETTERS_COMMON_H

#include <etsi_its_msgs_utils/impl/cdd/cdd_checks.h>
#include <etsi_its_msgs_utils/impl/checks.h>
#include <etsi_its_msgs_utils/impl/constants.h>
#include <GeographicLib/UTMUPS.hpp>
#include <cstring>
Expand Down Expand Up @@ -186,36 +186,4 @@ inline void setFromUTMPosition(T& reference_position, const gm::PointStamped& ut
setReferencePosition(reference_position, latitude, longitude, utm_position.point.z);
}

/**
* @brief Set a Bit String by a vector of bools
*
* @tparam T
* @param bitstring BitString to set
* @param bits vector of bools
*/
template <typename T>
inline void setBitString(T& bitstring, const std::vector<bool>& bits) {
// bit string size
const int bits_per_byte = 8;
const int n_bytes = (bits.size() - 1) / bits_per_byte + 1;
const int n_bits = n_bytes * bits_per_byte;

// init output
bitstring.bits_unused = n_bits - bits.size();
bitstring.value = std::vector<uint8_t>(n_bytes);

// loop over all bytes in reverse order
for (int byte_idx = n_bytes - 1; byte_idx >= 0; byte_idx--) {
// loop over bits in a byte
for (int bit_idx_in_byte = 0; bit_idx_in_byte < bits_per_byte; bit_idx_in_byte++) {
// map bit index in byte to bit index in total bitstring
int bit_idx = (n_bytes - byte_idx - 1) * bits_per_byte + bit_idx_in_byte;
if (byte_idx == 0 && bit_idx >= n_bits - bitstring.bits_unused) break;

// set bit in output bitstring appropriately
bitstring.value[byte_idx] |= bits[bit_idx] << bit_idx_in_byte;
}
}
}

#endif // ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_SETTERS_COMMON_H
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ SOFTWARE.
#define ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V1_3_1_SETTERS_H

#include <etsi_its_msgs_utils/impl/cdd/cdd_setters_common.h>
#include <etsi_its_msgs_utils/impl/cdd/cdd_checks.h>
#include <etsi_its_msgs_utils/impl/checks.h>
#include <GeographicLib/UTMUPS.hpp>
#include <cstring>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ SOFTWARE.
#define ETSI_ITS_MSGS_UTILS_IMPL_CDD_CDD_V2_1_1_SETTERS_H

#include <etsi_its_msgs_utils/impl/cdd/cdd_setters_common.h>
#include <etsi_its_msgs_utils/impl/cdd/cdd_checks.h>
#include <etsi_its_msgs_utils/impl/constants.h>
#include <etsi_its_msgs_utils/impl/checks.h>
#include <GeographicLib/UTMUPS.hpp>
#include <cstring>

Expand Down
Loading
Loading