diff --git a/source/RobotAPI/units/TCPControlUnit.cpp b/source/RobotAPI/units/TCPControlUnit.cpp index cd6d14879dd2d797f3afd769dd9bc990f62f6d15..be1ded686634d58aa7a42254e444642de8841926 100644 --- a/source/RobotAPI/units/TCPControlUnit.cpp +++ b/source/RobotAPI/units/TCPControlUnit.cpp @@ -614,7 +614,7 @@ namespace armarx size_t index=0; for (size_t i=0; i<tcp_set.size();i++) { - RobotNodePtr tcp = tcp_set[i]; + SceneObjectPtr tcp = tcp_set[i]; if (this->targets.find(tcp)!=this->targets.end()) { IKSolver::CartesianSelection mode = this->modes[tcp]; @@ -793,7 +793,7 @@ namespace armarx size_t index=0; for (size_t i=0; i<tcp_set.size();i++) { - RobotNodePtr tcp = tcp_set[i]; + SceneObjectPtr tcp = tcp_set[i]; if (this->targets.find(tcp)!=this->targets.end()) { Eigen::VectorXf delta = getDeltaToGoal(tcp); @@ -851,7 +851,7 @@ namespace armarx size_t index=0; for (size_t i=0; i<tcp_set.size();i++) { - RobotNodePtr tcp = tcp_set[i]; + SceneObjectPtr tcp = tcp_set[i]; if (this->targets.find(tcp)!=this->targets.end()) { Eigen::VectorXf delta = getDeltaToGoal(tcp); @@ -903,7 +903,7 @@ namespace armarx MatrixXf pseudo = computePseudoInverseJacobianMatrix(partJacobian); Eigen::VectorXf tcpWeightVec; - std::map<VirtualRobot:: RobotNodePtr, Eigen::VectorXf>::iterator it = tcpWeights.find(tcp); + std::map<VirtualRobot:: SceneObjectPtr, Eigen::VectorXf>::iterator it = tcpWeights.find(tcp); if(it != tcpWeights.end()) { tcpWeightVec = it->second; @@ -988,7 +988,7 @@ namespace armarx void EDifferentialIK::applyTCPWeights(RobotNodePtr tcp, MatrixXf& partJacobian) { - std::map<VirtualRobot:: RobotNodePtr, Eigen::VectorXf>::iterator it = tcpWeights.find(tcp); + std::map<VirtualRobot:: SceneObjectPtr, Eigen::VectorXf>::iterator it = tcpWeights.find(tcp); if(it != tcpWeights.end()) { Eigen::VectorXf& tcpWeightVec = it->second; @@ -1012,7 +1012,7 @@ namespace armarx if(tcpWeightVec.rows() == 0) for (size_t i=0; i<tcp_set.size();i++) { - std::map<VirtualRobot:: RobotNodePtr, Eigen::VectorXf>::iterator it = tcpWeights.find(tcp_set.at(i)); + std::map<VirtualRobot:: SceneObjectPtr, Eigen::VectorXf>::iterator it = tcpWeights.find(tcp_set.at(i)); if(it != tcpWeights.end()) { Eigen::VectorXf& tmptcpWeightVec = it->second; @@ -1064,13 +1064,13 @@ namespace armarx float result = 0.0f; float positionOrientationRatio = 3.f/180.f*M_PI; for (size_t i=0; i<tcp_set.size();i++){ - RobotNodePtr tcp = tcp_set[i]; + SceneObjectPtr tcp = tcp_set[i]; result += getWeightedErrorPosition(tcp) + getErrorRotation(tcp)*positionOrientationRatio; } return result; } - float EDifferentialIK::getWeightedErrorPosition(RobotNodePtr tcp) + float EDifferentialIK::getWeightedErrorPosition(SceneObjectPtr tcp) { if (modes[tcp] == IKSolver::Orientation) return 0.0f; // ignoring position diff --git a/source/RobotAPI/units/TCPControlUnit.h b/source/RobotAPI/units/TCPControlUnit.h index 762165a695af1ef5ee30e588349ec7f1250f3399..d586d1354005362930f329251de1e5d65bb5eb31 100644 --- a/source/RobotAPI/units/TCPControlUnit.h +++ b/source/RobotAPI/units/TCPControlUnit.h @@ -185,14 +185,14 @@ namespace armarx { void applyTCPWeights(VirtualRobot::RobotNodePtr tcp, Eigen::MatrixXf &partJacobian); void applyTCPWeights(Eigen::MatrixXf &invJacobian); float getWeightedError(); - float getWeightedErrorPosition(VirtualRobot::RobotNodePtr tcp); + float getWeightedErrorPosition(VirtualRobot::SceneObjectPtr tcp); Eigen::VectorXf computeStepIndependently(float stepSize); bool solveIK(float stepSize = 1, float minChange = 0.01f, int maxSteps = 50, bool useAlternativeOnFail = false); protected: bool adjustDOFWeightsToJointLimits(const Eigen::VectorXf &plannedJointDeltas); Eigen::VectorXf dofWeights; - std::map<VirtualRobot:: RobotNodePtr, Eigen::VectorXf> tcpWeights; + std::map<VirtualRobot:: SceneObjectPtr, Eigen::VectorXf> tcpWeights; Eigen::VectorXf tcpWeightVec; }; typedef boost::shared_ptr<EDifferentialIK> EDifferentialIKPtr;