Go to the documentation of this file.
17 #ifndef NDT__NDT_MAP_HPP_
18 #define NDT__NDT_MAP_HPP_
24 #include <sensor_msgs/point_cloud2_iterator.hpp>
28 #include <unordered_map>
36 namespace localization
47 uint32_t NDT_PUBLIC
validate_pcl_map(
const sensor_msgs::msg::PointCloud2 & msg);
57 using TimePoint = std::chrono::system_clock::time_point;
64 static constexpr uint32_t kNumConfigPoints = 3U;
70 void set(
const sensor_msgs::msg::PointCloud2 & msg);
75 void insert(
const sensor_msgs::msg::PointCloud2 & msg);
82 template<
typename DeserializingMapT>
83 void serialize_as(sensor_msgs::msg::PointCloud2 & msg_out)
const;
101 const std::string & frame_id() const noexcept;
109 bool valid() const noexcept;
118 std::
size_t size() const noexcept;
122 typename
VoxelGrid::const_iterator begin() const noexcept;
126 typename
VoxelGrid::const_iterator
end() const noexcept;
129 void clear() noexcept;
134 std::string m_frame_id{};
145 using TimePoint = std::chrono::system_clock::time_point;
159 void set(
const sensor_msgs::msg::PointCloud2 & msg);
177 const std::string & frame_id() const noexcept;
185 bool valid() const noexcept;
194 std::
size_t size() const;
198 typename
VoxelGrid::const_iterator begin() const;
210 void deserialize_from(const sensor_msgs::msg::PointCloud2 & msg);
213 std::string m_frame_id{};
216 template<
typename PCMessageT>
217 using PC2DoubleIterator =
typename std::conditional<std::is_const<PCMessageT>::value,
218 sensor_msgs::PointCloud2ConstIterator<ndt::Real>,
219 sensor_msgs::PointCloud2Iterator<ndt::Real>>::type;
222 template<
typename Po
intCloud2T>
223 std::array<PC2DoubleIterator<PointCloud2T>, 9U>
get_iterators(PointCloud2T & msg)
225 return std::array<PC2DoubleIterator<PointCloud2T>, 9U>{
256 std::array<sensor_msgs::PointCloud2Iterator<ndt::Real>, 9U> & pc_its,
257 const SerializedNDTMapPoint & point);
266 *pc_its[0U], *pc_its[1U], *pc_its[2U],
267 *pc_its[3U], *pc_its[4U], *pc_its[5U],
268 *pc_its[6U], *pc_its[7U],
271 std::for_each(pc_its.begin(), pc_its.end(), [](
auto & it) {++it;});
278 #endif // NDT__NDT_MAP_HPP_
std::vector< VoxelView< Voxel > > VoxelViewVector
Definition: ndt_map.hpp:58
Real y
Definition: ndt_map.hpp:242
DifferentialState y
Definition: kinematic_bicycle.snippet.hpp:28
Real icov_yy
Definition: ndt_map.hpp:247
std::array< PC2DoubleIterator< PointCloud2T >, 9U > get_iterators(PointCloud2T &msg)
Get the pointcloud2 iterators for the serialized ndt map.
Definition: ndt_map.hpp:223
NDTGrid< Voxel >::ConfigPoint ConfigPoint
Definition: ndt_map.hpp:60
Eigen::Vector3d Point
Definition: ndt_map.hpp:146
float64_t Real
Definition: ndt_common.hpp:39
A voxel grid implementation for normal distribution transform.
Definition: ndt_grid.hpp:40
Struct to represent a point in the serialized ndt map. This is a minimal voxel representation.
Definition: ndt_map.hpp:239
Real z
Definition: ndt_map.hpp:243
Real x
Definition: ndt_map.hpp:241
Real icov_xx
Definition: ndt_map.hpp:244
Definition: ndt_voxel.hpp:98
Real icov_xy
Definition: ndt_map.hpp:245
NDTGrid< Voxel >::Grid VoxelGrid
Definition: ndt_map.hpp:148
NDTGrid< Voxel >::ConfigPoint ConfigPoint
Definition: ndt_map.hpp:149
This file defines the lanelet2_map_provider_node class.
Definition: quick_sort.hpp:24
SerializedNDTMapPoint next(std::array< T, 9U > &pc_its)
Get the next voxel representation from the iterators of a serialized ndt map.
Definition: ndt_map.hpp:263
std::chrono::system_clock::time_point TimePoint
Definition: ndt_map.hpp:145
NDTGrid< Voxel >::Grid VoxelGrid
Definition: ndt_map.hpp:59
Real icov_xz
Definition: ndt_map.hpp:246
Definition: ndt_map.hpp:51
uint32_t NDT_PUBLIC validate_pcl_map(const sensor_msgs::msg::PointCloud2 &msg)
Definition: ndt_map.cpp:28
DifferentialState x
Definition: kinematic_bicycle.snippet.hpp:28
std::vector< VoxelView< Voxel > > VoxelViewVector
Definition: ndt_map.hpp:147
float float32_t
Definition: types.hpp:45
A configuration class for the VoxelGrid data structure, also includes some helper functionality for c...
Definition: perception/filters/voxel_grid/include/voxel_grid/config.hpp:52
std::chrono::system_clock::time_point TimePoint
Definition: ndt_map.hpp:57
Definition: ndt_map.hpp:140
std::unordered_map< uint64_t, VoxelT > Grid
Definition: ndt_grid.hpp:43
std::decay_t< decltype(std::declval< Config >().get_min_point())> ConfigPoint
Definition: ndt_grid.hpp:47
Real icov_yz
Definition: ndt_map.hpp:248
void push_back(std::array< sensor_msgs::PointCloud2Iterator< ndt::Real >, 9U > &pc_its, const SerializedNDTMapPoint &point)
Push a SerializedNDTMapPoint into a pointcloud2 object containing the serialized map.
Definition: ndt_map.cpp:145
Definition: ndt_voxel.hpp:44
typename std::conditional< std::is_const< PCMessageT >::value, sensor_msgs::PointCloud2ConstIterator< ndt::Real >, sensor_msgs::PointCloud2Iterator< ndt::Real > >::type PC2DoubleIterator
Definition: ndt_map.hpp:219
Real icov_zz
Definition: ndt_map.hpp:249
end
Definition: scripts/get_open_port.py:23
Eigen::Vector3d Point
Definition: ndt_map.hpp:56