Autoware.Auto
autoware::localization::ndt Namespace Reference

Namespaces

 traits
 
 transform_adapters
 

Classes

class  DynamicNDTMap
 
class  DynamicNDTVoxel
 
struct  geocentric_pose_t
 
struct  geodetic_pose_t
 
class  NDTGrid
 A voxel grid implementation for normal distribution transform. More...
 
class  NDTLocalizerBase
 
class  NDTLocalizerConfigBase
 
class  NDTScanBase
 
class  P2DNDTLocalizer
 
class  P2DNDTLocalizerConfig
 config class for p2d ndt localizer More...
 
class  P2DNDTObjective
 
class  P2DNDTOptimizationConfig
 Config class for p2d optimziation problem. More...
 
class  P2DNDTScan
 
struct  PointWithCovariances
 
class  StaticNDTMap
 
class  StaticNDTVoxel
 
class  VoxelView< DynamicNDTVoxel >
 
class  VoxelView< StaticNDTVoxel >
 VoxelViewBase implementation for StaticNDTVoxel. It's just a pure wrapper. More...
 
class  VoxelViewBase
 

Typedefs

using Real = float64_t
 
using CloudT = sensor_msgs::msg::PointCloud2
 
template<typename MapT >
using P2DNDTOptimizationProblem = common::optimization::UnconstrainedOptimizationProblem< P2DNDTObjective< MapT >, EigenPose< Real >, 6U >
 
using PointWithCovariancesFieldGenerators = std::tuple< point_cloud_msg_wrapper::field_x_generator, point_cloud_msg_wrapper::field_y_generator, point_cloud_msg_wrapper::field_z_generator, field_icov_xx_generator, field_icov_xy_generator, field_icov_xz_generator, field_icov_yy_generator, field_icov_yz_generator, field_icov_zz_generator >
 
using NdtMapCloudModifier = point_cloud_msg_wrapper::PointCloud2Modifier< PointWithCovariances, PointWithCovariancesFieldGenerators >
 
using NdtMapCloudView = point_cloud_msg_wrapper::PointCloud2View< PointWithCovariances, PointWithCovariancesFieldGenerators >
 
template<typename T >
using EigenPose = Eigen::Matrix< T, 6U, 1U >
 
template<typename T >
using EigenTransform = Eigen::Transform< T, 3, Eigen::Affine, Eigen::ColMajor >
 
using RosTransform = geometry_msgs::msg::Transform
 
using RosPose = geometry_msgs::msg::Pose
 
using StaticView = VoxelView< StaticNDTVoxel >
 
using DynamicView = VoxelView< DynamicNDTVoxel >
 

Enumerations

enum  Requires
 
enum  Invertibility { Invertibility::INVERTIBLE, Invertibility::NOT_INVERTIBLE, Invertibility::UNKNOWN }
 

Functions

void NDT_PUBLIC read_from_yaml (const std::string &yaml_file_name, geodetic_pose_t *geo_pose)
 
void NDT_PUBLIC read_from_pcd (const std::string &file_name, sensor_msgs::msg::PointCloud2 *msg)
 
geocentric_pose_t NDT_PUBLIC load_map (const std::string &yaml_file_name, const std::string &pcl_file_name, sensor_msgs::msg::PointCloud2 &pc_out)
 Read the pcd file with filename into a PointCloud2 message, transform it into an NDT representation and then serialize the ndt representation back into a PointCloud2 message that can be published. More...
 
template<typename ScalarT >
bool8_t is_valid_probability (ScalarT p)
 
 LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER (icov_xx)
 
 LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER (icov_xy)
 
 LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER (icov_xz)
 
 LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER (icov_yy)
 
 LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER (icov_yz)
 
 LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER (icov_zz)
 
template<typename Derived >
bool try_stabilize_covariance (Eigen::MatrixBase< Derived > &covariance, typename Derived::PlainMatrix::Scalar scaling_factor=0.1)
 

Variables

template<typename VoxelT >
class NDT_PUBLIC VoxelView
 

Typedef Documentation

◆ CloudT

using autoware::localization::ndt::CloudT = typedef sensor_msgs::msg::PointCloud2

◆ DynamicView

◆ EigenPose

template<typename T >
using autoware::localization::ndt::EigenPose = typedef Eigen::Matrix<T, 6U, 1U>

◆ EigenTransform

template<typename T >
using autoware::localization::ndt::EigenTransform = typedef Eigen::Transform<T, 3, Eigen::Affine, Eigen::ColMajor>

