InterpolatingTimeQueue.cpp
Go to the documentation of this file.
2 
6 
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  {
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 
32  interpolate(const PoseStamped& posePre, const PoseStamped& poseNext, float t)
33  {
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