28#include <VirtualRobot/IK/IKSolver.h>
29#include <VirtualRobot/VirtualRobot.h>
34#include <RobotAPI/interface/core/CartesianPositionControllerConfig.h>
46 const VirtualRobot::RobotNodePtr& referenceFrame =
nullptr);
51 Eigen::VectorXf
calculate(
const Eigen::Matrix4f& targetPose,
52 VirtualRobot::IKSolver::CartesianSelection mode)
const;
53 Eigen::VectorXf
calculatePos(
const Eigen::Vector3f& targetPos)
const;
58 const VirtualRobot::RobotNodePtr& tcp,
59 const VirtualRobot::RobotNodePtr& referenceFrame =
nullptr);
62 const VirtualRobot::RobotNodePtr& tcp,
63 const VirtualRobot::RobotNodePtr& referenceFrame =
nullptr);
64 static bool Reached(
const Eigen::Matrix4f& targetPose,
65 const VirtualRobot::RobotNodePtr& tcp,
67 float thresholdPosReached,
68 float thresholdOriReached,
69 const VirtualRobot::RobotNodePtr& referenceFrame =
nullptr);
70 bool reached(
const Eigen::Matrix4f& targetPose,
71 VirtualRobot::IKSolver::CartesianSelection mode,
72 float thresholdPosReached,
73 float thresholdOriReached);
75 Eigen::Vector3f
getPositionDiff(
const Eigen::Matrix4f& targetPose)
const;
78 VirtualRobot::RobotNodePtr
getTcp()
const;
87 VirtualRobot::RobotNodePtr tcp;
88 VirtualRobot::RobotNodePtr referenceFrame;
110 return this->
clone();
114 clone(
const Ice::Current& = ::Ice::Current())
const override
119 std::string
output(
const Ice::Current&
c = ::Ice::Current())
const override;
122 getType(
const Ice::Current& = ::Ice::Current())
const override
128 validate(
const Ice::Current& = ::Ice::Current())
override
136 stream <<
"CartesianPositionControllerConfig: " << std::endl
137 << rhs.
output() << std::endl;
142 void serialize(
const armarx::ObjectSerializerBasePtr& serializer,
143 const ::Ice::Current& = ::Ice::Current())
const override;
144 void deserialize(
const armarx::ObjectSerializerBasePtr& serializer,
145 const ::Ice::Current& = ::Ice::Current())
override;
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=::Ice::Current()) override
std::string output(const Ice::Current &c=::Ice::Current()) const override
VariantTypeId getType(const Ice::Current &=::Ice::Current()) const override
CartesianPositionControllerConfig()
bool validate(const Ice::Current &=::Ice::Current()) override
VariantDataClassPtr clone(const Ice::Current &=::Ice::Current()) const override
Ice::ObjectPtr ice_clone() const override
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=::Ice::Current()) const override
friend std::ostream & operator<<(std::ostream &stream, const CartesianPositionControllerConfig &rhs)
static float GetOrientationError(const Eigen::Matrix4f &targetPose, const VirtualRobot::RobotNodePtr &tcp, const VirtualRobot::RobotNodePtr &referenceFrame=nullptr)
Eigen::Vector3f getPositionDiffVec3(const Eigen::Vector3f &targetPosition) const
float getPositionError(const Eigen::Matrix4f &targetPose) const
CartesianPositionController & operator=(CartesianPositionController &&)=default
Eigen::VectorXf calculatePos(const Eigen::Vector3f &targetPos) const
Eigen::VectorXf calculate(const Eigen::Matrix4f &targetPose, VirtualRobot::IKSolver::CartesianSelection mode) const
static bool Reached(const Eigen::Matrix4f &targetPose, const VirtualRobot::RobotNodePtr &tcp, bool checkOri, float thresholdPosReached, float thresholdOriReached, const VirtualRobot::RobotNodePtr &referenceFrame=nullptr)
CartesianPositionController(const VirtualRobot::RobotNodePtr &tcp, const VirtualRobot::RobotNodePtr &referenceFrame=nullptr)
float getOrientationError(const Eigen::Matrix4f &targetPose) const
Eigen::Vector3f getOrientationDiff(const Eigen::Matrix4f &targetPose) const
CartesianPositionController(CartesianPositionController &&)=default
bool reached(const Eigen::Matrix4f &targetPose, VirtualRobot::IKSolver::CartesianSelection mode, float thresholdPosReached, float thresholdOriReached)
Eigen::Vector3f getPositionDiff(const Eigen::Matrix4f &targetPose) const
VirtualRobot::RobotNodePtr getTcp() const
static float GetPositionError(const Eigen::Matrix4f &targetPose, const VirtualRobot::RobotNodePtr &tcp, const VirtualRobot::RobotNodePtr &referenceFrame=nullptr)
static VariantTypeId addTypeName(const std::string &typeName)
Register a new type for the use in a Variant.
const VariantTypeId CartesianPositionControllerConfig
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceInternal::Handle< CartesianPositionControllerConfig > CartesianPositionControllerConfigPtr
std::shared_ptr< CartesianPositionController > CartesianPositionControllerPtr