◆ NdtMapCloudModifier

◆ NdtMapCloudView

◆ P2DNDTOptimizationProblem

◆ PointWithCovariancesFieldGenerators

using autoware::localization::ndt::PointWithCovariancesFieldGenerators = typedef std::tuple< point_cloud_msg_wrapper::field_x_generator, point_cloud_msg_wrapper::field_y_generator, point_cloud_msg_wrapper::field_z_generator, field_icov_xx_generator, field_icov_xy_generator, field_icov_xz_generator, field_icov_yy_generator, field_icov_yz_generator, field_icov_zz_generator>

◆ Real

using autoware::localization::ndt::Real = typedef float64_t

◆ RosPose

using autoware::localization::ndt::RosPose = typedef geometry_msgs::msg::Pose

◆ RosTransform

using autoware::localization::ndt::RosTransform = typedef geometry_msgs::msg::Transform

◆ StaticView

Enumeration Type Documentation

◆ Invertibility

Enumerator
INVERTIBLE 
NOT_INVERTIBLE 
UNKNOWN 

◆ Requires

Function Documentation

◆ is_valid_probability()

template<typename ScalarT >
bool8_t autoware::localization::ndt::is_valid_probability ( ScalarT  p)

◆ LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER() [1/6]

autoware::localization::ndt::LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER ( icov_xx  )

◆ LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER() [2/6]

autoware::localization::ndt::LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER ( icov_xy  )

◆ LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER() [3/6]

autoware::localization::ndt::LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER ( icov_xz  )

◆ LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER() [4/6]

autoware::localization::ndt::LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER ( icov_yy  )

◆ LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER() [5/6]

autoware::localization::ndt::LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER ( icov_yz  )

◆ LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER() [6/6]

autoware::localization::ndt::LIDAR_UTILS__DEFINE_FIELD_GENERATOR_FOR_MEMBER ( icov_zz  )

◆ load_map()

geocentric_pose_t autoware::localization::ndt::load_map ( const std::string &  yaml_file_name,
const std::string &  pcl_file_name,
sensor_msgs::msg::PointCloud2 &  pc_out 
)

Read the pcd file with filename into a PointCloud2 message, transform it into an NDT representation and then serialize the ndt representation back into a PointCloud2 message that can be published.

Parameters
yaml_file_nameFile name of the yaml file.
pcl_file_nameFile name of the pcd file.
pc_outReference to the pointcloud message that will be populated from the data on the disk.
Returns
The geocentric position.

◆ read_from_pcd()

void autoware::localization::ndt::read_from_pcd ( const std::string &  file_name,
sensor_msgs::msg::PointCloud2 *  msg 
)

Read the pcd file into a PointCloud2 message. Throws if the file cannot be read. The returned point cloud has float fields x, y, z, intensity, all of type float32_t, with the default intensity value being 0.0.

Parameters
[in]file_nameName of the pcd file.
[out]msgPointer to PointCloud2 message

◆ read_from_yaml()

void autoware::localization::ndt::read_from_yaml ( const std::string &  yaml_file_name,
geodetic_pose_t geo_pose 
)

Read the map info from a yaml file. Throws if the file cannot be read.

Parameters
[in]yaml_file_nameName of the ymal file.
[out]geo_poseGeodetic pose describing map orgin

◆ try_stabilize_covariance()

template<typename Derived >
bool autoware::localization::ndt::try_stabilize_covariance ( Eigen::MatrixBase< Derived > &  covariance,
typename Derived::PlainMatrix::Scalar  scaling_factor = 0.1 
)

This function will check if the covariance is valid based on its eigenvalues. If the covariance is valid, eigen values smaller than a fraction of the biggest eigen value will be capped to the threshold. Covariance then will be reconstructed from the modified set of eigen values and vectors. This should result in increased numerical stability as stated in [Magnusson 2009]. If the covariance is invalid, it will not be updated and false will be returned.

Template Parameters
DerivedDeduced Eigen Matrix type.
Parameters
covariance[in, out] Covariance matrix to get stabilized.
scaling_factor[in] The ratio between the max. eigen value and the minimum allowed eigenvalue. Default value is 0.01 as suggested in [Magnusson 2009], page 60.
Returns
True if the covariance matrix is valid.

Variable Documentation

◆ VoxelView

template<typename VoxelT >
class NDT_PUBLIC autoware::localization::ndt::VoxelView