Skip to content
Snippets Groups Projects
Commit 461f1096 authored by You Zhou's avatar You Zhou
Browse files

Merge branch 'master' of https://gitlab.com/ArmarX/RobotAPI

parents 71570e65 8b45065d
No related branches found
No related tags found
No related merge requests found
...@@ -83,3 +83,19 @@ float CartesianPositionController::getOrientationError(const Eigen::Matrix4f& ta ...@@ -83,3 +83,19 @@ float CartesianPositionController::getOrientationError(const Eigen::Matrix4f& ta
Eigen::AngleAxisf aa(oriDir); Eigen::AngleAxisf aa(oriDir);
return aa.angle(); return aa.angle();
} }
Eigen::Vector3f CartesianPositionController::getPositionDiff(const Eigen::Matrix4f& targetPose)
{
Eigen::Vector3f targetPos = targetPose.block<3, 1>(0, 3);
return targetPos - tcp->getPositionInRootFrame();
}
Eigen::Vector3f CartesianPositionController::getOrientationDiff(const Eigen::Matrix4f& targetPose)
{
Eigen::Matrix3f targetOri = targetPose.block<3, 3>(0, 0);
Eigen::Matrix3f tcpOri = tcp->getPoseInRootFrame().block<3, 3>(0, 0);
Eigen::Matrix3f oriDir = targetOri * tcpOri.inverse();
Eigen::AngleAxisf aa(oriDir);
return aa.axis() * aa.angle();
}
...@@ -45,6 +45,8 @@ namespace armarx ...@@ -45,6 +45,8 @@ namespace armarx
float getPositionError(const Eigen::Matrix4f& targetPose); float getPositionError(const Eigen::Matrix4f& targetPose);
float getOrientationError(const Eigen::Matrix4f& targetPose); float getOrientationError(const Eigen::Matrix4f& targetPose);
Eigen::Vector3f getPositionDiff(const Eigen::Matrix4f& targetPose);
Eigen::Vector3f getOrientationDiff(const Eigen::Matrix4f& targetPose);
//CartesianVelocityController velocityController; //CartesianVelocityController velocityController;
float KpPos = 1; float KpPos = 1;
......
...@@ -33,7 +33,7 @@ using namespace armarx; ...@@ -33,7 +33,7 @@ using namespace armarx;
CartesianVelocityController::CartesianVelocityController(const VirtualRobot::RobotNodeSetPtr& rns, const VirtualRobot::RobotNodePtr& tcp) CartesianVelocityController::CartesianVelocityController(const VirtualRobot::RobotNodeSetPtr& rns, const VirtualRobot::RobotNodePtr& tcp)
: rns(rns) : rns(rns)
{ {
ARMARX_IMPORTANT << VAROUT(rns->getRobot()->getRootNode()); //ARMARX_IMPORTANT << VAROUT(rns->getRobot()->getRootNode());
ik.reset(new VirtualRobot::DifferentialIK(rns, rns->getRobot()->getRootNode(), VirtualRobot::JacobiProvider::eSVDDamped)); ik.reset(new VirtualRobot::DifferentialIK(rns, rns->getRobot()->getRootNode(), VirtualRobot::JacobiProvider::eSVDDamped));
this->tcp = tcp ? tcp : rns->getTCP(); this->tcp = tcp ? tcp : rns->getTCP();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment