diff --git a/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.cpp b/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.cpp index a9ecec5e4f8965566355d6ef98f60bea206ee42e..6053d01967a38aeabd89f42645e2d2bbc3449a17 100644 --- a/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.cpp +++ b/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.cpp @@ -25,6 +25,8 @@ #include <ArmarXCore/core/util/StringHelpers.h> #include <ArmarXCore/core/exceptions/local/ExpressionException.h> +#include <ArmarXCore/core/system/ArmarXDataPath.h> +#include <ArmarXCore/core/system/cmake/CMakePackageFinder.h> #include <ArmarXCore/statechart/xmlstates/profiles/StatechartProfiles.h> #include <ArmarXCore/util/CPPUtility/trace.h> @@ -32,7 +34,6 @@ namespace armarx { - void RobotNameHelper::writeRobotInfoNode( const RobotInfoNodePtr& n, std::ostream& str, @@ -225,6 +226,14 @@ namespace armarx return select("HandModelPath"); } + std::string RobotNameHelper::Arm::getAbsoluteHandModelPath() const + { + ArmarXDataPath::FindPackageAndAddDataPath(getHandModelPackage()); + auto path = getHandModelPath(); + return ArmarXDataPath::getAbsolutePath(path, path) ? + path : ""; + } + std::string RobotNameHelper::Arm::getHandModelPackage() const { ARMARX_TRACE; @@ -289,7 +298,12 @@ namespace armarx return tcp->getPoseInRootFrame().inverse() * hand->getPoseInRootFrame(); } - RobotNameHelper::Arm RobotNameHelper::RobotArm::getArm() const + const VirtualRobot::RobotPtr& RobotNameHelper::RobotArm::getRobot() const + { + return robot; + } + + const RobotNameHelper::Arm& RobotNameHelper::RobotArm::getArm() const { return arm; } diff --git a/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.h b/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.h index 703c0ae83c286d4c3273d19e1dadd11044e1a71b..0a4fdd59a0fa75277ee69c13cd4ed1d619ecfd3d 100644 --- a/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.h +++ b/source/RobotAPI/libraries/RobotStatechartHelpers/RobotNameHelper.h @@ -74,6 +74,7 @@ namespace armarx std::string getHandControllerName() const; std::string getHandRootNode() const; std::string getHandModelPath() const; + std::string getAbsoluteHandModelPath() const; std::string getHandModelPackage() const; RobotArm addRobot(const VirtualRobot::RobotPtr& robot) const; @@ -104,7 +105,8 @@ namespace armarx VirtualRobot::RobotNodePtr getTCP() const; VirtualRobot::RobotNodePtr getHandRootNode() const; Eigen::Matrix4f getTcp2HandRootTransform() const; - Arm getArm() const; + const Arm& getArm() const; + const VirtualRobot::RobotPtr& getRobot() const; RobotArm(const Arm& arm, const VirtualRobot::RobotPtr& robot); RobotArm() = default; @@ -114,7 +116,7 @@ namespace armarx RobotArm& operator=(const RobotArm&) = default; private: - const Arm arm; + Arm arm; VirtualRobot::RobotPtr robot; }; @@ -123,6 +125,10 @@ namespace armarx static RobotNameHelperPtr Create(const RobotInfoNodePtr& robotInfo, const StatechartProfilePtr& profile); RobotNameHelper(const RobotInfoNodePtr& robotInfo, const StatechartProfilePtr& profile = nullptr); + RobotNameHelper(RobotNameHelper&&) = default; + RobotNameHelper(const RobotNameHelper&) = default; + RobotNameHelper& operator=(RobotNameHelper&&) = default; + RobotNameHelper& operator=(const RobotNameHelper&) = default; Arm getArm(const std::string& side) const; RobotArm getRobotArm(const std::string& side, const VirtualRobot::RobotPtr& robot) const;