From 490299f15f789ee978940b0310d03f184ee4b4b7 Mon Sep 17 00:00:00 2001
From: Mirko Waechter <waechter@kit.edu>
Date: Wed, 3 Jun 2015 18:21:33 +0200
Subject: [PATCH] renamed FramedVector3 to FramedDirection

---
 data/RobotAPI/VariantInfo-RobotAPI.xml        |  4 +-
 .../components/units/ForceTorqueObserver.cpp  |  6 +--
 .../components/units/ForceTorqueObserver.h    |  4 +-
 .../units/ForceTorqueUnitSimulation.cpp       | 10 ++--
 .../units/ForceTorqueUnitSimulation.h         |  6 +--
 .../components/units/TCPControlUnit.cpp       | 20 ++++----
 .../components/units/TCPControlUnit.h         |  6 +--
 .../units/TCPControlUnitObserver.cpp          | 12 ++---
 .../components/units/TCPControlUnitObserver.h |  2 +-
 .../ArmarXTCPMover/TCPMover.cpp               |  4 +-
 .../interface/core/FramedPoseBase.ice         |  4 +-
 .../interface/core/LinkedPoseBase.ice         |  2 +-
 .../interface/units/ForceTorqueUnit.ice       |  4 +-
 .../interface/units/TCPControlUnit.ice        |  4 +-
 source/RobotAPI/libraries/core/FramedPose.cpp | 42 ++++++++--------
 source/RobotAPI/libraries/core/FramedPose.h   | 38 +++++++--------
 source/RobotAPI/libraries/core/LinkedPose.cpp | 40 ++++++++--------
 source/RobotAPI/libraries/core/LinkedPose.h   | 32 ++++++-------
 .../libraries/core/RobotAPIObjectFactories.h  | 16 +++----
 .../checks/ConditionCheckMagnitudeChecks.cpp  | 48 +++++++++----------
 .../core/observerfilters/OffsetFilter.h       | 10 ++--
 .../core/observerfilters/PoseMedianFilter.h   | 14 +++---
 .../core/remoterobot/RobotStateObserver.cpp   | 20 ++++----
 .../core/remoterobot/RobotStateObserver.h     |  2 +-
 .../motioncontrol/ZeroForceControl.cpp        | 24 +++++-----
 25 files changed, 187 insertions(+), 187 deletions(-)

diff --git a/data/RobotAPI/VariantInfo-RobotAPI.xml b/data/RobotAPI/VariantInfo-RobotAPI.xml
index 34de6dfff..f135ca81b 100644
--- a/data/RobotAPI/VariantInfo-RobotAPI.xml
+++ b/data/RobotAPI/VariantInfo-RobotAPI.xml
@@ -6,11 +6,11 @@
         <Variant baseType="::armarx::QuaternionBase" dataType="::armarx::Quaternion" humanName="Quaternion" />
         <Variant baseType="::armarx::PoseBase" dataType="::armarx::Pose" humanName="Pose" />
         <Variant baseType="::armarx::FramedPoseBase" dataType="::armarx::FramedPose" humanName="FramedPose" />
-        <Variant baseType="::armarx::FramedVector3Base" dataType="::armarx::FramedVector3" humanName="FramedVector3" />
+        <Variant baseType="::armarx::FramedDirectionBase" dataType="::armarx::FramedDirection" humanName="FramedDirection" />
         <Variant baseType="::armarx::FramedPositionBase" dataType="::armarx::FramedPosition" humanName="FramedPosition" />
         <Variant baseType="::armarx::FramedOrientationBase" dataType="::armarx::FramedOrientation" humanName="FramedOrientation" />
         <Variant baseType="::armarx::LinkedPoseBase" dataType="::armarx::LinkedPose" humanName="LinkedPose" />
-        <Variant baseType="::armarx::LinkedVector3Base" dataType="::armarx::LinkedVector3" humanName="LinkedVector3" />
+        <Variant baseType="::armarx::LinkedDirectionBase" dataType="::armarx::LinkedDirection" humanName="LinkedDirection" />
         <Proxy include="RobotAPI/interface/units/KinematicUnitInterface.h"
             humanName="Kinematic Unit"
             typeName="KinematicUnitInterfacePrx"
diff --git a/source/RobotAPI/components/units/ForceTorqueObserver.cpp b/source/RobotAPI/components/units/ForceTorqueObserver.cpp
index b7608ee9d..dcf5ecabd 100644
--- a/source/RobotAPI/components/units/ForceTorqueObserver.cpp
+++ b/source/RobotAPI/components/units/ForceTorqueObserver.cpp
@@ -65,9 +65,9 @@ PropertyDefinitionsPtr ForceTorqueObserver::createPropertyDefinitions()
 }
 
 
