eigen.cpp
Go to the documentation of this file.
1#include "eigen.h"
2
3#include <algorithm>
4#include <cmath>
5#include <iterator>
6#include <vector>
7
9
11{
12
13 std::vector<Eigen::Vector3f>
14 to3D(const std::vector<Eigen::Vector2f>& v)
15
16 {
17 std::vector<Eigen::Vector3f> v3;
18 v3.reserve(v.size());
19
20 std::transform(v.begin(),
21 v.end(),
22 std::back_inserter(v3),
23 static_cast<Eigen::Vector3f (*)(const Eigen::Vector2f&)>(&to3D));
24
25 return v3;
26 }
27
28 std::vector<Eigen::Vector2f>
29 to2D(const std::vector<Eigen::Vector3f>& v)
30
31 {
32 std::vector<Eigen::Vector2f> v2;
33 v2.reserve(v.size());
34
35 std::transform(v.begin(),
36 v.end(),
37 std::back_inserter(v2),
38 static_cast<Eigen::Vector2f (*)(const Eigen::Vector3f&)>(&to2D));
39
40 return v2;
41 }
42
44 to2D(const core::Pose& p3)
45 {
46 core::Pose2D p2 = armarx::navigation::core::Pose2D::Identity();
47 p2.translation() = p3.translation().head<2>();
48
49 const auto rotatedVec = p3.rotation() * Eigen::Vector3f::UnitX();
50 const float yaw = std::atan2(rotatedVec.y(), rotatedVec.x());
51
52 p2.linear() = Eigen::Rotation2Df(yaw).toRotationMatrix();
53
54 return p2;
55 }
56
57
58} // namespace armarx::navigation::conv
This file is part of ArmarX.
Definition eigen.cpp:11
std::vector< Eigen::Vector2f > to2D(const std::vector< Eigen::Vector3f > &v)
Definition eigen.cpp:29
std::vector< Eigen::Vector3f > to3D(const std::vector< Eigen::Vector2f > &v)
Definition eigen.cpp:14
Eigen::Isometry2f Pose2D
Definition basic_types.h:34
Eigen::Isometry3f Pose
Definition basic_types.h:31