InterpolatingTimeQueue.cpp
Go to the documentation of this file.
1
#include "
InterpolatingTimeQueue.h
"
2
3
#include "
ArmarXCore/core/exceptions/local/ExpressionException.h
"
4
#include "
ArmarXCore/core/logging/Logging.h
"
5
#include "
ArmarXCore/util/CPPUtility/trace.h
"
6
7
namespace
armarx::localization_and_mapping::cartographer_adapter
8
{
9
10
// TODO(fabian.reister): remove and use simox
11
Eigen::Isometry3f
12
interpolatePose2
(
const
Eigen::Isometry3f& posePre,
const
Eigen::Isometry3f& poseNext,
float
t)
13
{
14
ARMARX_TRACE
;
15
t =
std::clamp
(t, 0.F, 1.F);
16
17
Eigen::Isometry3f pose =
Eigen::Isometry3f::Identity
();
18
19
pose.translation() = (1. - t) * posePre.translation() + t * poseNext.translation();
20
21
const
Eigen::Quaternionf
rotPrev(posePre.linear().matrix());
22
const
Eigen::Quaternionf
rotNext(poseNext.linear().matrix());
23
24
const
Eigen::Quaternionf
rotNew = rotPrev.
slerp
(t, rotNext);
25
26
pose.linear() = rotNew.toRotationMatrix();
27
28
return
pose;
29
}
30
31
PoseStamped
32
interpolate
(
const
PoseStamped
& posePre,
const
PoseStamped
& poseNext,
float
t)
33
{
34
ARMARX_TRACE
;
35
t =
std::clamp
(t, 0.F, 1.F);
36
37
PoseStamped
ps;
38
ps.
timestamp
= posePre.
timestamp
+ (poseNext.
timestamp
- posePre.
timestamp
) * t;
39
40
ps.
pose
=
interpolatePose2
(posePre.
pose
, poseNext.
pose
, t);
41
42
return
ps;
43
}
44
45
46
}
// namespace armarx::localization_and_mapping::cartographer_adapter
InterpolatingTimeQueue.h
armarx::localization_and_mapping::cartographer_adapter::PoseStamped::timestamp
int64_t timestamp
Definition:
InterpolatingTimeQueue.h:46
trace.h
armarx::localization_and_mapping::cartographer_adapter::PoseStamped
Definition:
InterpolatingTimeQueue.h:43
clamp
double clamp(double x, double a, double b)
Definition:
point.hpp:136
armarx::Quaternion::slerp
Eigen::Matrix3f slerp(float, const Eigen::Matrix3f &)
Definition:
Pose.cpp:233
ARMARX_TRACE
#define ARMARX_TRACE
Definition:
trace.h:77
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition:
MatrixXX.h:570
armarx::PoseStamped
Definition:
SelfLocalization.h:59
armarx::localization_and_mapping::cartographer_adapter
This file is part of ArmarX.
Definition:
ApproximateTimeQueue.cpp:15
ExpressionException.h
armarx::localization_and_mapping::cartographer_adapter::PoseStamped::pose
Eigen::Isometry3f pose
Definition:
InterpolatingTimeQueue.h:45
armarx::localization_and_mapping::cartographer_adapter::interpolatePose2
Eigen::Isometry3f interpolatePose2(const Eigen::Isometry3f &posePre, const Eigen::Isometry3f &poseNext, float t)
Definition:
InterpolatingTimeQueue.cpp:12
armarx::Quaternion< float, 0 >
Logging.h
armarx::localization_and_mapping::cartographer_adapter::interpolate
PoseStamped interpolate(const PoseStamped &posePre, const PoseStamped &poseNext, float t)
Definition:
InterpolatingTimeQueue.cpp:32
armarx
localization_and_mapping
cartographer_adapter
InterpolatingTimeQueue.cpp
Generated by
1.8.17