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