cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
kitti_types.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <Eigen/Dense>
7#include <memory>
8#include <string>
9#include <vector>
10#include <cstdint>
11#include <map>
12
13namespace toolbox::io {
14
17
18// ==================== KITTI Odometry Data Structures ====================
19
24template<typename DataType>
27 std::unique_ptr<point_cloud_t<DataType>> cloud;
28
30 Eigen::Matrix<DataType, 4, 4> pose;
31
33 std::size_t frame_index;
34
36 std::string timestamp;
37
40
43
46
50};
51
56template<typename DataType>
59 std::unique_ptr<point_cloud_t<DataType>> source_cloud;
60
62 std::unique_ptr<point_cloud_t<DataType>> target_cloud;
63
65 Eigen::Matrix<DataType, 4, 4> source_pose;
66
68 Eigen::Matrix<DataType, 4, 4> target_pose;
69
71 Eigen::Matrix<DataType, 4, 4> relative_transform;
72
74 std::size_t source_index;
75
77 std::size_t target_index;
78
81
84
87
91};
92
93// ==================== Semantic KITTI Data Structures ====================
94
99template<typename DataType>
102 std::unique_ptr<point_cloud_t<DataType>> cloud;
103
105 std::vector<uint32_t> labels;
106
108 Eigen::Matrix<DataType, 4, 4> pose;
109
111 std::size_t frame_index;
112
118 std::unique_ptr<point_cloud_t<DataType>> get_labeled_cloud(uint16_t label) const;
119
125 std::unique_ptr<point_cloud_t<DataType>> get_labeled_cloud(
126 const std::vector<uint16_t>& label_ids) const;
127
132 std::vector<uint16_t> get_unique_labels() const;
133
138 std::map<uint16_t, std::size_t> get_label_statistics() const;
139
142
145
148
152};
153
158template<typename DataType>
161 std::unique_ptr<point_cloud_t<DataType>> source_cloud;
162
164 std::unique_ptr<point_cloud_t<DataType>> target_cloud;
165
167 std::vector<uint32_t> source_labels;
168
170 std::vector<uint32_t> target_labels;
171
173 Eigen::Matrix<DataType, 4, 4> source_pose;
174
176 Eigen::Matrix<DataType, 4, 4> target_pose;
177
179 Eigen::Matrix<DataType, 4, 4> relative_transform;
180
182 std::size_t source_index;
183
185 std::size_t target_index;
186
191 std::pair<std::unique_ptr<point_cloud_t<DataType>>,
192 std::unique_ptr<point_cloud_t<DataType>>>
193 extract_static_points() const;
194
199 std::pair<std::unique_ptr<point_cloud_t<DataType>>,
200 std::unique_ptr<point_cloud_t<DataType>>>
202
205
208
211
215};
216
217
218// ==================== Error Recovery Policies ====================
219
223enum class error_recovery_policy_t : uint8_t {
224 strict,
225 lenient,
227};
228
229} // namespace toolbox::io
230
231// Include implementation
包含点和相关数据的点云类 / A point cloud class containing points and associated data
Definition point.hpp:268
< 用于列出目录下的文件/For listing files in a directory
Definition dataloader.hpp:15
error_recovery_policy_t
Error recovery policy for dataset loading.
Definition kitti_types.hpp:223
@ strict
Throw exception on any error.
@ best_effort
Try to recover partial data.
@ lenient
Skip problematic frames and continue.
Frame pair data for registration tasks.
Definition kitti_types.hpp:57
std::size_t source_index
Source frame index.
Definition kitti_types.hpp:74
std::size_t target_index
Target frame index.
Definition kitti_types.hpp:77
Eigen::Matrix< DataType, 4, 4 > source_pose
Source global pose.
Definition kitti_types.hpp:65
kitti_odometry_frame_pair_t & operator=(kitti_odometry_frame_pair_t &&)=default
Move assignment.
Eigen::Matrix< DataType, 4, 4 > relative_transform
Relative transformation from source to target (T_target_source)
Definition kitti_types.hpp:71
kitti_odometry_frame_pair_t & operator=(const kitti_odometry_frame_pair_t &)=delete
kitti_odometry_frame_pair_t(const kitti_odometry_frame_pair_t &)=delete
Deleted copy operations.
kitti_odometry_frame_pair_t()=default
Default constructor.
std::unique_ptr< point_cloud_t< DataType > > target_cloud
Target point cloud.
Definition kitti_types.hpp:62
Eigen::Matrix< DataType, 4, 4 > target_pose
Target global pose.
Definition kitti_types.hpp:68
kitti_odometry_frame_pair_t(kitti_odometry_frame_pair_t &&)=default
Move constructor.
std::unique_ptr< point_cloud_t< DataType > > source_cloud
Source point cloud.
Definition kitti_types.hpp:59
Single frame data from KITTI odometry dataset.
Definition kitti_types.hpp:25
std::size_t frame_index
Frame index in the sequence.
Definition kitti_types.hpp:33
kitti_odometry_frame_t(kitti_odometry_frame_t &&)=default
Move constructor.
Eigen::Matrix< DataType, 4, 4 > pose
Global pose (4x4 transformation matrix)
Definition kitti_types.hpp:30
std::string timestamp
Optional timestamp string.
Definition kitti_types.hpp:36
kitti_odometry_frame_t(const kitti_odometry_frame_t &)=delete
Deleted copy operations.
kitti_odometry_frame_t()=default
Default constructor.
kitti_odometry_frame_t & operator=(kitti_odometry_frame_t &&)=default
Move assignment.
kitti_odometry_frame_t & operator=(const kitti_odometry_frame_t &)=delete
std::unique_ptr< point_cloud_t< DataType > > cloud
Point cloud data.
Definition kitti_types.hpp:27
Frame pair data from Semantic KITTI dataset.
Definition kitti_types.hpp:159
Eigen::Matrix< DataType, 4, 4 > relative_transform
Relative transformation.
Definition kitti_types.hpp:179
std::size_t target_index
Target frame index.
Definition kitti_types.hpp:185
std::unique_ptr< point_cloud_t< DataType > > target_cloud
Target point cloud.
Definition kitti_types.hpp:164
std::size_t source_index
Source frame index.
Definition kitti_types.hpp:182
Eigen::Matrix< DataType, 4, 4 > source_pose
Source global pose.
Definition kitti_types.hpp:173
semantic_kitti_frame_pair_t(semantic_kitti_frame_pair_t &&)=default
Move constructor.
semantic_kitti_frame_pair_t & operator=(const semantic_kitti_frame_pair_t &)=delete
semantic_kitti_frame_pair_t & operator=(semantic_kitti_frame_pair_t &&)=default
Move assignment.
semantic_kitti_frame_pair_t()=default
Default constructor.
std::pair< std::unique_ptr< point_cloud_t< DataType > >, std::unique_ptr< point_cloud_t< DataType > > > extract_static_points() const
Extract static points from both clouds (buildings, road, etc.)
Definition kitti_types_impl.hpp:86
std::vector< uint32_t > source_labels
Source point labels.
Definition kitti_types.hpp:167
std::pair< std::unique_ptr< point_cloud_t< DataType > >, std::unique_ptr< point_cloud_t< DataType > > > extract_dynamic_points() const
Extract dynamic points from both clouds (cars, people, etc.)
Definition kitti_types_impl.hpp:117
semantic_kitti_frame_pair_t(const semantic_kitti_frame_pair_t &)=delete
Deleted copy operations.
std::unique_ptr< point_cloud_t< DataType > > source_cloud
Source point cloud.
Definition kitti_types.hpp:161
std::vector< uint32_t > target_labels
Target point labels.
Definition kitti_types.hpp:170
Eigen::Matrix< DataType, 4, 4 > target_pose
Target global pose.
Definition kitti_types.hpp:176
Single frame data from Semantic KITTI dataset.
Definition kitti_types.hpp:100
std::map< uint16_t, std::size_t > get_label_statistics() const
Count points for each label.
Definition kitti_types_impl.hpp:71
std::unique_ptr< point_cloud_t< DataType > > get_labeled_cloud(uint16_t label) const
Extract point cloud containing only specified label.
Definition kitti_types_impl.hpp:13
std::size_t frame_index
Frame index.
Definition kitti_types.hpp:111
semantic_kitti_frame_t()=default
Default constructor.
Eigen::Matrix< DataType, 4, 4 > pose
Global pose.
Definition kitti_types.hpp:108
semantic_kitti_frame_t & operator=(const semantic_kitti_frame_t &)=delete
std::vector< uint16_t > get_unique_labels() const
Get unique label IDs in this frame.
Definition kitti_types_impl.hpp:59
std::unique_ptr< point_cloud_t< DataType > > cloud
Point cloud data.
Definition kitti_types.hpp:102
std::vector< uint32_t > labels
Semantic labels for each point (lower 16 bits: label ID, upper 16 bits: instance ID)
Definition kitti_types.hpp:105
semantic_kitti_frame_t & operator=(semantic_kitti_frame_t &&)=default
Move assignment.
semantic_kitti_frame_t(const semantic_kitti_frame_t &)=delete
Deleted copy operations.
semantic_kitti_frame_t(semantic_kitti_frame_t &&)=default
Move constructor.
3D点/向量模板类 / A 3D point/vector template class
Definition point.hpp:48