cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
kitti_pose_reader.hpp
Go to the documentation of this file.
1#pragma once
2
6
7#include <Eigen/Dense>
8#include <string>
9#include <vector>
10#include <optional>
11
12namespace toolbox::io {
13
18template<typename DataType>
20public:
25
31 bool load(const std::string& poses_file);
32
37 [[nodiscard]] std::size_t size() const noexcept { return poses_.size(); }
38
43 [[nodiscard]] bool empty() const noexcept { return poses_.empty(); }
44
51 [[nodiscard]] Eigen::Matrix<DataType, 4, 4> get_pose(std::size_t index) const;
52
58 [[nodiscard]] std::optional<Eigen::Matrix<DataType, 4, 4>>
59 try_get_pose(std::size_t index) const;
60
68 [[nodiscard]] Eigen::Matrix<DataType, 4, 4> get_relative_transform(
69 std::size_t from_index,
70 std::size_t to_index) const;
71
77 [[nodiscard]] bool is_valid_index(std::size_t index) const noexcept {
78 return index < poses_.size();
79 }
80
84 void clear() noexcept { poses_.clear(); }
85
90 [[nodiscard]] const std::vector<Eigen::Matrix<DataType, 4, 4>>&
91 get_all_poses() const noexcept { return poses_; }
92
97 [[nodiscard]] DataType compute_trajectory_length() const;
98
103 [[nodiscard]] std::pair<Eigen::Vector3<DataType>, Eigen::Vector3<DataType>>
104 get_trajectory_bounds() const;
105
106private:
108 std::vector<Eigen::Matrix<DataType, 4, 4>> poses_;
109};
110
111} // namespace toolbox::io
112
113// Include implementation
Reader for KITTI pose files.
Definition kitti_pose_reader.hpp:19
bool is_valid_index(std::size_t index) const noexcept
Check if index is valid.
Definition kitti_pose_reader.hpp:77
Eigen::Matrix< DataType, 4, 4 > get_relative_transform(std::size_t from_index, std::size_t to_index) const
Compute relative transformation between two frames.
Definition kitti_pose_reader_impl.hpp:41
std::pair< Eigen::Vector3< DataType >, Eigen::Vector3< DataType > > get_trajectory_bounds() const
Get trajectory bounds.
Definition kitti_pose_reader_impl.hpp:79
const std::vector< Eigen::Matrix< DataType, 4, 4 > > & get_all_poses() const noexcept
Get all poses.
Definition kitti_pose_reader.hpp:91
bool empty() const noexcept
Check if any poses are loaded.
Definition kitti_pose_reader.hpp:43
std::optional< Eigen::Matrix< DataType, 4, 4 > > try_get_pose(std::size_t index) const
Get pose at specific index (safe version)
Definition kitti_pose_reader_impl.hpp:31
DataType compute_trajectory_length() const
Compute trajectory length.
Definition kitti_pose_reader_impl.hpp:58
std::size_t size() const noexcept
Get the number of poses.
Definition kitti_pose_reader.hpp:37
Eigen::Matrix< DataType, 4, 4 > get_pose(std::size_t index) const
Get pose at specific index.
Definition kitti_pose_reader_impl.hpp:19
kitti_pose_reader_t()=default
Default constructor.
void clear() noexcept
Clear all loaded poses.
Definition kitti_pose_reader.hpp:84
bool load(const std::string &poses_file)
Load poses from file.
Definition kitti_pose_reader_impl.hpp:8
< 用于列出目录下的文件/For listing files in a directory
Definition dataloader.hpp:15