-void ForceTorqueObserver::offerValue(std::string nodeName, const std::string &type, FramedVector3BasePtr value, const DataFieldIdentifierPtr& id)
+void ForceTorqueObserver::offerValue(std::string nodeName, const std::string &type, FramedDirectionBasePtr value, const DataFieldIdentifierPtr& id)
 {
-    FramedVector3Ptr vec = FramedVector3Ptr::dynamicCast(value);
+    FramedDirectionPtr vec = FramedDirectionPtr::dynamicCast(value);
 
     if(!existsChannel(id->channelName))
     {
@@ -96,7 +96,7 @@ void ForceTorqueObserver::offerValue(std::string nodeName, const std::string &ty
     offerOrUpdateDataField(pod_channelName, id->datafieldName + "_frame", Variant(vec->frame), "Frame of " + value->frame);
 }
 
-void armarx::ForceTorqueObserver::reportSensorValues(const std::string &sensorNodeName, const FramedVector3BasePtr &forces, const FramedVector3BasePtr &torques, const Ice::Current &)
+void armarx::ForceTorqueObserver::reportSensorValues(const std::string &sensorNodeName, const FramedDirectionBasePtr &forces, const FramedDirectionBasePtr &torques, const Ice::Current &)
 {
     ScopedLock lock(dataMutex);
 
diff --git a/source/RobotAPI/components/units/ForceTorqueObserver.h b/source/RobotAPI/components/units/ForceTorqueObserver.h
index 6cf636ad4..0272f731e 100644
--- a/source/RobotAPI/components/units/ForceTorqueObserver.h
+++ b/source/RobotAPI/components/units/ForceTorqueObserver.h
@@ -39,7 +39,7 @@ namespace armarx
         void onInitObserver();
         void onConnectObserver();
 
-        virtual void reportSensorValues(const std::string &sensorNodeName, const FramedVector3BasePtr &forces, const FramedVector3BasePtr &torques, const Ice::Current &);
+        virtual void reportSensorValues(const std::string &sensorNodeName, const FramedDirectionBasePtr &forces, const FramedDirectionBasePtr &torques, const Ice::Current &);
 
         /**
          * @see PropertyUser::createPropertyDefinitions()
@@ -56,7 +56,7 @@ namespace armarx
         std::string topicName;
 
 
-        void offerValue(std::string nodeName, const std::string &type, FramedVector3BasePtr value, const DataFieldIdentifierPtr& id);
+        void offerValue(std::string nodeName, const std::string &type, FramedDirectionBasePtr value, const DataFieldIdentifierPtr& id);
 
         // ForceTorqueUnitObserverInterface interface
     public:
diff --git a/source/RobotAPI/components/units/ForceTorqueUnitSimulation.cpp b/source/RobotAPI/components/units/ForceTorqueUnitSimulation.cpp
index 9683c8372..42fb1c8ba 100644
--- a/source/RobotAPI/components/units/ForceTorqueUnitSimulation.cpp
+++ b/source/RobotAPI/components/units/ForceTorqueUnitSimulation.cpp
@@ -38,11 +38,11 @@ void ForceTorqueUnitSimulation::onInitForceTorqueUnit()
 
     //for(std::vector<std::string>::iterator s = sensorNamesList.begin(); s != sensorNamesList.end(); s++)
     //{
-    //    forces[*s] = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), *s);
-    //    torques[*s] = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), *s);
+    //    forces[*s] = new armarx::FramedDirection(Eigen::Vector3f(0, 0, 0), *s);
+    //    torques[*s] = new armarx::FramedDirection(Eigen::Vector3f(0, 0, 0), *s);
    // }
-    forces = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), sensorName, getProperty<std::string>("AgentName").getValue());
-    torques = new armarx::FramedVector3(Eigen::Vector3f(0, 0, 0), sensorName, getProperty<std::string>("AgentName").getValue());
+    forces = new armarx::FramedDirection(Eigen::Vector3f(0, 0, 0), sensorName, getProperty<std::string>("AgentName").getValue());
+    torques = new armarx::FramedDirection(Eigen::Vector3f(0, 0, 0), sensorName, getProperty<std::string>("AgentName").getValue());
 
     ARMARX_VERBOSE << "Starting ForceTorqueUnitSimulation with " << intervalMs << " ms interval";
     simulationTask = new PeriodicTask<ForceTorqueUnitSimulation>(this, &ForceTorqueUnitSimulation::simulationFunction, intervalMs, false, "ForceTorqueUnitSimulation");
@@ -68,7 +68,7 @@ void ForceTorqueUnitSimulation::simulationFunction()
     //listenerPrx->reportSensorValues(torques);
 }
 
-void ForceTorqueUnitSimulation::setOffset(const FramedVector3BasePtr &forceOffsets, const FramedVector3BasePtr &torqueOffsets, const Ice::Current &c)
+void ForceTorqueUnitSimulation::setOffset(const FramedDirectionBasePtr &forceOffsets, const FramedDirectionBasePtr &torqueOffsets, const Ice::Current &c)
 {
     // Ignore
 }
diff --git a/source/RobotAPI/components/units/ForceTorqueUnitSimulation.h b/source/RobotAPI/components/units/ForceTorqueUnitSimulation.h
index 5ef02b36e..59c738208 100644
--- a/source/RobotAPI/components/units/ForceTorqueUnitSimulation.h
+++ b/source/RobotAPI/components/units/ForceTorqueUnitSimulation.h
@@ -76,7 +76,7 @@ namespace armarx
         virtual void onExitForceTorqueUnit();
 
         void simulationFunction();
-        virtual void setOffset(const FramedVector3BasePtr &forceOffsets, const FramedVector3BasePtr &torqueOffsets, const Ice::Current& c = ::Ice::Current());
+        virtual void setOffset(const FramedDirectionBasePtr &forceOffsets, const FramedDirectionBasePtr &torqueOffsets, const Ice::Current& c = ::Ice::Current());
         virtual void setToNull(const Ice::Current& c = ::Ice::Current());
 
         /**
@@ -85,8 +85,8 @@ namespace armarx
         virtual PropertyDefinitionsPtr createPropertyDefinitions();
 
     protected:
-        armarx::FramedVector3Ptr forces;
-        armarx::FramedVector3Ptr torques;
+        armarx::FramedDirectionPtr forces;
+        armarx::FramedDirectionPtr torques;
 
         PeriodicTask<ForceTorqueUnitSimulation>::pointer_type simulationTask;
 
diff --git a/source/RobotAPI/components/units/TCPControlUnit.cpp b/source/RobotAPI/components/units/TCPControlUnit.cpp
index c974eed9e..c0c5cf9a1 100644
--- a/source/RobotAPI/components/units/TCPControlUnit.cpp
+++ b/source/RobotAPI/components/units/TCPControlUnit.cpp
@@ -159,20 +159,20 @@ namespace armarx
             execTask->changeInterval(cycleTime);
     }
 
-    void TCPControlUnit::setTCPVelocity(const std::string &nodeSetName, const std::string &tcpName, const FramedVector3BasePtr &translationVelocity, const FramedVector3BasePtr &orientationVelocityRPY, const Ice::Current &c)
+    void TCPControlUnit::setTCPVelocity(const std::string &nodeSetName, const std::string &tcpName, const FramedDirectionBasePtr &translationVelocity, const FramedDirectionBasePtr &orientationVelocityRPY, const Ice::Current &c)
     {
         ScopedLock lock(dataMutex);
         ARMARX_CHECK_EXPRESSION_W_HINT(jointExistenceCheckRobot->hasRobotNodeSet(nodeSetName), "The robot does not have the node set: " + nodeSetName);
 
         if(translationVelocity)
-            ARMARX_VERBOSE << "Setting new Velocity for " << nodeSetName << " in frame " << translationVelocity->frame << ":\n" << FramedVector3Ptr::dynamicCast(translationVelocity)->toEigen();
+            ARMARX_VERBOSE << "Setting new Velocity for " << nodeSetName << " in frame " << translationVelocity->frame << ":\n" << FramedDirectionPtr::dynamicCast(translationVelocity)->toEigen();
         if(orientationVelocityRPY)
-            ARMARX_VERBOSE << "Orientation Velo in frame " << orientationVelocityRPY->frame << ": \n" << FramedVector3Ptr::dynamicCast(orientationVelocityRPY)->toEigen();
+            ARMARX_VERBOSE << "Orientation Velo in frame " << orientationVelocityRPY->frame << ": \n" << FramedDirectionPtr::dynamicCast(orientationVelocityRPY)->toEigen();
 
         TCPVelocityData data;
         data.nodeSetName = nodeSetName;
-        data.translationVelocity = FramedVector3Ptr::dynamicCast(translationVelocity);
-        data.orientationVelocity = FramedVector3Ptr::dynamicCast(orientationVelocityRPY);
+        data.translationVelocity = FramedDirectionPtr::dynamicCast(translationVelocity);
+        data.orientationVelocity = FramedDirectionPtr::dynamicCast(orientationVelocityRPY);
         if(tcpName.empty())
         {
             data.tcpName = jointExistenceCheckRobot->getRobotNodeSet(nodeSetName)->getTCP()->getName();
@@ -368,7 +368,7 @@ namespace armarx
 
             if(data.translationVelocity)
             {
-                data.translationVelocity = FramedVector3::ChangeFrame(localRobot, *data.translationVelocity, refFrame);
+                data.translationVelocity = FramedDirection::ChangeFrame(localRobot, *data.translationVelocity, refFrame);
                 ARMARX_INFO << deactivateSpam(1) << "Translation in " << refFrame << ": " << data.translationVelocity->toEigen();
                 m.block(0,3,3,1) = tcpNode->getGlobalPose().block(0,3,3,1) + data.translationVelocity->toEigen()*cycleTime*0.001;
             }
@@ -1146,8 +1146,8 @@ void armarx::TCPControlUnit::reportJointVelocities(const NameValueMap &jointVel,
     if(!localVelReportRobot)
         localVelReportRobot = localReportRobot->clone(localReportRobot->getName());
 //    ARMARX_DEBUG << jointVel;    FramedPoseBaseMap tcpPoses;
-    FramedVector3Map tcpTranslationVelocities;
-    FramedVector3Map tcpOrientationVelocities;
+    FramedDirectionMap tcpTranslationVelocities;
+    FramedDirectionMap tcpOrientationVelocities;
     std::string rootFrame =  localReportRobot->getRootNode()->getName();
     NameValueMap tempJointAngles = localReportRobot->getConfig()->getRobotNodeJointValueMap();
     FramedPoseBaseMap tcpPoses;
@@ -1179,7 +1179,7 @@ void armarx::TCPControlUnit::reportJointVelocities(const NameValueMap &jointVel,
 
         FramedPosePtr lastPose = FramedPosePtr::dynamicCast(tcpPoses[tcpName]);
 
-        tcpTranslationVelocities[tcpName] = new FramedVector3((currentPose.block(0,3,3,1) - lastPose->toEigen().block(0,3,3,1))/tDelta, rootFrame, localReportRobot->getName());
+        tcpTranslationVelocities[tcpName] = new FramedDirection((currentPose.block(0,3,3,1) - lastPose->toEigen().block(0,3,3,1))/tDelta, rootFrame, localReportRobot->getName());
 
         const Eigen::Matrix4f mat = currentPose * lastPose->toEigen().inverse();
 //        const Eigen::Matrix3f rot = currentPose.block(0,0,3,3) * lastPose->toEigen().block(0,0,3,3).inverse();
@@ -1187,7 +1187,7 @@ void armarx::TCPControlUnit::reportJointVelocities(const NameValueMap &jointVel,
         VirtualRobot::MathTools::eigen4f2rpy(mat, rpy);
 //        Eigen::AngleAxisf orient(rot.block<3,3>(0,0));
 
-        tcpOrientationVelocities[tcpName] = new FramedVector3(rpy/tDelta, rootFrame, localReportRobot->getName());
+        tcpOrientationVelocities[tcpName] = new FramedDirection(rpy/tDelta, rootFrame, localReportRobot->getName());
 
 
     }
diff --git a/source/RobotAPI/components/units/TCPControlUnit.h b/source/RobotAPI/components/units/TCPControlUnit.h
index eaafbd502..13506f640 100644
--- a/source/RobotAPI/components/units/TCPControlUnit.h
+++ b/source/RobotAPI/components/units/TCPControlUnit.h
@@ -105,7 +105,7 @@ namespace armarx {
          *
          * @see request(), release()
          */
-        void setTCPVelocity(const std::string &nodeSetName, const std::string &tcpName, const::armarx::FramedVector3BasePtr &translationVelocity, const::armarx::FramedVector3BasePtr &orientationVelocityRPY, const Ice::Current &c = Ice::Current());
+        void setTCPVelocity(const std::string &nodeSetName, const std::string &tcpName, const::armarx::FramedDirectionBasePtr &translationVelocity, const::armarx::FramedDirectionBasePtr &orientationVelocityRPY, const Ice::Current &c = Ice::Current());
 
         // UnitExecutionManagementInterface interface
         /**
@@ -167,8 +167,8 @@ namespace armarx {
 
         struct TCPVelocityData
         {
-            FramedVector3Ptr translationVelocity;
-            FramedVector3Ptr orientationVelocity;
+            FramedDirectionPtr translationVelocity;
+            FramedDirectionPtr orientationVelocity;
             std::string nodeSetName;
             std::string tcpName;
         };
diff --git a/source/RobotAPI/components/units/TCPControlUnitObserver.cpp b/source/RobotAPI/components/units/TCPControlUnitObserver.cpp
index 28a8fe782..9a9465a9a 100644
--- a/source/RobotAPI/components/units/TCPControlUnitObserver.cpp
+++ b/source/RobotAPI/components/units/TCPControlUnitObserver.cpp
@@ -115,18 +115,18 @@ namespace armarx {
         }
     }
 
-    void TCPControlUnitObserver::reportTCPVelocities(const FramedVector3Map &tcpTranslationVelocities, const FramedVector3Map &tcpOrientationVelocities, const Ice::Current &)
+    void TCPControlUnitObserver::reportTCPVelocities(const FramedDirectionMap &tcpTranslationVelocities, const FramedDirectionMap &tcpOrientationVelocities, const Ice::Current &)
     {
         ScopedLock lock(dataMutex);
-        FramedVector3Map::const_iterator it = tcpTranslationVelocities.begin();
+        FramedDirectionMap::const_iterator it = tcpTranslationVelocities.begin();
         for(; it != tcpTranslationVelocities.end(); it++)
         {
 
-            FramedVector3Ptr vec = FramedVector3Ptr::dynamicCast(it->second);
-            FramedVector3Ptr vecOri;
-            FramedVector3Map::const_iterator itOri = tcpOrientationVelocities.find(it->first);
+            FramedDirectionPtr vec = FramedDirectionPtr::dynamicCast(it->second);
+            FramedDirectionPtr vecOri;
+            FramedDirectionMap::const_iterator itOri = tcpOrientationVelocities.find(it->first);
             if(itOri != tcpOrientationVelocities.end())
-                vecOri = FramedVector3Ptr::dynamicCast(itOri->second);
+                vecOri = FramedDirectionPtr::dynamicCast(itOri->second);
             const std::string &tcpName = it->first;
 
             ARMARX_CHECK_EXPRESSION(vec->frame == vecOri->frame);
diff --git a/source/RobotAPI/components/units/TCPControlUnitObserver.h b/source/RobotAPI/components/units/TCPControlUnitObserver.h
index 44dc8db80..8efaf63e6 100644
--- a/source/RobotAPI/components/units/TCPControlUnitObserver.h
+++ b/source/RobotAPI/components/units/TCPControlUnitObserver.h
@@ -59,7 +59,7 @@ namespace armarx {
         // TCPControlUnitListener interface
     public:
         void reportTCPPose(const FramedPoseBaseMap &poseMap, const Ice::Current &c = Ice::Current());
-        void reportTCPVelocities(const FramedVector3Map &tcpTranslationVelocities, const FramedVector3Map &tcpOrientationVelocities, const Ice::Current &c = Ice::Current());
+        void reportTCPVelocities(const FramedDirectionMap &tcpTranslationVelocities, const FramedDirectionMap &tcpOrientationVelocities, const Ice::Current &c = Ice::Current());
 
         Mutex dataMutex;
     };
diff --git a/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXTCPMover/TCPMover.cpp b/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXTCPMover/TCPMover.cpp
index fcad49ce8..44dcd92fd 100644
--- a/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXTCPMover/TCPMover.cpp
+++ b/source/RobotAPI/gui-plugins/SensorActorWidgetsPlugin/ArmarXTCPMover/TCPMover.cpp
@@ -303,11 +303,11 @@ void TCPMover::execMove()
     vec << tcpData[selectedTCP][0], tcpData[selectedTCP][1], tcpData[selectedTCP][2];
     vec *= ui.sbFactor->value();
     const auto agentName = robotPrx->getName();
-    FramedVector3Ptr tcpVel = new FramedVector3(vec, refFrame, agentName);
+    FramedDirectionPtr tcpVel = new FramedDirection(vec, refFrame, agentName);
     Eigen::Vector3f vecOri;
     vecOri << tcpData[selectedTCP].at(3)/180.f*3.145f, tcpData[selectedTCP].at(4)/180.f*3.145f, tcpData[selectedTCP].at(5)/180.f*3.145f;
     vecOri *= ui.sbFactor->value();
-    FramedVector3Ptr tcpOri = new FramedVector3(vecOri, refFrame, agentName);
+    FramedDirectionPtr tcpOri = new FramedDirection(vecOri, refFrame, agentName);
 
     if(!ui.cbTranslation->isChecked() )
         tcpVel = NULL;
diff --git a/source/RobotAPI/interface/core/FramedPoseBase.ice b/source/RobotAPI/interface/core/FramedPoseBase.ice
index b2b75d179..e618d59af 100644
--- a/source/RobotAPI/interface/core/FramedPoseBase.ice
+++ b/source/RobotAPI/interface/core/FramedPoseBase.ice
@@ -32,7 +32,7 @@ module armarx
 {
 
     ["cpp:virtual"]
-    class FramedVector3Base extends Vector3Base
+    class FramedDirectionBase extends Vector3Base
     {
         string frame;
         string agent;
@@ -60,7 +60,7 @@ module armarx
         string agent;
     };
 
-    dictionary<string, FramedVector3Base> FramedVector3Map;
+    dictionary<string, FramedDirectionBase> FramedDirectionMap;
     dictionary<string, FramedPositionBase> FramedPositionMap;
 
     ["cpp:virtual"]
diff --git a/source/RobotAPI/interface/core/LinkedPoseBase.ice b/source/RobotAPI/interface/core/LinkedPoseBase.ice
index 156fcb33d..14f78c6d1 100644
--- a/source/RobotAPI/interface/core/LinkedPoseBase.ice
+++ b/source/RobotAPI/interface/core/LinkedPoseBase.ice
@@ -37,7 +37,7 @@ module armarx
     };
 
     ["cpp:virtual"]
-    class LinkedVector3Base extends FramedVector3Base
+    class LinkedDirectionBase extends FramedDirectionBase
     {
         SharedRobotInterface* referenceRobot;
         void changeFrame(string newFrame);
diff --git a/source/RobotAPI/interface/units/ForceTorqueUnit.ice b/source/RobotAPI/interface/units/ForceTorqueUnit.ice
index 7c11e9e46..52ef14f2d 100644
--- a/source/RobotAPI/interface/units/ForceTorqueUnit.ice
+++ b/source/RobotAPI/interface/units/ForceTorqueUnit.ice
@@ -37,7 +37,7 @@ module armarx
 {
     interface ForceTorqueUnitInterface extends armarx::SensorActorUnitInterface
     {
-        void setOffset(FramedVector3Base forceOffsets, FramedVector3Base torqueOffsets);
+        void setOffset(FramedDirectionBase forceOffsets, FramedDirectionBase torqueOffsets);
         void setToNull();
     };
 
@@ -48,7 +48,7 @@ module armarx
 			\param forces Set to zero if not available.
 			\param torques Set to zero if not available.
 		*/
-        void reportSensorValues(string sensorNodeName, FramedVector3Base forces, FramedVector3Base torques);
+        void reportSensorValues(string sensorNodeName, FramedDirectionBase forces, FramedDirectionBase torques);
     };
 
     interface ForceTorqueUnitObserverInterface extends ObserverInterface, ForceTorqueUnitListener
diff --git a/source/RobotAPI/interface/units/TCPControlUnit.ice b/source/RobotAPI/interface/units/TCPControlUnit.ice
index e470c8e2b..fafcd2735 100644
--- a/source/RobotAPI/interface/units/TCPControlUnit.ice
+++ b/source/RobotAPI/interface/units/TCPControlUnit.ice
@@ -39,7 +39,7 @@ module armarx
     interface TCPControlUnitInterface extends armarx::SensorActorUnitInterface, armarx::KinematicUnitListener
     {
         void setCycleTime(int milliseconds);
-        void setTCPVelocity(string robotNodeSetName, string tcpNodeName, FramedVector3Base translationVelocity, FramedVector3Base orientationVelocityRPY);
+        void setTCPVelocity(string robotNodeSetName, string tcpNodeName, FramedDirectionBase translationVelocity, FramedDirectionBase orientationVelocityRPY);
 
     };
 
@@ -48,7 +48,7 @@ module armarx
     interface TCPControlUnitListener
     {
         void reportTCPPose(FramedPoseBaseMap tcpPoses);
-        void reportTCPVelocities(FramedVector3Map tcpTranslationVelocities, FramedVector3Map tcpOrienationVelocities);
+        void reportTCPVelocities(FramedDirectionMap tcpTranslationVelocities, FramedDirectionMap tcpOrienationVelocities);
 
     };
 
diff --git a/source/RobotAPI/libraries/core/FramedPose.cpp b/source/RobotAPI/libraries/core/FramedPose.cpp
index 9ec280596..1f972824f 100644
--- a/source/RobotAPI/libraries/core/FramedPose.cpp
+++ b/source/RobotAPI/libraries/core/FramedPose.cpp
@@ -19,19 +19,19 @@ namespace armarx
 {
 
 
-    FramedVector3::FramedVector3()
+    FramedDirection::FramedDirection()
     {
     }
 
-    FramedVector3::FramedVector3(const FramedVector3 &source) :
+    FramedDirection::FramedDirection(const FramedDirection &source) :
         IceUtil::Shared(source),
         Vector3Base(source),
-        FramedVector3Base(source),
+        FramedDirectionBase(source),
         Vector3(source)
     {
     }
 
-    FramedVector3::FramedVector3(const Eigen::Vector3f &vec, const string &frame, const string &agent) :
+    FramedDirection::FramedDirection(const Eigen::Vector3f &vec, const string &frame, const string &agent) :
         Vector3(vec)
     {
         this->frame = frame;
@@ -39,21 +39,21 @@ namespace armarx
 
     }
 
-    FramedVector3::FramedVector3(Ice::Float x, ::Ice::Float y, ::Ice::Float z, const std::string &frame) :
+    FramedDirection::FramedDirection(Ice::Float x, ::Ice::Float y, ::Ice::Float z, const std::string &frame) :
         Vector3(x, y, z)
     {
         this->frame = frame;
     }
 
-    string FramedVector3::getFrame() const
+    string FramedDirection::getFrame() const
     {
         return frame;
     }
 
-    FramedVector3Ptr FramedVector3::ChangeFrame(const VirtualRobot::RobotPtr robot, const FramedVector3 &framedVec, const string &newFrame)
+    FramedDirectionPtr FramedDirection::ChangeFrame(const VirtualRobot::RobotPtr robot, const FramedDirection &framedVec, const string &newFrame)
     {
         if(framedVec.getFrame() == newFrame)
-            return FramedVector3Ptr::dynamicCast(framedVec.clone());
+            return FramedDirectionPtr::dynamicCast(framedVec.clone());
         if(!robot->hasRobotNode(newFrame))
             throw LocalException() << "The requested frame '" << newFrame << "' does not exists in the robot " << robot->getName();
 
@@ -63,7 +63,7 @@ namespace armarx
 
         Eigen::Vector3f newVec = rotToNewFrame.block(0,0,3,3).inverse() * vecOldFrame;
 
-        FramedVector3Ptr result = new FramedVector3();
+        FramedDirectionPtr result = new FramedDirection();
         result->x = newVec(0);
         result->y = newVec(1);
         result->z = newVec(2);
@@ -71,7 +71,7 @@ namespace armarx
         return result;
     }
 
-    void FramedVector3::changeFrame(const VirtualRobot::RobotPtr robot, const string &newFrame)
+    void FramedDirection::changeFrame(const VirtualRobot::RobotPtr robot, const string &newFrame)
     {
         if(getFrame() == newFrame)
             return;
@@ -95,13 +95,13 @@ namespace armarx
         frame = newFrame;
     }
 
-    void FramedVector3::changeToGlobal(const SharedRobotInterfacePrx &referenceRobot)
+    void FramedDirection::changeToGlobal(const SharedRobotInterfacePrx &referenceRobot)
     {
         VirtualRobot::RobotPtr sharedRobot(new RemoteRobot(referenceRobot));
         changeToGlobal(sharedRobot);
     }
 
-    void FramedVector3::changeToGlobal(const VirtualRobot::RobotPtr &referenceRobot)
+    void FramedDirection::changeToGlobal(const VirtualRobot::RobotPtr &referenceRobot)
     {
         if(frame == GlobalFrame)
             return;
@@ -114,27 +114,27 @@ namespace armarx
         agent = "";
     }
 
-    FramedVector3Ptr FramedVector3::toGlobal(const SharedRobotInterfacePrx &referenceRobot) const
+    FramedDirectionPtr FramedDirection::toGlobal(const SharedRobotInterfacePrx &referenceRobot) const
     {
         VirtualRobot::RobotPtr sharedRobot(new RemoteRobot(referenceRobot));
         return toGlobal(sharedRobot);
     }
 
-    FramedVector3Ptr FramedVector3::toGlobal(const VirtualRobot::RobotPtr &referenceRobot) const
+    FramedDirectionPtr FramedDirection::toGlobal(const VirtualRobot::RobotPtr &referenceRobot) const
     {
-        FramedVector3Ptr newPos = FramedVector3Ptr::dynamicCast(this->clone());
+        FramedDirectionPtr newPos = FramedDirectionPtr::dynamicCast(this->clone());
         newPos->changeToGlobal(referenceRobot);
         return newPos;
     }
 
-    string FramedVector3::output(const Ice::Current &c) const
+    string FramedDirection::output(const Ice::Current &c) const
     {
         std::stringstream s;
         s << toEigen() << std::endl << "frame: " << getFrame() << (agent.empty()?"": (" agent: " + agent));
         return s.str();
     }
 
-    Eigen::Matrix4f FramedVector3::__GetRotationBetweenFrames(const std::string &oldFrame, const std::string &newFrame, VirtualRobot::RobotPtr robotState)
+    Eigen::Matrix4f FramedDirection::__GetRotationBetweenFrames(const std::string &oldFrame, const std::string &newFrame, VirtualRobot::RobotPtr robotState)
     {
         Eigen::Matrix4f toNewFrame;
         if (oldFrame.compare(GlobalFrame) == 0)
@@ -148,7 +148,7 @@ namespace armarx
         return toNewFrame;
     }
 
-    int FramedVector3::readFromXML(const string &xmlData, const Ice::Current &c)
+    int FramedDirection::readFromXML(const string &xmlData, const Ice::Current &c)
     {
         int result = Vector3::readFromXML(xmlData);
 
@@ -159,7 +159,7 @@ namespace armarx
         return result;
     }
 
-    string FramedVector3::writeAsXML(const Ice::Current &c)
+    string FramedDirection::writeAsXML(const Ice::Current &c)
     {
         using namespace boost::property_tree;
         ptree pt = Variant::GetPropertyTree(Vector3::writeAsXML());
@@ -177,7 +177,7 @@ namespace armarx
         return stream.str();
     }
 
-    void FramedVector3::serialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &) const
+    void FramedDirection::serialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &) const
     {
         AbstractObjectSerializerPtr obj = AbstractObjectSerializerPtr::dynamicCast(serializer);
         Vector3::serialize(serializer);
@@ -186,7 +186,7 @@ namespace armarx
 
     }
 
-    void FramedVector3::deserialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &)
+    void FramedDirection::deserialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &)
     {
         AbstractObjectSerializerPtr obj = AbstractObjectSerializerPtr::dynamicCast(serializer);
         Vector3::deserialize(serializer);
diff --git a/source/RobotAPI/libraries/core/FramedPose.h b/source/RobotAPI/libraries/core/FramedPose.h
index 128f0eed5..423a50c32 100644
--- a/source/RobotAPI/libraries/core/FramedPose.h
+++ b/source/RobotAPI/libraries/core/FramedPose.h
@@ -50,7 +50,7 @@ namespace armarx
     {
         // variant types
         const VariantTypeId FramedPose = Variant::addTypeName("::armarx::FramedPoseBase");
-        const VariantTypeId FramedVector3 = Variant::addTypeName("::armarx::FramedVector3Base");
+        const VariantTypeId FramedDirection = Variant::addTypeName("::armarx::FramedDirectionBase");
         const VariantTypeId FramedPosition = Variant::addTypeName("::armarx::FramedPositionBase");
         const VariantTypeId FramedOrientation = Variant::addTypeName("::armarx::FramedOrientationBase");
     }
@@ -61,10 +61,10 @@ namespace armarx
 
 
     /**
-     * @class FramedVector3
+     * @class FramedDirection
      * @ingroup RobotAPI-FramedPose
      * @ingroup Variants
-     * @brief FramedVector3 is a 3 dimensional @b direction vector with a reference frame.
+     * @brief FramedDirection is a 3 dimensional @b direction vector with a reference frame.
      * The reference frame can be used to change the coordinate system to which
      * the vector relates. The difference to a FramedPosition is, that on frame
      * changing only the orientation of the vector is changed. The length of the vector
@@ -73,27 +73,27 @@ namespace armarx
      *
      * @see Vector3, FramedPosition
      */
-    class FramedVector3;
-    typedef IceInternal::Handle<FramedVector3> FramedVector3Ptr;
+    class FramedDirection;
+    typedef IceInternal::Handle<FramedDirection> FramedDirectionPtr;
 
-    class FramedVector3 :
-            virtual public FramedVector3Base,
+    class FramedDirection :
+            virtual public FramedDirectionBase,
             virtual public Vector3
     {
     public:
-        FramedVector3();
-        FramedVector3(const FramedVector3& source);
-        FramedVector3(const Eigen::Vector3f & vec, const std::string &frame, const std::string& agent );
-        FramedVector3(Ice::Float x, ::Ice::Float y, ::Ice::Float z, const std::string &frame);
+        FramedDirection();
+        FramedDirection(const FramedDirection& source);
+        FramedDirection(const Eigen::Vector3f & vec, const std::string &frame, const std::string& agent );
+        FramedDirection(Ice::Float x, ::Ice::Float y, ::Ice::Float z, const std::string &frame);
 
         std::string getFrame() const;
-        static FramedVector3Ptr ChangeFrame(const VirtualRobot::RobotPtr robot, const FramedVector3& framedVec, const std::string &newFrame);
+        static FramedDirectionPtr ChangeFrame(const VirtualRobot::RobotPtr robot, const FramedDirection& framedVec, const std::string &newFrame);
         void changeFrame(const VirtualRobot::RobotPtr robot, const std::string &newFrame);
 
         void changeToGlobal(const SharedRobotInterfacePrx& referenceRobot);
         void changeToGlobal(const VirtualRobot::RobotPtr& referenceRobot);
-        FramedVector3Ptr toGlobal(const SharedRobotInterfacePrx& referenceRobot) const;
-        FramedVector3Ptr toGlobal(const VirtualRobot::RobotPtr& referenceRobot) const;
+        FramedDirectionPtr toGlobal(const SharedRobotInterfacePrx& referenceRobot) const;
+        FramedDirectionPtr toGlobal(const VirtualRobot::RobotPtr& referenceRobot) const;
 
         // inherited from VariantDataClass
         Ice::ObjectPtr ice_clone() const
@@ -102,12 +102,12 @@ namespace armarx
         }
         VariantDataClassPtr clone(const Ice::Current& c = ::Ice::Current()) const
         {
-            return new FramedVector3(*this);
+            return new FramedDirection(*this);
         }
         std::string output(const Ice::Current& c = ::Ice::Current()) const;
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
-            return VariantType::FramedVector3;
+            return VariantType::FramedDirection;
         }
         bool validate(const Ice::Current& c = ::Ice::Current())
         {
@@ -115,7 +115,7 @@ namespace armarx
         }
 
         /**
-             * @brief Implementation of virtual function to read a FramedVector3 from an XML-file.
+             * @brief Implementation of virtual function to read a FramedDirection from an XML-file.
              *Example xml-layout:
              * @code
              *      <frame>leftHand</frame>
@@ -131,9 +131,9 @@ namespace armarx
         int readFromXML(const std::string &xmlData, const Ice::Current &c = ::Ice::Current());
         std::string writeAsXML(const Ice::Current &c = ::Ice::Current());
 
-        friend std::ostream &operator<<(std::ostream &stream, const FramedVector3& rhs)
+        friend std::ostream &operator<<(std::ostream &stream, const FramedDirection& rhs)
         {
-            stream << "FramedVector3: " << std::endl << rhs.output() << std::endl;
+            stream << "FramedDirection: " << std::endl << rhs.output() << std::endl;
             return stream;
         }
 
diff --git a/source/RobotAPI/libraries/core/LinkedPose.cpp b/source/RobotAPI/libraries/core/LinkedPose.cpp
index 09c8e05d4..d7089a569 100644
--- a/source/RobotAPI/libraries/core/LinkedPose.cpp
+++ b/source/RobotAPI/libraries/core/LinkedPose.cpp
@@ -214,17 +214,17 @@ namespace armarx {
     }
 
 
-    LinkedVector3::LinkedVector3()
+    LinkedDirection::LinkedDirection()
     {
     }
 
-    LinkedVector3::LinkedVector3(const LinkedVector3 &source) :
+    LinkedDirection::LinkedDirection(const LinkedDirection &source) :
         IceUtil::Shared(source),
         Vector3Base(source),
-        FramedVector3Base(source),
-        LinkedVector3Base(source),
+        FramedDirectionBase(source),
+        LinkedDirectionBase(source),
         Vector3(source),
-        FramedVector3(source)
+        FramedDirection(source)
     {
         referenceRobot = source.referenceRobot;
         if(referenceRobot)
@@ -234,14 +234,14 @@ namespace armarx {
         }
     }
 
-    LinkedVector3::LinkedVector3(const Eigen::Vector3f &v, const std::string &frame, const SharedRobotInterfacePrx &referenceRobot) :
-        FramedVector3(v, frame, referenceRobot->getName())
+    LinkedDirection::LinkedDirection(const Eigen::Vector3f &v, const std::string &frame, const SharedRobotInterfacePrx &referenceRobot) :
+        FramedDirection(v, frame, referenceRobot->getName())
     {
         referenceRobot->ref();
         this->referenceRobot = referenceRobot;
     }
 
-    LinkedVector3::~LinkedVector3()
+    LinkedDirection::~LinkedDirection()
     {
         try{
             if(referenceRobot)
@@ -255,50 +255,50 @@ namespace armarx {
         }
     }
 
-    void LinkedVector3::changeFrame(const std::string &newFrame, const Ice::Current &c)
+    void LinkedDirection::changeFrame(const std::string &newFrame, const Ice::Current &c)
     {
         if(newFrame == frame)
             return;
 
         VirtualRobot::RobotPtr sharedRobot(new RemoteRobot(referenceRobot));
 
-        FramedVector3Ptr frVec = ChangeFrame(sharedRobot, *this, newFrame);
+        FramedDirectionPtr frVec = ChangeFrame(sharedRobot, *this, newFrame);
         x = frVec->x;
         y = frVec->y;
         z = frVec->z;
         frame = frVec->frame;
     }
 
-    int LinkedVector3::readFromXML(const std::string &xmlData, const Ice::Current &c)
+    int LinkedDirection::readFromXML(const std::string &xmlData, const Ice::Current &c)
     {
-        throw LocalException("LinkedVector3 cannot be serialized! Serialize FramedVector3");
+        throw LocalException("LinkedDirection cannot be serialized! Serialize FramedDirection");
 
     }
 
-    std::string LinkedVector3::writeAsXML(const Ice::Current &c)
+    std::string LinkedDirection::writeAsXML(const Ice::Current &c)
     {
-        throw LocalException("LinkedVector3 cannot be deserialized! Serialize FramedVector3");
+        throw LocalException("LinkedDirection cannot be deserialized! Serialize FramedDirection");
 
     }
 
-    void LinkedVector3::serialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &) const
+    void LinkedDirection::serialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &) const
     {
-        throw LocalException("LinkedVector3 cannot be serialized! Serialize FramedVector3");
+        throw LocalException("LinkedDirection cannot be serialized! Serialize FramedDirection");
     }
 
-    void LinkedVector3::deserialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &)
+    void LinkedDirection::deserialize(const ObjectSerializerBasePtr &serializer, const Ice::Current &)
     {
-        throw LocalException("LinkedVector3 cannot be deserialized! Deserialize FramedVector3");
+        throw LocalException("LinkedDirection cannot be deserialized! Deserialize FramedDirection");
     }
 
-    void LinkedVector3::ice_postUnmarshal()
+    void LinkedDirection::ice_postUnmarshal()
     {
         if(referenceRobot)
         {
 //            ARMARX_WARNING_S << "Calling referenceRobot->ref() in __read(IceInternal::BasicStream *__is, bool __rid) of LinkedPose";
             referenceRobot->ref();
         }
-        FramedVector3::ice_postUnmarshal();
+        FramedDirection::ice_postUnmarshal();
     }
 
 
diff --git a/source/RobotAPI/libraries/core/LinkedPose.h b/source/RobotAPI/libraries/core/LinkedPose.h
index 8c8db0ccd..58a2ef675 100644
--- a/source/RobotAPI/libraries/core/LinkedPose.h
+++ b/source/RobotAPI/libraries/core/LinkedPose.h
@@ -46,7 +46,7 @@ namespace armarx
     {
         // variant types
         const VariantTypeId LinkedPose = Variant::addTypeName("::armarx::LinkedPoseBase");
-        const VariantTypeId LinkedVector3 = Variant::addTypeName("::armarx::LinkedVector3Base");
+        const VariantTypeId LinkedDirection = Variant::addTypeName("::armarx::LinkedDirectionBase");
     }
 
 
@@ -123,22 +123,22 @@ namespace armarx
 
 
     /**
-     * @class LinkedVector3 is a direction vector (NOT a position vector) with an attached robotstate proxy
+     * @class LinkedDirection is a direction vector (NOT a position vector) with an attached robotstate proxy
      * for frame changes.
      * @ingroup Variants
      * @ingroup RobotAPI-FramedPose
-     * @brief The LinkedVector3 class
+     * @brief The LinkedDirection class
      */
