25 #include <VirtualRobot/Robot.h>
26 #include <VirtualRobot/RobotNodeSet.h>
27 #include <VirtualRobot/XML/RobotIO.h>
48 _robotStateComponent = rsc;
54 std::lock_guard g{_robotsMutex};
55 return _robots.count(
id);
61 const VirtualRobot::RobotNodeSetPtr& rns,
62 const VirtualRobot::RobotNodePtr& node)
73 std::lock_guard g {_robotsMutex};
77 _robots[id] = {robot, rns, rns->getTCP()};
81 _robots[id] = {robot, rns, node};
89 const std::string& rnsName,
90 const std::string& nodeName)
93 VirtualRobot::RobotNodeSetPtr rns;
94 VirtualRobot::RobotNodePtr node;
97 rns = robot->getRobotNodeSet(rnsName);
99 <<
"'. Available RNS: " << robot->getRobotNodeSetNames();
101 if (!nodeName.empty())
103 auto node = robot->getRobotNode(nodeName);
105 <<
"'. Available nodes: " << robot->getRobotNodeNames();
109 node = rns->getTCP();
111 return addRobot(
id, robot, rns, node);
116 VirtualRobot::RobotIO::RobotDescription loadMode,
117 const std::string& rnsName,
118 const std::string& nodeName)
129 const Ice::StringSeq packages,
130 VirtualRobot::RobotIO::RobotDescription loadMode,
131 const std::string& rnsName,
132 const std::string& nodeName)
150 std::lock_guard g{_robotsMutex};
152 return _robots.at(
id);
157 const std::string& rnsName,
158 const std::string& nodeName)
160 std::lock_guard g{_robotsMutex};
162 auto& r = _robots.at(
id);
164 <<
"There was no robot node set specified! "
165 <<
"Available RNS: " << r.robot->getRobotNodeSetNames();
166 auto rns = r.robot->getRobotNodeSet(rnsName);
168 <<
"'. Available RNS: " << r.robot->getRobotNodeSetNames();
169 if (nodeName.empty())
172 r.node = rns->getTCP();
176 auto node = r.robot->getRobotNode(nodeName);
178 <<
"'. Available nodes: " << r.robot->getRobotNodeNames();
187 return _robotStateComponent;
201 robot, _robotStateComponent, timestamp);
206 const RobotStateConfig& state)
const
226 const RobotStateConfig& state)
const
246 const RobotStateConfig& state)
const
261 const std::string&
id,
262 const std::vector<Eigen::Matrix4f>& targets,
263 const Eigen::VectorXf& initialJV,
272 if (!_deactivated && !_robotStateComponent && _robotStateComponentName.empty())
274 parent<Component>().getProperty(_robotStateComponentName,
278 if (!_deactivated && !_robotStateComponent)
280 parent<Component>().usingProxy(_robotStateComponentName);
287 if (!_deactivated && !_robotStateComponent)
289 parent<Component>().getProxy(_robotStateComponent, _robotStateComponentName);
293 _nameHelper = std::make_shared<RobotNameHelper>(_robotStateComponent->getRobotInfo());
300 _robotStateComponent =
nullptr;
308 properties->defineOptionalProperty<std::string>(
makePropertyName(_propertyName),
309 "RobotStateComponent",
310 "Name of the robot state component");
326 const std::vector<Eigen::Matrix4f>& targets,
327 const Eigen::VectorXf& initialJV,
340 _robotStateComponentName = name;
346 return _robotStateComponentName;
357 const std::string& to,
362 fp.changeFrame(rob, to);
371 addPlugin(_robotStateComponentPlugin);
377 return *_robotStateComponentPlugin;
383 return *_robotStateComponentPlugin;
389 return getRobotStateComponentPlugin().getRobotStateComponent();
395 return getRobotStateComponentPlugin().getRobotNameHelper();
401 return getRobotStateComponentPlugin().hasRobot(
id);
407 const VirtualRobot::RobotNodeSetPtr& rns,
408 const VirtualRobot::RobotNodePtr& node)
410 return getRobotStateComponentPlugin().addRobot(
id, robot, rns, node);
416 const std::string& rnsName,
417 const std::string& nodeName)
419 return getRobotStateComponentPlugin().addRobot(
id, robot, rnsName, nodeName);
424 VirtualRobot::RobotIO::RobotDescription loadMode,
425 const std::string& rnsName,
426 const std::string& nodeName)
428 return getRobotStateComponentPlugin().addRobot(
id, loadMode, rnsName, nodeName);
434 const Ice::StringSeq packages,
435 VirtualRobot::RobotIO::RobotDescription loadMode,
436 const std::string& rnsName,
437 const std::string& nodeName)
439 return getRobotStateComponentPlugin().addRobot(
440 id,
filename, packages, loadMode, rnsName, nodeName);
446 return getRobotStateComponentPlugin().getRobot(
id);
452 return getRobotStateComponentPlugin().getRobotData(
id);
457 const std::string& rnsName,
458 const std::string& nodeName)
460 getRobotStateComponentPlugin().setRobotRNSAndNode(
id, rnsName, nodeName);
466 return getRobotStateComponentPlugin().getRobotStateComponent();
472 return getRobotStateComponentPlugin().synchronizeLocalClone(robot);
479 return getRobotStateComponentPlugin().synchronizeLocalClone(robot, timestamp);
484 const RobotStateConfig& state)
const
486 return getRobotStateComponentPlugin().synchronizeLocalClone(robot, state);
493 return getRobotStateComponentPlugin().synchronizeLocalClone(rdata);
501 return getRobotStateComponentPlugin().synchronizeLocalClone(rdata, timestamp);
507 const RobotStateConfig& state)
const
509 return getRobotStateComponentPlugin().synchronizeLocalClone(rdata, state);
515 return getRobotStateComponentPlugin().synchronizeLocalClone(
id);
522 return getRobotStateComponentPlugin().synchronizeLocalClone(
id, timestamp);
527 const RobotStateConfig& state)
const
529 return getRobotStateComponentPlugin().synchronizeLocalClone(
id, state);
537 return getRobotStateComponentPlugin().calculateRobotDiffIK(
id, targetPose, params);
542 const std::string&
id,
543 const std::vector<Eigen::Matrix4f> targets,
544 const Eigen::VectorXf& initialJV,
547 return getRobotStateComponentPlugin().calculateRobotReachability(
548 id, targets, initialJV, params);