supereight
Loading...
Searching...
No Matches
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
13namespace se {
14
15class OusterLidar : public SensorBase<OusterLidar> {
16 public:
17 struct Config : public SensorBase<OusterLidar>::Config {
21 Eigen::VectorXf beam_elevation_angles = Eigen::VectorXf(1);
22
26 Eigen::VectorXf beam_azimuth_angles = Eigen::VectorXf(1);
27
34 void readYaml(const std::string& filename);
35
37
38 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
39 };
40
42
44
46
47 Eigen::Matrix3f K() const
48 {
49 return Eigen::Matrix3f::Zero();
50 }
51
52 int computeIntegrationScaleImpl(const Eigen::Vector3f& block_centre,
53 const float map_res,
54 const int last_scale,
55 const int min_scale,
56 const int max_block_scale) const;
57
58 float nearDistImpl(const Eigen::Vector3f& ray_S) const;
59
60 float farDistImpl(const Eigen::Vector3f& ray_S) const;
61
62 float measurementFromPointImpl(const Eigen::Vector3f& point_S) const;
63
64 bool pointInFrustumImpl(const Eigen::Vector3f& point_S) const;
65
66 bool pointInFrustumInfImpl(const Eigen::Vector3f& point_S) const;
67
68 bool sphereInFrustumImpl(const Eigen::Vector3f& centre_S, const float radius) const;
69
70 bool sphereInFrustumInfImpl(const Eigen::Vector3f& centre_S, const float radius) const;
71
72 static std::string typeImpl();
73
74 srl::projection::OusterLidar model;
76
79
84
85 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
86};
87
88std::ostream& operator<<(std::ostream& os, const OusterLidar::Config& c);
89
90} // namespace se
91
92#include "impl/ouster_lidar_impl.hpp"
93
94#endif // SE_OUSTER_LIDAR_HPP
Definition image.hpp:19
Definition ouster_lidar.hpp:15
OusterLidar(const Config &config)
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
OusterLidar(const Config &config, const float downsampling_factor)
float max_elevation_rad
Definition ouster_lidar.hpp:78
float vertical_fov
The vertical field of view in radians.
Definition ouster_lidar.hpp:83
bool pointInFrustumImpl(const Eigen::Vector3f &point_S) const
static std::string typeImpl()
srl::projection::OusterLidar model
Definition ouster_lidar.hpp:74
bool sphereInFrustumInfImpl(const Eigen::Vector3f &centre_S, const float radius) const
float horizontal_fov
The horizontal field of view in radians.
Definition ouster_lidar.hpp:81
float nearDistImpl(const Eigen::Vector3f &ray_S) const
OusterLidar(const OusterLidar &ouster_lidar, const float downsampling_factor)
float farDistImpl(const Eigen::Vector3f &ray_S) const
bool pointInFrustumInfImpl(const Eigen::Vector3f &point_S) const
float measurementFromPointImpl(const Eigen::Vector3f &point_S) const
bool sphereInFrustumImpl(const Eigen::Vector3f &centre_S, const float radius) const
Eigen::Matrix3f K() const
Definition ouster_lidar.hpp:47
float min_ray_angle
Definition ouster_lidar.hpp:75
float min_elevation_rad
Definition ouster_lidar.hpp:77
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 ouster_lidar.hpp:17
Config operator/(const float downsampling_factor) const
Eigen::VectorXf beam_elevation_angles
The elevation offset for each Lidar beam in degrees.
Definition ouster_lidar.hpp:21
Eigen::VectorXf beam_azimuth_angles
The azimuth offset for each Lidar beam in degrees.
Definition ouster_lidar.hpp:26
void readYaml(const std::string &filename)
Reads the struct members from the "sensor" node of a YAML file.