-    class LinkedVector3 :
-            virtual public LinkedVector3Base,
-            virtual public FramedVector3
+    class LinkedDirection :
+            virtual public LinkedDirectionBase,
+            virtual public FramedDirection
     {
     public:
-        LinkedVector3();
-        LinkedVector3(const LinkedVector3& source);
-        LinkedVector3(const Eigen::Vector3f& v, const std::string& frame, const SharedRobotInterfacePrx& referenceRobot);
+        LinkedDirection();
+        LinkedDirection(const LinkedDirection& source);
+        LinkedDirection(const Eigen::Vector3f& v, const std::string& frame, const SharedRobotInterfacePrx& referenceRobot);
 
-        virtual ~LinkedVector3();
+        virtual ~LinkedDirection();
 
         void changeFrame(const std::string &newFrame, const Ice::Current &c = Ice::Current());
 
@@ -150,19 +150,19 @@ namespace armarx
 
         VariantDataClassPtr clone(const Ice::Current& c = ::Ice::Current()) const
         {
-            return new LinkedVector3(*this);
+            return new LinkedDirection(*this);
         }
 
         std::string output(const Ice::Current& c = ::Ice::Current()) const
         {
             std::stringstream s;
-            s << FramedVector3::toEigen() << std::endl << "reference robot: " << referenceRobot;
+            s << FramedDirection::toEigen() << std::endl << "reference robot: " << referenceRobot;
             return s.str();
         }
 
         VariantTypeId getType(const Ice::Current& c = ::Ice::Current()) const
         {
-            return VariantType::LinkedVector3;
+            return VariantType::LinkedDirection;
         }
 
         bool validate(const Ice::Current& c = ::Ice::Current())
@@ -174,9 +174,9 @@ namespace armarx
         int readFromXML(const std::string &xmlData, const Ice::Current &c = ::Ice::Current());
         std::string writeAsXML(const Ice::Current &c = ::Ice::Current());
 
-        friend std::ostream &operator<<(std::ostream &stream, const LinkedVector3& rhs)
+        friend std::ostream &operator<<(std::ostream &stream, const LinkedDirection& rhs)
         {
-            stream << "LinkedVector3: " << std::endl << rhs.output() << std::endl;
+            stream << "LinkedDirection: " << std::endl << rhs.output() << std::endl;
             return stream;
         };
 
@@ -189,7 +189,7 @@ namespace armarx
 
 
     };
