26 #include <VirtualRobot/RobotNodeSet.h>
31 using namespace MotionControlGroup;
49 getContext<MotionControlGroupStatechartContext>();
51 std::string kinematicChain =
"";
53 if (in.isKinematicChainNameSet())
55 kinematicChain = in.getKinematicChainName();
59 Ice::StringSeq nodeNames;
61 if (kinematicChain.empty())
63 auto start = IceUtil::Time::now();
64 nodeNames = context->
getRobot()->getSharedRobot()->getRobotNodes();
66 << (IceUtil::Time::now() - start).toMilliSecondsDouble() <<
"ms";
70 VirtualRobot::RobotNodeSetPtr nodeSet =
71 context->
getRobot()->getRobotNodeSet(kinematicChain);
73 for (
size_t i = 0; i < nodeSet->getSize(); ++i)
75 nodeNames.push_back(nodeSet->getNode(i)->getName());
79 ARMARX_INFO <<
"Stopping joints, kin chain:" << kinematicChain <<
", nodes:" << nodeNames;
83 NameControlModeMap modes;
85 for (
auto& name : nodeNames)
87 zeroJointVelocities[name] = 0.0f;
88 modes[name] = eVelocityControl;
91 auto start = IceUtil::Time::now();
96 << (IceUtil::Time::now() - start).toMilliSecondsDouble() <<
"ms";
97 start = IceUtil::Time::now();
101 << (IceUtil::Time::now() - start).toMilliSecondsDouble() <<
"ms";
105 for (
auto& name : nodeNames)
107 auto it = jointMap.find(name);
109 if (it != jointMap.end())
111 jointPositions[name] = it->second;
112 modes[name] = ePositionControl;
116 ARMARX_INFO <<
"new joint angles: " << jointPositions;