Program Listing for File pcl_radar_point_type.hpp
↰ Return to documentation for file (/tmp/ws/src/off_highway_sensor_drivers/off_highway_premium_radar/include/off_highway_premium_radar/converters/pcl_radar_point_type.hpp
)
// Copyright 2023 Robert Bosch GmbH and its subsidiaries
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include "off_highway_premium_radar/pdu_definitions.hpp"
// Our PCL for location points will contain more than 20 fields, thus we need to enable a boost mpl
// vector with more than 20 type template arguments.
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#if defined(BOOST_MPL_LIMIT_VECTOR_SIZE) && BOOST_MPL_LIMIT_VECTOR_SIZE < 30
#undef BOOST_MPL_LIMIT_VECTOR_SIZE
#endif
#define BOOST_MPL_LIMIT_VECTOR_SIZE 30
#include "pcl/pcl_macros.h"
#include "pcl/point_types.h"
#include "pcl/register_point_struct.h"
namespace off_highway_premium_radar
{
struct EIGEN_ALIGN16 PclPointLocation
{
PCL_ADD_POINT4D;
PCL_ADD_NORMAL4D;
float radial_distance{0.};
float radial_velocity{0.};
float azimuth_angle{0.};
float elevation_angle{0.};
float radar_cross_section{0.};
float signal_noise_ratio{0.};
float radial_distance_variance{0.};
float radial_velocity_variance{0.};
float azimuth_angle_variance{0.};
float elevation_angle_variance{0.};
float radial_distance_velocity_covariance{0.};
float velocity_resolution_processing_probability{0.};
float azimuth_angle_probability{0.};
float elevation_angle_probability{0.};
float measurement_status{0.};
float idx_azimuth_ambiguity_peer{0.};
explicit PclPointLocation(const LocData_Packet_i_j & l)
{
const float & phi = l.LocData_EleAng_i_j;
const float & theta = l.LocData_AziAng_i_j;
x = l.LocData_RadDist_i_j * cos(theta) * cos(phi);
y = l.LocData_RadDist_i_j * sin(theta) * cos(phi);
z = l.LocData_RadDist_i_j * sin(phi);
normal_x = l.LocData_RadRelVel_i_j * x / l.LocData_RadDist_i_j;
normal_y = l.LocData_RadRelVel_i_j * y / l.LocData_RadDist_i_j;
normal_z = l.LocData_RadRelVel_i_j * z / l.LocData_RadDist_i_j;
radial_distance = l.LocData_RadDist_i_j;
radial_velocity = l.LocData_RadRelVel_i_j;
azimuth_angle = theta;
elevation_angle = phi;
radar_cross_section = l.LocData_Rcs_i_j;
signal_noise_ratio = l.LocData_Snr_i_j;
radial_distance_variance = l.LocData_RadDistVar_i_j;
radial_velocity_variance = l.LocData_RadRelVelVar_i_j;
azimuth_angle_variance = l.LocData_VarEle_i_j;
elevation_angle_variance = l.LocData_VarAzi_i_j;
radial_distance_velocity_covariance = l.LocData_DistVelCov_i_j;
velocity_resolution_processing_probability = l.LocData_ProVelRes_i_j;
azimuth_angle_probability = l.LocData_ProAziAng_i_j;
elevation_angle_probability = l.LocData_ProEleAng_i_j;
measurement_status = l.LocData_MeasStat_i_j;
idx_azimuth_ambiguity_peer = l.LocData_IdAngAmb_i_j;
}
PclPointLocation() {}
}; // SSE padding
} // namespace off_highway_premium_radar
/* *INDENT-OFF* */
POINT_CLOUD_REGISTER_POINT_STRUCT(off_highway_premium_radar::PclPointLocation,
(float, x, x)
(float, y, y)
(float, z, z)
(float, normal_x, normal_x)
(float, normal_y, normal_y)
(float, normal_z, normal_z)
(float, radial_distance, radial_distance)
(float, radial_velocity, radial_velocity)
(float, azimuth_angle, azimuth_angle)
(float, elevation_angle, elevation_angle)
(float, radar_cross_section, radar_cross_section)
(float, signal_noise_ratio, signal_noise_ratio)
(float, radial_distance_variance, radial_distance_variance)
(float, radial_velocity_variance, radial_velocity_variance)
(float, azimuth_angle_variance, azimuth_angle_variance)
(float, elevation_angle_variance, elevation_angle_variance)
(float, radial_distance_velocity_covariance,
radial_distance_velocity_covariance)
(float, velocity_resolution_processing_probability,
velocity_resolution_processing_probability)
(float, azimuth_angle_probability, azimuth_angle_probability)
(float, elevation_angle_probability, elevation_angle_probability)
(float, measurement_status, measurement_status)
(float, idx_azimuth_ambiguity_peer, idx_azimuth_ambiguity_peer))
/* *INDENT-ON* */