-    typedef IceInternal::Handle<LinkedVector3> LinkedVector3Ptr;
+    typedef IceInternal::Handle<LinkedDirection> LinkedDirectionPtr;
 }
 
 #endif
diff --git a/source/RobotAPI/libraries/core/RobotAPIObjectFactories.h b/source/RobotAPI/libraries/core/RobotAPIObjectFactories.h
index fdb7d914c..f4ded6efc 100644
--- a/source/RobotAPI/libraries/core/RobotAPIObjectFactories.h
+++ b/source/RobotAPI/libraries/core/RobotAPIObjectFactories.h
@@ -60,25 +60,25 @@ namespace armarx
         {}
     };
 
-    class FramedVector3ObjectFactory : public Ice::ObjectFactory
+    class FramedDirectionObjectFactory : public Ice::ObjectFactory
     {
     public:
         virtual Ice::ObjectPtr create(const std::string& type)
         {
-            assert(type == armarx::FramedVector3Base::ice_staticId());
-            return new FramedVector3();
+            assert(type == armarx::FramedDirectionBase::ice_staticId());
+            return new FramedDirection();
         }
         virtual void destroy()
         {}
     };
 
-    class LinkedVector3ObjectFactory : public Ice::ObjectFactory
+    class LinkedDirectionObjectFactory : public Ice::ObjectFactory
     {
     public:
         virtual Ice::ObjectPtr create(const std::string& type)
         {
-            assert(type == armarx::LinkedVector3Base::ice_staticId());
-            return new LinkedVector3();
+            assert(type == armarx::LinkedDirectionBase::ice_staticId());
+            return new LinkedDirection();
         }
         virtual void destroy()
         {}
@@ -160,8 +160,8 @@ namespace armarx
                 ObjectFactoryMap map;
 
                 map.insert(std::make_pair(armarx::Vector3Base::ice_staticId(), new Vector3ObjectFactory));
-                map.insert(std::make_pair(armarx::FramedVector3Base::ice_staticId(), new FramedVector3ObjectFactory));
-                map.insert(std::make_pair(armarx::LinkedVector3Base::ice_staticId(), new LinkedVector3ObjectFactory));
+                map.insert(std::make_pair(armarx::FramedDirectionBase::ice_staticId(), new FramedDirectionObjectFactory));
+                map.insert(std::make_pair(armarx::LinkedDirectionBase::ice_staticId(), new LinkedDirectionObjectFactory));
                 map.insert(std::make_pair(armarx::QuaternionBase::ice_staticId(), new QuaternionObjectFactory));
                 map.insert(std::make_pair(armarx::PoseBase::ice_staticId(), new PoseObjectFactory));
                 map.insert(std::make_pair(armarx::FramedPoseBase::ice_staticId(), new FramedPoseObjectFactory));
diff --git a/source/RobotAPI/libraries/core/checks/ConditionCheckMagnitudeChecks.cpp b/source/RobotAPI/libraries/core/checks/ConditionCheckMagnitudeChecks.cpp
index 8ab3c0e87..dccad8f96 100644
--- a/source/RobotAPI/libraries/core/checks/ConditionCheckMagnitudeChecks.cpp
+++ b/source/RobotAPI/libraries/core/checks/ConditionCheckMagnitudeChecks.cpp
@@ -6,8 +6,8 @@ namespace armarx {
     {
         setNumberParameters(1);
         addSupportedType(VariantType::Vector3, createParameterTypeList(1, VariantType::Float));
-        addSupportedType(VariantType::FramedVector3, createParameterTypeList(1, VariantType::Float));
-        addSupportedType(VariantType::LinkedVector3, createParameterTypeList(1, VariantType::Float));
+        addSupportedType(VariantType::FramedDirection, createParameterTypeList(1, VariantType::Float));
+        addSupportedType(VariantType::LinkedDirection, createParameterTypeList(1, VariantType::Float));
 
     }
 
@@ -34,17 +34,17 @@ namespace armarx {
             return (vec).norm() > getParameter(0).getFloat();
         }
 
-        if(type == VariantType::FramedVector3)
+        if(type == VariantType::FramedDirection)
         {
-            FramedVector3Ptr fV1 = value.getClass<FramedVector3>();
-            Eigen::Vector3f vec = value.getClass<FramedVector3>()->toEigen();
+            FramedDirectionPtr fV1 = value.getClass<FramedDirection>();
+            Eigen::Vector3f vec = value.getClass<FramedDirection>()->toEigen();
             return (vec).norm() > getParameter(0).getFloat();
         }
-        if(type == VariantType::LinkedVector3)
+        if(type == VariantType::LinkedDirection)
         {
-            LinkedVector3Ptr lV1 = value.getClass<LinkedVector3>();
+            LinkedDirectionPtr lV1 = value.getClass<LinkedDirection>();
 
-            Eigen::Vector3f vec = value.getClass<LinkedVector3>()->toEigen();
+            Eigen::Vector3f vec = value.getClass<LinkedDirection>()->toEigen();
             return (vec).norm() > getParameter(0).getFloat();
         }
 
@@ -56,8 +56,8 @@ namespace armarx {
     {
         setNumberParameters(1);
         addSupportedType(VariantType::Vector3, createParameterTypeList(1, VariantType::Float));
-        addSupportedType(VariantType::FramedVector3, createParameterTypeList(1, VariantType::Float));
-        addSupportedType(VariantType::LinkedVector3, createParameterTypeList(1, VariantType::Float));
+        addSupportedType(VariantType::FramedDirection, createParameterTypeList(1, VariantType::Float));
+        addSupportedType(VariantType::LinkedDirection, createParameterTypeList(1, VariantType::Float));
 
     }
 
@@ -84,16 +84,16 @@ namespace armarx {
             return (vec).norm() < getParameter(0).getFloat();
         }
 
-        if(type == VariantType::FramedVector3)
+        if(type == VariantType::FramedDirection)
         {
-//            FramedVector3Ptr fV1 = value.getClass<FramedVector3>();
-            Eigen::Vector3f vec = value.getClass<FramedVector3>()->toEigen();
+//            FramedDirectionPtr fV1 = value.getClass<FramedDirection>();
+            Eigen::Vector3f vec = value.getClass<FramedDirection>()->toEigen();
             return (vec).norm() < getParameter(0).getFloat();
         }
-        if(type == VariantType::LinkedVector3)
+        if(type == VariantType::LinkedDirection)
         {
-//            LinkedVector3Ptr lV1 = value.getClass<LinkedVector3>();
-            Eigen::Vector3f vec = value.getClass<LinkedVector3>()->toEigen();
+//            LinkedDirectionPtr lV1 = value.getClass<LinkedDirection>();
+            Eigen::Vector3f vec = value.getClass<LinkedDirection>()->toEigen();
             return (vec).norm() < getParameter(0).getFloat();
         }
 
@@ -104,8 +104,8 @@ namespace armarx {
     {
         setNumberParameters(2);
         addSupportedType(VariantType::Vector3, createParameterTypeList(2, VariantType::Float, VariantType::Float));
-        addSupportedType(VariantType::FramedVector3, createParameterTypeList(2, VariantType::Float, VariantType::Float));
-        addSupportedType(VariantType::LinkedVector3, createParameterTypeList(2, VariantType::Float, VariantType::Float));
+        addSupportedType(VariantType::FramedDirection, createParameterTypeList(2, VariantType::Float, VariantType::Float));
+        addSupportedType(VariantType::LinkedDirection, createParameterTypeList(2, VariantType::Float, VariantType::Float));
 
     }
 
@@ -131,17 +131,17 @@ namespace armarx {
             return ((vec).norm() > getParameter(0).getFloat()) && ((vec).norm() < getParameter(1).getFloat());
         }
 
-        if(type == VariantType::FramedVector3)
+        if(type == VariantType::FramedDirection)
         {
-//            FramedVector3Ptr fV1 = value.getClass<FramedVector3>();
-            Eigen::Vector3f vec = value.getClass<FramedVector3>()->toEigen();
+//            FramedDirectionPtr fV1 = value.getClass<FramedDirection>();
+            Eigen::Vector3f vec = value.getClass<FramedDirection>()->toEigen();
             return ((vec).norm() > getParameter(0).getFloat()) && ((vec).norm() < getParameter(1).getFloat());
         }
 
-        if(type == VariantType::LinkedVector3)
+        if(type == VariantType::LinkedDirection)
         {
-//            LinkedVector3Ptr lV1 = value.getClass<LinkedVector3>();
-            Eigen::Vector3f vec = value.getClass<LinkedVector3>()->toEigen();
+//            LinkedDirectionPtr lV1 = value.getClass<LinkedDirection>();
+            Eigen::Vector3f vec = value.getClass<LinkedDirection>()->toEigen();
             return ((vec).norm() > getParameter(0).getFloat()) && ((vec).norm() < getParameter(1).getFloat());
         }
 
diff --git a/source/RobotAPI/libraries/core/observerfilters/OffsetFilter.h b/source/RobotAPI/libraries/core/observerfilters/OffsetFilter.h
index e7b25a820..db05fc811 100644
--- a/source/RobotAPI/libraries/core/observerfilters/OffsetFilter.h
+++ b/source/RobotAPI/libraries/core/observerfilters/OffsetFilter.h
@@ -82,13 +82,13 @@ namespace armarx {
                         double newValue = dataHistory.rbegin()->second->getDouble() - initialValue->getDouble();
                         newVariant = new Variant(newValue);
                     }
-                    else if(type == VariantType::FramedVector3)
+                    else if(type == VariantType::FramedDirection)
                     {
-                        FramedVector3Ptr vec = FramedVector3Ptr::dynamicCast(currentValue->get<FramedVector3>());
-                        FramedVector3Ptr intialVec = FramedVector3Ptr::dynamicCast(initialValue->get<FramedVector3>());
+                        FramedDirectionPtr vec = FramedDirectionPtr::dynamicCast(currentValue->get<FramedDirection>());
+                        FramedDirectionPtr intialVec = FramedDirectionPtr::dynamicCast(initialValue->get<FramedDirection>());
                         Eigen::Vector3f newValue =  vec->toEigen() - intialVec->toEigen();
 
-                        newVariant = new Variant(new FramedVector3(newValue, vec->frame, vec->agent));
+                        newVariant = new Variant(new FramedDirection(newValue, vec->frame, vec->agent));
                     }
                     else if(type == VariantType::FramedPosition)
                     {
@@ -114,7 +114,7 @@ namespace armarx {
                 result.push_back(VariantType::Int);
                 result.push_back(VariantType::Float);
                 result.push_back(VariantType::Double);
-                result.push_back(VariantType::FramedVector3);
+                result.push_back(VariantType::FramedDirection);
                 result.push_back(VariantType::FramedPosition);
                 result.push_back(VariantType::MatrixFloat);
                 return result;
diff --git a/source/RobotAPI/libraries/core/observerfilters/PoseMedianFilter.h b/source/RobotAPI/libraries/core/observerfilters/PoseMedianFilter.h
index 2744da772..7a6c80fa8 100644
--- a/source/RobotAPI/libraries/core/observerfilters/PoseMedianFilter.h
+++ b/source/RobotAPI/libraries/core/observerfilters/PoseMedianFilter.h
@@ -33,7 +33,7 @@ namespace armarx {
 
                 VariantTypeId type = dataHistory.begin()->second->getType();
 
-                if ((type == VariantType::Vector3) || (type == VariantType::FramedVector3) || (type == VariantType::FramedPosition))
+                if ((type == VariantType::Vector3) || (type == VariantType::FramedDirection) || (type == VariantType::FramedPosition))
                 {
 
                     Eigen::Vector3f vec;
@@ -41,9 +41,9 @@ namespace armarx {
                     std::string frame = "";
                     std::string agent = "";
                     VariantPtr var = VariantPtr::dynamicCast(dataHistory.begin()->second);
-                    if (type == VariantType::FramedVector3)
+                    if (type == VariantType::FramedDirection)
                     {
-                        FramedVector3Ptr p = var->get<FramedVector3>();
+                        FramedDirectionPtr p = var->get<FramedDirection>();
                         frame = p->frame;
                         agent = p->agent;
                     }
@@ -70,10 +70,10 @@ namespace armarx {
                         Vector3Ptr vecVar = new Vector3(vec);
                         return new Variant(vecVar);
                     }
-                    else if (type == VariantType::FramedVector3)
+                    else if (type == VariantType::FramedDirection)
                     {
 
-                        FramedVector3Ptr vecVar = new FramedVector3(vec, frame, agent);
+                        FramedDirectionPtr vecVar = new FramedDirection(vec, frame, agent);
                         return new Variant(vecVar);
                     }
                     else if (type == VariantType::FramedPosition)
@@ -101,14 +101,14 @@ namespace armarx {
             }
 
             /**
-             * @brief This filter supports: Vector3, FramedVector3, FramedPosition
+             * @brief This filter supports: Vector3, FramedDirection, FramedPosition
              * @return List of VariantTypes
              */
             ParameterTypeList getSupportedTypes(const Ice::Current &c) const
             {
                 ParameterTypeList result = MedianFilter::getSupportedTypes(c);
                 result.push_back(VariantType::Vector3);
-                result.push_back(VariantType::FramedVector3);
+                result.push_back(VariantType::FramedDirection);
                 result.push_back(VariantType::FramedPosition);
                 return result;
             }
diff --git a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp
index a5c40b50f..d0ffd0c33 100644
--- a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp
+++ b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp
@@ -164,8 +164,8 @@ void RobotStateObserver::updateNodeVelocities(const NameValueMap &jointVel)
         velocityReportRobot = robot->clone(robot->getName());
 //    IceUtil::Time start = IceUtil::Time::now();
 //    ARMARX_INFO << jointVel;    FramedPoseBaseMap tcpPoses;
-    FramedVector3Map tcpTranslationVelocities;
-    FramedVector3Map tcpOrientationVelocities;
+    FramedDirectionMap tcpTranslationVelocities;
+    FramedDirectionMap tcpOrientationVelocities;
     std::string rootFrame =  robot->getRootNode()->getName();
     NameValueMap tempJointAngles = robot->getConfig()->getRobotNodeJointValueMap();
     FramedPoseBaseMap tcpPoses;
@@ -200,13 +200,13 @@ void RobotStateObserver::updateNodeVelocities(const NameValueMap &jointVel)
 
         FramedPosePtr lastPose = FramedPosePtr::dynamicCast(tcpPoses[tcpName]);
 
-        tcpTranslationVelocities[tcpName] = new FramedVector3((currentPose.block(0,3,3,1) - lastPose->toEigen().block(0,3,3,1))/tDelta, rootFrame, robot->getName());
+        tcpTranslationVelocities[tcpName] = new FramedDirection((currentPose.block(0,3,3,1) - lastPose->toEigen().block(0,3,3,1))/tDelta, rootFrame, robot->getName());
 
         mat = currentPose * lastPose->toEigen().inverse();
 
         VirtualRobot::MathTools::eigen4f2rpy(mat, rpy);
 
-        tcpOrientationVelocities[tcpName] = new FramedVector3(rpy/tDelta, rootFrame, robot->getName());
+        tcpOrientationVelocities[tcpName] = new FramedDirection(rpy/tDelta, rootFrame, robot->getName());
 
 
     }
@@ -215,17 +215,17 @@ void RobotStateObserver::updateNodeVelocities(const NameValueMap &jointVel)
     updateVelocityDatafields(tcpTranslationVelocities, tcpOrientationVelocities);
 }
 
-void RobotStateObserver::updateVelocityDatafields(const FramedVector3Map &tcpTranslationVelocities, const FramedVector3Map &tcpOrientationVelocities)
+void RobotStateObserver::updateVelocityDatafields(const FramedDirectionMap &tcpTranslationVelocities, const FramedDirectionMap &tcpOrientationVelocities)
 {
-    FramedVector3Map::const_iterator it = tcpTranslationVelocities.begin();
+    FramedDirectionMap::const_iterator it = tcpTranslationVelocities.begin();
     for(; it != tcpTranslationVelocities.end(); it++)
     {
 
-        FramedVector3Ptr vec = FramedVector3Ptr::dynamicCast(it->second);
-        FramedVector3Ptr vecOri;
-        FramedVector3Map::const_iterator itOri = tcpOrientationVelocities.find(it->first);
+        FramedDirectionPtr vec = FramedDirectionPtr::dynamicCast(it->second);
+        FramedDirectionPtr vecOri;
+        FramedDirectionMap::const_iterator itOri = tcpOrientationVelocities.find(it->first);
         if(itOri != tcpOrientationVelocities.end())
-            vecOri = FramedVector3Ptr::dynamicCast(itOri->second);
+            vecOri = FramedDirectionPtr::dynamicCast(itOri->second);
         const std::string &tcpName = it->first;
 
         ARMARX_CHECK_EXPRESSION(vec->frame == vecOri->frame);
diff --git a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h
index fbd074b6d..a4f230e58 100644
--- a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h
+++ b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h
@@ -91,7 +91,7 @@ namespace armarx
         void updateNodeVelocities(const NameValueMap &jointVel);
     protected:
 
-        void updateVelocityDatafields(const FramedVector3Map &tcpTranslationVelocities, const FramedVector3Map &tcpOrientationVelocities);
+        void updateVelocityDatafields(const FramedDirectionMap &tcpTranslationVelocities, const FramedDirectionMap &tcpOrientationVelocities);
 
         void udpatePoseDatafields(const FramedPoseBaseMap &poseMap);
     private:
diff --git a/source/RobotAPI/statecharts/deprecated/motioncontrol/ZeroForceControl.cpp b/source/RobotAPI/statecharts/deprecated/motioncontrol/ZeroForceControl.cpp
index 4ada24890..0c32196cd 100644
--- a/source/RobotAPI/statecharts/deprecated/motioncontrol/ZeroForceControl.cpp
+++ b/source/RobotAPI/statecharts/deprecated/motioncontrol/ZeroForceControl.cpp
@@ -70,8 +70,8 @@ namespace armarx {
         Eigen::Vector3f null(3);
         null.setZero();
         setLocal("currentSensitivity", 0.0f);
-        setLocal("currentVelocity", new FramedVector3(null, getInput<std::string>("tcpName")));
-        setLocal("currentAcc", new FramedVector3(null, getInput<std::string>("tcpName")));
+        setLocal("currentVelocity", new FramedDirection(null, getInput<std::string>("tcpName")));
+        setLocal("currentAcc", new FramedDirection(null, getInput<std::string>("tcpName")));
         setLocal("timestamp", (float)IceUtil::Time::now().toMilliSecondsDouble());
     }
 
@@ -99,10 +99,10 @@ namespace armarx {
 
 
         addToInput("currentSensitivity",VariantType::Float, false);
-        addToInput("currentVelocity",VariantType::FramedVector3, false);
-        addToInput("currentAcc",VariantType::FramedVector3, false);
-        addToInput("currentForce",VariantType::FramedVector3, false);
-        addToInput("currentTorque",VariantType::FramedVector3, false);
+        addToInput("currentVelocity",VariantType::FramedDirection, false);
+        addToInput("currentAcc",VariantType::FramedDirection, false);
+        addToInput("currentForce",VariantType::FramedDirection, false);
+        addToInput("currentTorque",VariantType::FramedDirection, false);
         addToInput("timestamp",VariantType::Float, false);
 
         addToOutput("currentSensitivity",VariantType::Float, false);
@@ -118,10 +118,10 @@ namespace armarx {
         IceUtil::Time duration = IceUtil::Time::now() - IceUtil::Time::milliSecondsDouble(getInput<float>("timestamp"));
 
         std::string robotNodeSetName = getInput<std::string>("robotNodeSetName");
-//        FramedVector3Ptr vel = getInput<FramedVector3>("currentVelocity");
-        FramedVector3Ptr vel = getInput<FramedVector3>("currentVelocity");
-        FramedVector3Ptr curAcc = getInput<FramedVector3>("currentAcc");
-        FramedVector3Ptr curForce = getInput<FramedVector3>("currentForce");
+//        FramedDirectionPtr vel = getInput<FramedDirection>("currentVelocity");
+        FramedDirectionPtr vel = getInput<FramedDirection>("currentVelocity");
+        FramedDirectionPtr curAcc = getInput<FramedDirection>("currentAcc");
+        FramedDirectionPtr curForce = getInput<FramedDirection>("currentForce");
         ARMARX_CHECK_EXPRESSION(vel->frame == curAcc->frame);
         ARMARX_CHECK_EXPRESSION(vel->frame == curForce->frame);
         float forceThreshold = 2.0f;
@@ -140,10 +140,10 @@ namespace armarx {
         newVel = vel->toEigen() + newAcc * duration.toMilliSecondsDouble()*0.001;
 
 
-        setOutput("currentAcc", Variant(new FramedVector3(newAcc, curAcc->frame)));
+        setOutput("currentAcc", Variant(new FramedDirection(newAcc, curAcc->frame)));
         RobotStatechartContext* c = getContext<RobotStatechartContext>();
 
-        c->tcpControlPrx->setTCPVelocity(robotNodeSetName, "", new FramedVector3(newVel, vel->frame), NULL);
+        c->tcpControlPrx->setTCPVelocity(robotNodeSetName, "", new FramedDirection(newVel, vel->frame), NULL);
     }
 
     void ZeroForceControlForceToAcc::onExit()
-- 
GitLab