From 2639567df65972eb231421ed8f6495793cb1493b Mon Sep 17 00:00:00 2001
From: Markus Swarowsky <markus.swarowsky@student.kit.edu>
Date: Tue, 28 Feb 2017 19:17:09 +0100
Subject: [PATCH] removed raw value support for the KinematicDataUnit

---
 .../DataUnits/KinematicDataUnit.h             | 93 ++++++++++++++-----
 1 file changed, 71 insertions(+), 22 deletions(-)

diff --git a/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h b/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h
index 43c57f9b2..fb5c6851f 100644
--- a/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h
+++ b/source/RobotAPI/libraries/RobotRTControllers/DataUnits/KinematicDataUnit.h
@@ -36,26 +36,43 @@ namespace armarx
     {
     public:
         virtual const std::vector<std::string>& getJointNames() const = 0;
+
         virtual std::vector<const float*> getJointAngles(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointVelocities(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointTorques(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointCurrents(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointMotorTemperatures(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const float*> getJointGearTemperatures(const std::vector<std::string>& joints) const = 0;
 
-        virtual std::vector<const int32_t*> getJointRawPositionValues(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int32_t*> getJointRawVelocityValues(const std::vector<std::string>& joints) const = 0;
+        virtual std::vector<const int32_t*>
+        getJointRawPositionValues(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int32_t*>
+        getJointRawVelocityValues(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const int16_t*> getJointRawCurrentValues(const std::vector<std::string>& joints) const = 0;
+
         virtual std::vector<const int32_t*> getJointRawTorqueValues(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int32_t*> getJointRawGearTemperatures(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int32_t*> getJointRawAbsPositionValues(const std::vector<std::string>& joints) const = 0;
-        virtual std::vector<const int16_t*> getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int32_t*>
+        getJointRawGearTemperatures(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int32_t*>
+        getJointRawAbsPositionValues(const std::vector<std::string>& joints) const = 0;
+
+        virtual std::vector<const int16_t*>
+        getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const = 0;
     };
 
-    class KinematicDataUnitPtrProvider: virtual public KinematicDataUnitInterface
+    class KinematicDataUnitPtrProvider : virtual public KinematicDataUnitInterface
     {
     public:
-        KinematicDataUnitPtrProvider(const std::vector<std::string>& jointNames):
+        KinematicDataUnitPtrProvider(const std::vector<std::string>& jointNames) :
             jointAngles(jointNames.size(), nullptr),
             jointVelocites(jointNames.size(), nullptr),
             jointTorques(jointNames.size(), nullptr),
@@ -71,79 +88,109 @@ namespace armarx
             jointRawAbsPositionValues(jointNames.size(), nullptr),
             jointRawMotorTemperatureValues(jointNames.size(), nullptr),
             jointNames {jointNames},
-                   jointIndices {toIndexMap(jointNames)}
-        {}
+        jointIndices {toIndexMap(jointNames)} {}
+
         KinematicDataUnitPtrProvider() = default;
+
         KinematicDataUnitPtrProvider(const KinematicDataUnitPtrProvider&) = default;
 
+        void setJointNames(std::vector<std::string>& names)
+        {
+            jointNames = names;
+            jointIndices = toIndexMap(names);
+
+            jointAngles = std::vector<float*>(names.size(), nullptr);
+            jointVelocites = std::vector<float*>(jointNames.size(), nullptr);
+            jointTorques = std::vector<float*>(jointNames.size(), nullptr);
+            jointCurrents = std::vector<float*>(jointNames.size(), nullptr);
+            jointMotorTemperatures = std::vector<float*>(jointNames.size(), nullptr);
+            jointGearTemperatures = std::vector<float*>(jointNames.size(), nullptr);
+            jointAbsPositions = std::vector<float*>(jointNames.size(), nullptr);
+        }
+
         const std::vector<std::string>& getJointNames() const
         {
             return jointNames;
         }
+
         std::size_t getJointIndex(const std::string& joint) const
         {
             return jointIndices.at(joint);
         }
 
-        virtual std::vector<const float*> getJointAngles(const std::vector<std::string>& joints)const
+        virtual std::vector<const float*> getJointAngles(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointAngles);
         }
-        virtual std::vector<const float*> getJointVelocities(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointVelocities(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointVelocites);
         }
-        virtual std::vector<const float*> getJointTorques(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointTorques(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointTorques);
         }
-        virtual std::vector<const float*> getJointCurrents(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointCurrents(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointCurrents);
         }
-        virtual std::vector<const float*> getJointMotorTemperatures(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointMotorTemperatures(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointMotorTemperatures);
         }
-        virtual std::vector<const float*> getJointGearTemperatures(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointGearTemperatures(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointGearTemperatures);
         }
-        virtual std::vector<const float*> getJointAbsPositions(const std::vector<std::string>& joints)const
+
+        virtual std::vector<const float*> getJointAbsPositions(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointAbsPositions);
         }
+
         virtual std::vector<const int32_t*> getJointRawPositionValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawPositionValues);
         }
+
         virtual std::vector<const int32_t*> getJointRawVelocityValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawVelocityValues);
         }
+
         virtual std::vector<const int16_t*> getJointRawCurrentValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawCurrentValues);
         }
+
         virtual std::vector<const int32_t*> getJointRawTorqueValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawTorqueValues);
         }
+
         virtual std::vector<const int32_t*> getJointRawGearTemperatures(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawGearTemperatures);
         }
-        virtual std::vector<const int32_t*> getJointRawAbsPositionValues(const std::vector<std::string>& joints) const
+
+        virtual std::vector<const int32_t*>
+        getJointRawAbsPositionValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawAbsPositionValues);
         }
-        virtual std::vector<const int16_t*> getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const
+
+        virtual std::vector<const int16_t*>
+        getJointRawMotorTemperatureValues(const std::vector<std::string>& joints) const
         {
             return getPointers(joints, jointRawMotorTemperatureValues);
         }
 
 
-
     protected:
         std::vector<float*> jointAngles;
         std::vector<float*> jointVelocites;
@@ -162,7 +209,8 @@ namespace armarx
         std::vector<int16_t*> jointRawMotorTemperatureValues;
     private:
         template<class T>
-        std::vector<const T*> getPointers(const std::vector<std::string>& joints, const std::vector<T*>& targets) const
+        std::vector<const T*>
+        getPointers(const std::vector<std::string>& joints, const std::vector<T*>& targets) const
         {
             std::vector<const T*> result;
             result.reserve(joints.size());
@@ -175,8 +223,9 @@ namespace armarx
             );
             return result;
         }
-        const std::vector<std::string> jointNames;
-        const std::unordered_map<std::string, std::size_t> jointIndices;
+
+        std::vector<std::string> jointNames;
+        std::unordered_map<std::string, std::size_t> jointIndices;
     };
 }
 
-- 
GitLab