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)
128 const std::string& filename,
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;
206 const RobotStateConfig& state)
const
226 const RobotStateConfig& state)
const
246 const RobotStateConfig& state)
const
253 const Eigen::Matrix4f& targetPose,
261 const std::string&
id,
262 const std::vector<Eigen::Matrix4f>&
targets,
263 const Eigen::VectorXf& initialJV,
272 if (!_deactivated && !_robotStateComponent && _robotStateComponentName.empty())
278 if (!_deactivated && !_robotStateComponent)
287 if (!_deactivated && !_robotStateComponent)
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");
316 const Eigen::Matrix4f& targetPose,
326 const std::vector<Eigen::Matrix4f>&
targets,
327 const Eigen::VectorXf& initialJV,
340 _robotStateComponentName = name;
346 return _robotStateComponentName;
357 const std::string& to,
377 return *_robotStateComponentPlugin;
383 return *_robotStateComponentPlugin;
407 const VirtualRobot::RobotNodeSetPtr& rns,
408 const VirtualRobot::RobotNodePtr& node)
416 const std::string& rnsName,
417 const std::string& nodeName)
424 VirtualRobot::RobotIO::RobotDescription loadMode,
425 const std::string& rnsName,
426 const std::string& nodeName)
433 const std::string& filename,
434 const Ice::StringSeq packages,
435 VirtualRobot::RobotIO::RobotDescription loadMode,
436 const std::string& rnsName,
437 const std::string& nodeName)
440 id, filename, packages, loadMode, rnsName, nodeName);
457 const std::string& rnsName,
458 const std::string& nodeName)
484 const RobotStateConfig& state)
const
507 const RobotStateConfig& state)
const
527 const RobotStateConfig& state)
const
534 const Eigen::Matrix4f& targetPose,
542 const std::string&
id,
543 const std::vector<Eigen::Matrix4f>
targets,
544 const Eigen::VectorXf& initialJV,
548 id,
targets, initialJV, params);
#define ARMARX_CHECK_NOT_EMPTY(c)
#define ARMARX_CHECK_NULL(ptr)
#define ARMARX_CHECK_EMPTY(c)
void changeFrame(const SharedRobotInterfacePrx &referenceRobot, const std::string &newFrame)
ManagedIceObject & parent()
std::string makePropertyName(const std::string &name)
bool usingProxy(const std::string &name, const std::string &endpoints="")
Registers a proxy for retrieval after initialization and adds it to the dependency list.
PluginT * addPlugin(const std::string prefix="", ParamsT &&... params)
Ice::ObjectPrx getProxy(long timeoutMs=0, bool waitForScheduler=true) const
Returns the proxy of this object (optionally it waits for the proxy)
static VirtualRobot::RobotPtr createLocalCloneFromFile(RobotStateComponentInterfacePrx robotStatePrx, VirtualRobot::RobotIO::RobotDescription loadMode=VirtualRobot::RobotIO::eFull)
This is a convenience function for createLocalClone, which automatically gets the filename from the R...
static bool synchronizeLocalCloneToState(VirtualRobot::RobotPtr robot, RobotStateConfig const &state)
static bool synchronizeLocalClone(VirtualRobot::RobotPtr robot, RobotStateComponentInterfacePrx robotStatePrx)
static bool synchronizeLocalCloneToTimestamp(VirtualRobot::RobotPtr robot, RobotStateComponentInterfacePrx robotStatePrx, Ice::Long timestamp)
Synchronizes a local robot to a robot state at timestamp.
static VirtualRobot::RobotPtr createLocalClone(RobotStateComponentInterfacePrx robotStatePrx, const std::string &filename=std::string(), const Ice::StringSeq packages=Ice::StringSeq(), VirtualRobot::RobotIO::RobotDescription loadMode=VirtualRobot::RobotIO::eFull)
SimpleDiffIK::Result calculateRobotDiffIK(const std::string &id, const Eigen::Matrix4f &targetPose, const SimpleDiffIK::Parameters ¶ms={})
void setRobotRNSAndNode(const std::string &id, const std::string &rnsName, const std::string &nodeName)
RobotStateComponentPlugin::RobotData getRobotData(const std::string &id) const
RobotStateComponentPluginUser()
bool synchronizeLocalClone(const VirtualRobot::RobotPtr &robot) const
const RobotStateComponentPlugin & getRobotStateComponentPlugin() const
armarx::plugins::RobotStateComponentPlugin RobotStateComponentPlugin
SimpleDiffIK::Reachability calculateRobotReachability(const std::string &id, const std::vector< Eigen::Matrix4f > targets, const Eigen::VectorXf &initialJV, const SimpleDiffIK::Parameters ¶ms={})
VirtualRobot::RobotPtr addRobot(const std::string &id, const VirtualRobot::RobotPtr &robot, const VirtualRobot::RobotNodeSetPtr &rns={}, const VirtualRobot::RobotNodePtr &node={})
const RobotStateComponentInterfacePrx & getRobotStateComponent() const
VirtualRobot::RobotPtr getRobot(const std::string &id) const
bool hasRobot(const std::string &id) const
RobotNameHelperPtr getRobotNameHelper() const
static Reachability CalculateReachability(const std::vector< Eigen::Matrix4f > targets, const Eigen::VectorXf &initialJV, VirtualRobot::RobotNodeSetPtr rns, VirtualRobot::RobotNodePtr tcp=VirtualRobot::RobotNodePtr(), Parameters params=Parameters())
Use this to check a trajectory of waypoints.
static Result CalculateDiffIK(const Eigen::Matrix4f targetPose, VirtualRobot::RobotNodeSetPtr rns, VirtualRobot::RobotNodePtr tcp=VirtualRobot::RobotNodePtr(), Parameters params=Parameters())
Eigen::Matrix4f transformFromTo(const std::string &from, const std::string &to, const VirtualRobot::RobotPtr &rob)
void setRobotStateComponentName(const std::string &name)
void postOnDisconnectComponent() override
void setRobotRNSAndNode(const std::string &id, const std::string &rnsName, const std::string &nodeName)
RobotData getRobotData(const std::string &id) const
void preOnInitComponent() override
void preOnConnectComponent() override
bool synchronizeLocalClone(const VirtualRobot::RobotPtr &robot) const
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
VirtualRobot::RobotPtr addRobot(const std::string &id, const VirtualRobot::RobotPtr &robot, const VirtualRobot::RobotNodeSetPtr &rns={}, const VirtualRobot::RobotNodePtr &node={})
const RobotStateComponentInterfacePrx & getRobotStateComponent() const
VirtualRobot::RobotPtr getRobot(const std::string &id) const
SimpleDiffIK::Reachability calculateRobotReachability(const std::string &id, const std::vector< Eigen::Matrix4f > &targets, const Eigen::VectorXf &initialJV, const SimpleDiffIK::Parameters ¶ms={}) const
SimpleDiffIK::Result calculateRobotDiffIK(const std::string &id, const Eigen::Matrix4f &targetPose, const SimpleDiffIK::Parameters ¶ms={}) const
const std::string & getRobotStateComponentName() const
bool hasRobot(const std::string &id) const
void setRobotStateComponent(const RobotStateComponentInterfacePrx &rsc)
RobotNameHelperPtr getRobotNameHelper() const
Brief description of class targets.
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
std::shared_ptr< class Robot > RobotPtr
This file is part of ArmarX.
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
::IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface > RobotStateComponentInterfacePrx
std::shared_ptr< class RobotNameHelper > RobotNameHelperPtr
SimpleDiffIK::Reachability calculateRobotReachability(const std::vector< Eigen::Matrix4f > &targets, const Eigen::VectorXf &initialJV, const SimpleDiffIK::Parameters ¶ms={}) const
VirtualRobot::RobotPtr robot
VirtualRobot::RobotNodeSetPtr rns
VirtualRobot::RobotNodePtr node
SimpleDiffIK::Result calculateRobotDiffIK(const Eigen::Matrix4f &targetPose, const SimpleDiffIK::Parameters ¶ms={}) const