From 8eb05a3cfa1aee652409ecd3840dd70fdaae489e Mon Sep 17 00:00:00 2001 From: armar6-user <armar6-user@kit.edu> Date: Wed, 4 Apr 2018 16:50:53 +0200 Subject: [PATCH] added getPositionDiff and getOrientationDiff --- .../core/CartesianPositionController.cpp | 16 ++++++++++++++++ .../libraries/core/CartesianPositionController.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/source/RobotAPI/libraries/core/CartesianPositionController.cpp b/source/RobotAPI/libraries/core/CartesianPositionController.cpp index 8caa1a53b..1c49e462d 100644 --- a/source/RobotAPI/libraries/core/CartesianPositionController.cpp +++ b/source/RobotAPI/libraries/core/CartesianPositionController.cpp @@ -83,3 +83,19 @@ float CartesianPositionController::getOrientationError(const Eigen::Matrix4f& ta Eigen::AngleAxisf aa(oriDir); 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(); +} diff --git a/source/RobotAPI/libraries/core/CartesianPositionController.h b/source/RobotAPI/libraries/core/CartesianPositionController.h index c0d8642ee..dd592515b 100644 --- a/source/RobotAPI/libraries/core/CartesianPositionController.h +++ b/source/RobotAPI/libraries/core/CartesianPositionController.h @@ -45,6 +45,8 @@ namespace armarx float getPositionError(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; float KpPos = 1; -- GitLab