32 #include <RobotSkillTemplates/statecharts/MotionAndPlatformControlGroup/MoveJointPlatformTrajectory.generated.h>
34 #include "MotionAndPlatformControlGroupStatechartContext.generated.h"
39 public MoveJointPlatformTrajectoryGeneratedBase<MoveJointPlatformTrajectory>
43 std::pair<DataFieldIdentifierBaseList, DataFieldIdentifierBaseList>;
67 datafields.first.reserve(3);
68 datafields.second.reserve(
jointNames.size() - 3);
70 const std::string platformObserverName =
71 context->getProperty<std::string>(
"PlatformUnitObserverName").
getValue();
72 if (channelName ==
"jointangles")
74 datafields.first.emplace_back(
76 datafields.first.emplace_back(
78 datafields.first.emplace_back(
84 platformObserverName,
"platformVelocity",
"velocityX"});
86 platformObserverName,
"platformVelocity",
"velocityY"});
88 platformObserverName,
"platformVelocity",
"velocityRotation"});
91 const std::string observerName =
92 context->getProperty<std::string>(
"KinematicUnitObserverName").
getValue();
95 datafields.second.emplace_back(
140 return lists.first.at(i)->getFloat();
142 return lists.second.at(i - 3)->getFloat();
145 float getValue(std::size_t i)
const;
151 const auto x = vels.at(
"x");
152 const auto y = vels.at(
"y");
153 const auto a = vels.at(
"alpha");
154 context->getPlatformUnit()->move(x, y,
a);
155 ARMARX_INFO <<
"VelocitiesPlatform: x= " << x <<
" y=" << y <<
" alpha=" <<
a;
165 context->getKinematicUnit()->setJointVelocities(vels);
171 const auto x =
values.at(
"x");
172 const auto y =
values.at(
"y");
173 const auto a =
values.at(
"alpha");
174 context->getPlatformUnit()->moveTo(
191 const auto x = vels.at(
"x");
192 const auto y = vels.at(
"y");
193 const auto a = vels.at(
"alpha");
194 context->getPlatformUnit()->setMaxVelocities((x + y) / 2.0,
a);
204 context->getKinematicUnit()->setJointVelocities(vels);
210 NameControlModeMap controlModes;
211 for (
size_t i = 3; i <
jointNames.size(); i++)
215 context->getKinematicUnit()->switchControlMode(controlModes);
229 : in.getJointMaxSpeed());
235 return (joint <
maxAccs.size() ?
maxAccs.at(joint) : in.getJointMaxAccel());
251 return i < 2 ? in.getNextConfigTranslationTolerance() : in.getNextConfigTolerance();
254 static int sign(
double val);
263 MotionAndPlatformControlGroupStatechartContext*
context;
271 const std::chrono::milliseconds
period{10};
275 typename Trajectory::ordered_view::const_iterator
lastCfgIt;