supereight
ouster_lidar.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2020-2022 Smart Robotics Lab, Imperial College London, Technical University of Munich
3  * SPDX-FileCopyrightText: 2020-2022 Nils Funk
4  * SPDX-FileCopyrightText: 2020-2022 Sotiris Papatheodorou
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #ifndef SE_OUSTER_LIDAR_HPP
9 #define SE_OUSTER_LIDAR_HPP
10 
11 
12 
13 namespace se {
14 
19  Eigen::VectorXf beam_elevation_angles = Eigen::VectorXf(1);
20 
24  Eigen::VectorXf beam_azimuth_angles = Eigen::VectorXf(1);
25 
32  void readYaml(const std::string& filename);
33 
34  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
35 };
36 
37 std::ostream& operator<<(std::ostream& os, const OusterLidarConfig& c);
38 
39 
40 
41 class OusterLidar : public SensorBase<OusterLidar> {
42  public:
43  OusterLidar(const OusterLidarConfig& config);
44 
45  OusterLidar(const OusterLidarConfig& config, const float downsampling_factor);
46 
47  OusterLidar(const OusterLidar& ouster_lidar, const float downsampling_factor);
48 
49  Eigen::Matrix3f K() const
50  {
51  return Eigen::Matrix3f::Zero();
52  }
53 
54  int computeIntegrationScaleImpl(const Eigen::Vector3f& block_centre,
55  const float map_res,
56  const int last_scale,
57  const int min_scale,
58  const int max_block_scale) const;
59 
60  float nearDistImpl(const Eigen::Vector3f& ray_S) const;
61 
62  float farDistImpl(const Eigen::Vector3f& ray_S) const;
63 
64  float measurementFromPointImpl(const Eigen::Vector3f& point_S) const;
65 
66  bool pointInFrustumImpl(const Eigen::Vector3f& point_S) const;
67 
68  bool pointInFrustumInfImpl(const Eigen::Vector3f& point_S) const;
69 
70  bool sphereInFrustumImpl(const Eigen::Vector3f& centre_S, const float radius) const;
71 
72  bool sphereInFrustumInfImpl(const Eigen::Vector3f& centre_S, const float radius) const;
73 
74  static std::string typeImpl();
75 
76  srl::projection::OusterLidar model;
78 
81 
85  float vertical_fov;
86 
87  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
88 };
89 
90 
91 
92 } // namespace se
93 
94 #include "impl/ouster_lidar_impl.hpp"
95 
96 #endif // SE_OUSTER_LIDAR_HPP
Eigen::VectorXf beam_elevation_angles
The elevation offset for each Lidar beam in degrees.
Definition: ouster_lidar.hpp:19
float vertical_fov
The vertical field of view in radians.
Definition: ouster_lidar.hpp:85
srl::projection::OusterLidar model
Definition: ouster_lidar.hpp:76
float min_ray_angle
Definition: ouster_lidar.hpp:77
std::ostream & operator<<(std::ostream &os, const FieldDataConfig< se::Field::Occupancy > &c)
Definition: ouster_lidar.hpp:41
float min_elevation_rad
Definition: ouster_lidar.hpp:79
void readYaml(const std::string &filename)
Reads the struct members from the "sensor" node of a YAML file.
float max_elevation_rad
Definition: ouster_lidar.hpp:80
Definition: ouster_lidar.hpp:15
Definition: sensor.hpp:55
Eigen::Matrix3f K() const
Definition: ouster_lidar.hpp:49
Definition: sensor.hpp:23
Eigen::VectorXf beam_azimuth_angles
The azimuth offset for each Lidar beam in degrees.
Definition: ouster_lidar.hpp:24
float horizontal_fov
The horizontal field of view in radians.
Definition: ouster_lidar.hpp:83
Helper wrapper to allocate and de-allocate octants in the octree.
Definition: colour_utils.hpp:17