My Project 1.0
Holistic Fusion: A Generic Framework for Multimodal Sensor Fusion
Loading...
Searching...
No Matches
TrajectoryAlignment.h
Go to the documentation of this file.
1/*
2Copyright 2022 by Julian Nubert, Robotic Systems Lab, ETH Zurich.
3All rights reserved.
4This file is released under the "BSD-3-Clause License".
5Please see the LICENSE file that has been included as part of this package.
6 */
7
8#ifndef HOLISTIC_FUSION_TrajectoryAlignment_H
9#define HOLISTIC_FUSION_TrajectoryAlignment_H
10
11// C++
12#include <Eigen/Eigen>
13#include <memory>
14#include <mutex>
15// Package
17
18// Defined macros
19#define GREEN_START "\033[92m"
20#define YELLOW_START "\033[33m"
21#define COLOR_END "\033[0m"
22
23namespace holistic_fusion {
24
26 public:
28
29 // Methods
30 void addSe3Position(Eigen::Vector3d position, double time);
31 void addR3Position(Eigen::Vector3d position, double time);
32 bool alignTrajectories(double& yaw, Eigen::Isometry3d& returnTransform);
33
34 // Setters
35 void setR3Rate(const double r3Rate) { r3Rate_ = r3Rate; }
36 void setSe3Rate(const double se3Rate) { se3Rate_ = se3Rate; }
37 void setMinDistanceHeadingInit(const double minDistanceHeadingInit) { minDistanceHeadingInit_ = minDistanceHeadingInit; }
38 void setNoMovementDistance(const double noMovementDistance) { noMovementDistance_ = noMovementDistance; }
39 void setNoMovementTime(const double noMovementTime) { noMovementTime_ = noMovementTime; }
40
41 // Getters
42 std::vector<std::pair<double, Eigen::Vector3d>> getSe3Trajectory();
43 std::vector<std::pair<double, Eigen::Vector3d>> getR3Trajectory();
44
45 private:
46 // Member methods
47 bool associateTrajectories(Trajectory& trajectoryA, Trajectory& trajectoryB, Trajectory& newTrajectoryA, Trajectory& newTrajectoryB);
48 bool trajectoryAlignment(Trajectory& trajectoryA, Trajectory& trajectoryB, Eigen::Isometry3d& returnTransform);
49
50 // Member variables
53
54 // Reference Parameters
55 double r3Rate_{20.0};
56 double se3Rate_{10.0};
59 double noMovementTime_{3.0};
61
62 // Mutex for adding new measurements
63 std::mutex alignmentMutex;
64};
65
66} // namespace holistic_fusion
67
68#endif // HOLISTIC_FUSION_TrajectoryAlignment_H
void setSe3Rate(const double se3Rate)
void addR3Position(Eigen::Vector3d position, double time)
std::vector< std::pair< double, Eigen::Vector3d > > getSe3Trajectory()
void setNoMovementTime(const double noMovementTime)
void setMinDistanceHeadingInit(const double minDistanceHeadingInit)
std::vector< std::pair< double, Eigen::Vector3d > > getR3Trajectory()
void addSe3Position(Eigen::Vector3d position, double time)
bool associateTrajectories(Trajectory &trajectoryA, Trajectory &trajectoryB, Trajectory &newTrajectoryA, Trajectory &newTrajectoryB)
void setNoMovementDistance(const double noMovementDistance)
bool trajectoryAlignment(Trajectory &trajectoryA, Trajectory &trajectoryB, Eigen::Isometry3d &returnTransform)
bool alignTrajectories(double &yaw, Eigen::Isometry3d &returnTransform)
Class for holding a trajectory.
Definition Trajectory.h:12