aron_conversions.cpp
Go to the documentation of this file.
1#include "aron_conversions.h"
2
3#include <VirtualRobot/MathTools.h>
4
6
7#include <dmp/representation/dmp/umitsmp.h>
8
9namespace armarx::armem
10{
11
12 void
13 fromAron(const arondto::Trajectory& dto, DMP::SampledTrajectoryV2& bo, bool taskspace)
14 {
15 std::map<double, DMP::DVec> traj_map;
16 if (taskspace)
17 {
18 for (auto element : dto.taskSpace.steps)
19 {
20 DMP::DVec pose;
21 pose.push_back(element.pose(0, 3));
22 pose.push_back(element.pose(1, 3));
23 pose.push_back(element.pose(2, 3));
24 VirtualRobot::MathTools::Quaternion quat =
25 VirtualRobot::MathTools::eigen4f2quat(element.pose);
26 pose.push_back(quat.w);
27 pose.push_back(quat.x);
28 pose.push_back(quat.y);
29 pose.push_back(quat.z);
30 traj_map.insert(std::make_pair(element.timestep, pose));
31 }
32 }
33 else
34 {
35 for (auto element : dto.jointSpace.steps)
36 {
37 DMP::DVec jointvalues;
38 for (auto angle : element.jointValues)
39 {
40 jointvalues.push_back(double(angle));
41 }
42 traj_map.insert(std::make_pair(element.timestep, jointvalues));
43 }
44 }
45 }
46
47 void
48 toAron(arondto::Trajectory& dto,
49 const DMP::SampledTrajectoryV2& bo_taskspace,
50 const DMP::SampledTrajectoryV2& bo_jointspace,
51 const std::string name)
52 {
53 dto.name = name;
54 std::map<std::string, std::vector<float>> mapJointSpace;
55
56 // taskspace
57 std::map<double, DMP::DVec> ts_map = bo_taskspace.getPositionData();
58 for (std::pair<double, DMP::DVec> element : ts_map)
59 {
60 Eigen::Vector3f vec(element.second.at(0), element.second.at(1), element.second.at(2));
62 VirtualRobot::MathTools::quat2eigen4f(element.second.at(4),
63 element.second.at(5),
64 element.second.at(6),
65 element.second.at(3));
66 poseMatrix.block<3, 1>(0, 3) = vec;
67 arondto::TSElement tselement;
68 tselement.timestep = element.first;
69 tselement.pose = poseMatrix;
70 dto.taskSpace.steps.push_back(tselement);
71 }
72
73 // jointspace
74 std::map<double, DMP::DVec> js_map = bo_jointspace.getPositionData();
75 for (std::pair<double, DMP::DVec> element : js_map)
76 {
77 std::vector<float> configvec;
78 for (double el : element.second)
79 {
80 configvec.push_back(float(el));
81 }
82 arondto::JSElement jselement;
83 jselement.timestep = element.first;
84 jselement.jointValues = configvec;
85 dto.jointSpace.steps.push_back(jselement);
86 }
87 }
88
89} // namespace armarx::armem
void fromAron(const arondto::MemoryID &dto, MemoryID &bo)
void toAron(arondto::MemoryID &dto, const MemoryID &bo)
double angle(const Point &a, const Point &b, const Point &c)
Definition point.hpp:109