supereight
Loading...
Searching...
No Matches
leica_lidar.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020-2024 Smart Robotics Lab, Imperial College London, Technical University of Munich
3 * SPDX-FileCopyrightText: 2022-2024 Simon Boche
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef SE_LEICA_LIDAR_HPP
8#define SE_LEICA_LIDAR_HPP
9
10
11
12namespace se {
13
14class LeicaLidar : public SensorBase<LeicaLidar> {
15 public:
16 struct Config : public SensorBase<LeicaLidar>::Config {
22
29 void readYaml(const std::string& filename);
30
32
33 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
34 };
35
37
39
41
42 int computeIntegrationScaleImpl(const Eigen::Vector3f& block_centre,
43 const float map_res,
44 const int last_scale,
45 const int min_scale,
46 const int max_block_scale) const;
47
48 float nearDistImpl(const Eigen::Vector3f& ray_S) const;
49
50 float farDistImpl(const Eigen::Vector3f& ray_S) const;
51
52 float measurementFromPointImpl(const Eigen::Vector3f& point_S) const;
53
54 bool pointInFrustumImpl(const Eigen::Vector3f& point_S) const;
55
56 bool pointInFrustumInfImpl(const Eigen::Vector3f& point_S) const;
57
58 bool sphereInFrustumImpl(const Eigen::Vector3f& centre_S, const float radius) const;
59
60 bool sphereInFrustumInfImpl(const Eigen::Vector3f& centre_S, const float radius) const;
61
62 static std::string typeImpl();
63
64 srl::projection::LeicaLidar model;
73
77
78 float pixel_dim_tan = 0.0f;
79
80 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
81};
82
83std::ostream& operator<<(std::ostream& os, const LeicaLidar::Config& c);
84
85} // namespace se
86
87#include "impl/leica_lidar_impl.hpp"
88
89#endif // SE_LEICA_LIDAR_HPP
Definition image.hpp:19
Definition leica_lidar.hpp:14
float nearDistImpl(const Eigen::Vector3f &ray_S) const
bool sphereInFrustumImpl(const Eigen::Vector3f &centre_S, const float radius) const
float horizontal_fov
The horizontal field of view in radians.
Definition leica_lidar.hpp:70
float max_elevation_rad
Definition leica_lidar.hpp:68
float measurementFromPointImpl(const Eigen::Vector3f &point_S) const
float elevation_resolution_angle
Definition leica_lidar.hpp:76
float min_elevation_rad
Definition leica_lidar.hpp:67
static std::string typeImpl()
float farDistImpl(const Eigen::Vector3f &ray_S) const
float min_ray_angle
the minimum ray angle between subsequent measurements
Definition leica_lidar.hpp:66
LeicaLidar(const Config &config)
bool pointInFrustumInfImpl(const Eigen::Vector3f &point_S) const
float azimuth_resolution_angle
Angular resolution for ray Integration.
Definition leica_lidar.hpp:75
int computeIntegrationScaleImpl(const Eigen::Vector3f &block_centre, const float map_res, const int last_scale, const int min_scale, const int max_block_scale) const
LeicaLidar(const LeicaLidar &leica_lidar, const float downsampling_factor)
float pixel_dim_tan
Definition leica_lidar.hpp:78
bool pointInFrustumImpl(const Eigen::Vector3f &point_S) const
float vertical_fov
The vertical field of view in radians.
Definition leica_lidar.hpp:72
LeicaLidar(const Config &config, const float downsampling_factor)
srl::projection::LeicaLidar model
Definition leica_lidar.hpp:64
bool sphereInFrustumInfImpl(const Eigen::Vector3f &centre_S, const float radius) const
Base class for all sensor models used for integrating measurements.
Definition sensor.hpp:26
Helper wrapper to allocate and de-allocate octants in the octree.
Definition bounded_vector.hpp:14
std::ostream & operator<<(std::ostream &os, const ColourData< Colour::Off >::Config &c)
Definition leica_lidar.hpp:16
void readYaml(const std::string &filename)
Reads the struct members from the "sensor" node of a YAML file.
Config operator/(const float downsampling_factor) const
float azimuth_resolution_angle_
Definition leica_lidar.hpp:21
float elevation_resolution_angle_
The actual sensor resolution in angular directions (in degrees).
Definition leica_lidar.hpp:20