diff --git a/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.cpp b/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.cpp index a68eb49d875c6d8eece619f72e2b6f64bd82a08a..96b0f863c87245ddf16d84c983e08407f39e3331 100644 --- a/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.cpp +++ b/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.cpp @@ -56,7 +56,7 @@ namespace armarx void CyberGloveObserver::reportGloveValues(const CyberGloveValues& gloveValues, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); IceUtil::Time now = TimeUtil::GetTime(); @@ -107,7 +107,7 @@ namespace armarx CyberGloveValues armarx::CyberGloveObserver::getLatestValues(const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); return latestValues; } } diff --git a/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.h b/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.h index 8eb91e4654620598605f4b04fc1f4c8629ef0048..45eb2f52a2c86c47c8c0272a6f2c55ce9c39b865 100644 --- a/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.h +++ b/source/RobotAPI/components/CyberGloveObserver/CyberGloveObserver.h @@ -23,13 +23,12 @@ #pragma once -//#include <ArmarXCore/core/Component.h> -//#include <RobotAPI/interface/units/CyberGloveInterface.h> #include <RobotAPI/interface/units/CyberGloveObserverInterface.h> #include <ArmarXCore/observers/Observer.h> #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <ArmarXCore/core/time/TimeUtil.h> +#include <mutex> namespace armarx { @@ -103,7 +102,7 @@ namespace armarx private: - Mutex dataMutex; + std::mutex dataMutex; CyberGloveValues latestValues; IceUtil::Time lastUpdate; diff --git a/source/RobotAPI/components/RobotState/RobotStateComponent.cpp b/source/RobotAPI/components/RobotState/RobotStateComponent.cpp index e3c8d00b914d2431ac9a746158d1d3e7af155026..53fb866aa9f7f349bcb7ce5090552e58b0bbb21e 100644 --- a/source/RobotAPI/components/RobotState/RobotStateComponent.cpp +++ b/source/RobotAPI/components/RobotState/RobotStateComponent.cpp @@ -323,7 +323,7 @@ namespace armarx } { - boost::unique_lock<SharedMutex> lock(jointHistoryMutex); + std::unique_lock lock(jointHistoryMutex); jointHistory.emplace_hint(jointHistory.end(), time, jointAngles); if (jointHistory.size() > jointHistoryLength) @@ -512,7 +512,7 @@ namespace armarx IceUtil::Time duration; { IceUtil::Time start = IceUtil::Time::now(); - boost::unique_lock<SharedMutex> lock(poseHistoryMutex); + std::unique_lock lock(poseHistoryMutex); duration = IceUtil::Time::now() - start; poseHistory.emplace_hint(poseHistory.end(), @@ -553,7 +553,7 @@ namespace armarx auto RobotStateComponent::interpolateJoints(IceUtil::Time time) const -> std::optional<Timestamped<NameValueMap>> { - boost::shared_lock<SharedMutex> lock(jointHistoryMutex); + std::shared_lock lock(jointHistoryMutex); if (jointHistory.empty()) { ARMARX_WARNING << deactivateSpam(1) << "Joint history of robot state component is empty!"; @@ -628,7 +628,7 @@ namespace armarx auto RobotStateComponent::interpolatePose(IceUtil::Time time) const -> std::optional<Timestamped<FramedPosePtr>> { - boost::shared_lock<SharedMutex> lock(poseHistoryMutex); + std::shared_lock lock(poseHistoryMutex); if (poseHistory.empty()) { diff --git a/source/RobotAPI/components/RobotState/RobotStateComponent.h b/source/RobotAPI/components/RobotState/RobotStateComponent.h index 27751d203b73c11313caa6a87bbaeabe3cf675ff..2a1da853b696150112fc5ee982cf3a7734c9a4d2 100644 --- a/source/RobotAPI/components/RobotState/RobotStateComponent.h +++ b/source/RobotAPI/components/RobotState/RobotStateComponent.h @@ -37,6 +37,9 @@ #include "SharedRobotServants.h" +#include <shared_mutex> +#include <mutex> + namespace armarx { @@ -216,11 +219,11 @@ namespace armarx std::string robotFile; std::string relativeRobotFile; - mutable SharedMutex jointHistoryMutex; + mutable std::shared_mutex jointHistoryMutex; std::map<IceUtil::Time, NameValueMap> jointHistory; size_t jointHistoryLength; - mutable SharedMutex poseHistoryMutex; + mutable std::shared_mutex poseHistoryMutex; std::map<IceUtil::Time, FramedPosePtr> poseHistory; size_t poseHistoryLength; diff --git a/source/RobotAPI/components/units/ForceTorqueObserver.cpp b/source/RobotAPI/components/units/ForceTorqueObserver.cpp index a365530d8022e8ac1f7e51f7246c44f28903c5ef..58a5eb9ed9e4a89fb724219ce64a6b85236b310c 100644 --- a/source/RobotAPI/components/units/ForceTorqueObserver.cpp +++ b/source/RobotAPI/components/units/ForceTorqueObserver.cpp @@ -123,7 +123,7 @@ namespace armarx auto channels = getAvailableChannels(false); auto batchPrx = debugDrawer->ice_batchOneway(); { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); std::set<std::string> frameAlreadyReported; for (auto& channel : channels) @@ -242,7 +242,7 @@ namespace armarx void ForceTorqueObserver::updateRobot() { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); RemoteRobot::synchronizeLocalClone(localRobot, robot); } @@ -304,7 +304,7 @@ namespace armarx void armarx::ForceTorqueObserver::reportSensorValues(const std::string& sensorNodeName, const FramedDirectionBasePtr& forces, const FramedDirectionBasePtr& torques, const Ice::Current& c) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); auto offerForceAndTorqueValue = [ = ](std::string const & sensorNodeName, std::string const & frame, std::string channelName, const FramedDirectionBasePtr & forces, const FramedDirectionBasePtr & torques) { diff --git a/source/RobotAPI/components/units/ForceTorqueObserver.h b/source/RobotAPI/components/units/ForceTorqueObserver.h index 24c031200b51613c9b3409129df79b2804d7a48b..0f17d8a498377664b98882e26dff3c9b8df1bb50 100644 --- a/source/RobotAPI/components/units/ForceTorqueObserver.h +++ b/source/RobotAPI/components/units/ForceTorqueObserver.h @@ -27,6 +27,8 @@ #include <ArmarXCore/observers/Observer.h> #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> +#include <mutex> + namespace armarx { /** @@ -92,7 +94,7 @@ namespace armarx private: void updateRobot(); - armarx::Mutex dataMutex; + std::mutex dataMutex; std::string topicName; RobotStateComponentInterfacePrx robot; VirtualRobot::RobotPtr localRobot; diff --git a/source/RobotAPI/components/units/GamepadUnitObserver.cpp b/source/RobotAPI/components/units/GamepadUnitObserver.cpp index e6e5226324c46df8d35f6307660b9e016b71fd02..b1848c5325d931a623c828e1dd58973121beedb5 100644 --- a/source/RobotAPI/components/units/GamepadUnitObserver.cpp +++ b/source/RobotAPI/components/units/GamepadUnitObserver.cpp @@ -69,7 +69,7 @@ namespace armarx void GamepadUnitObserver::reportGamepadState(const std::string& device, const std::string& name, const GamepadData& data, const TimestampBasePtr& timestamp, const Ice::Current& c) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); TimestampVariantPtr timestampPtr = TimestampVariantPtr::dynamicCast(timestamp); diff --git a/source/RobotAPI/components/units/GamepadUnitObserver.h b/source/RobotAPI/components/units/GamepadUnitObserver.h index fcccf65fc017cda9f3cc69e89a2eebb747df61cc..2f4d59c2a7a44ede66adaec1663be2263b6d25de 100644 --- a/source/RobotAPI/components/units/GamepadUnitObserver.h +++ b/source/RobotAPI/components/units/GamepadUnitObserver.h @@ -29,6 +29,7 @@ #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <RobotAPI/libraries/core/Pose.h> +#include <mutex> namespace armarx { @@ -79,7 +80,7 @@ namespace armarx private: - Mutex dataMutex; + std::mutex dataMutex; DebugDrawerInterfacePrx debugDrawerPrx; diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.cpp b/source/RobotAPI/components/units/GraspCandidateObserver.cpp index 3a0cac2ec7835df8e0362b59b70d9d48ef36708e..527216c96a63d769c625cc5deeae30fab64fef47 100644 --- a/source/RobotAPI/components/units/GraspCandidateObserver.cpp +++ b/source/RobotAPI/components/units/GraspCandidateObserver.cpp @@ -122,21 +122,21 @@ void GraspCandidateObserver::handleProviderUpdate(const std::string& providerNam void GraspCandidateObserver::reportGraspCandidates(const std::string& providerName, const GraspCandidateSeq& candidates, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); this->candidates[providerName] = candidates; handleProviderUpdate(providerName, candidates.size()); } void GraspCandidateObserver::reportBimanualGraspCandidates(const std::string& providerName, const BimanualGraspCandidateSeq& candidates, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); this->bimanualCandidates[providerName] = candidates; handleProviderUpdate(providerName, candidates.size()); } void GraspCandidateObserver::reportProviderInfo(const std::string& providerName, const ProviderInfoPtr& info, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); providers[providerName] = info; if (updateCounters.count(providerName) == 0) { @@ -153,13 +153,13 @@ void GraspCandidateObserver::reportProviderInfo(const std::string& providerName, InfoMap GraspCandidateObserver::getAvailableProvidersWithInfo(const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); return providers; } StringSeq GraspCandidateObserver::getAvailableProviderNames(const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); return getAvailableProviderNames(); } @@ -167,14 +167,14 @@ StringSeq GraspCandidateObserver::getAvailableProviderNames(const Ice::Current&) ProviderInfoPtr GraspCandidateObserver::getProviderInfo(const std::string& providerName, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); checkHasProvider(providerName); return providers[providerName]; } bool GraspCandidateObserver::hasProvider(const std::string& providerName, const Ice::Current& c) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); return hasProvider(providerName); } @@ -182,7 +182,7 @@ bool GraspCandidateObserver::hasProvider(const std::string& providerName, const GraspCandidateSeq GraspCandidateObserver::getAllCandidates(const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); GraspCandidateSeq all; for (const std::pair<std::string, grasping::GraspCandidateSeq>& pair : candidates) { @@ -200,7 +200,7 @@ GraspCandidateSeq GraspCandidateObserver::getCandidatesByProvider(const std::str GraspCandidateSeq GraspCandidateObserver::getCandidatesByFilter(const CandidateFilterConditionPtr& filter, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); GraspCandidateSeq matching; for (const std::pair<std::string, grasping::GraspCandidateSeq>& pair : candidates) { @@ -217,20 +217,20 @@ GraspCandidateSeq GraspCandidateObserver::getCandidatesByFilter(const CandidateF Ice::Int GraspCandidateObserver::getUpdateCounterByProvider(const std::string& providerName, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); checkHasProvider(providerName); return updateCounters[providerName]; } IntMap GraspCandidateObserver::getAllUpdateCounters(const Ice::Current& providerName) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); return updateCounters; } bool GraspCandidateObserver::setProviderConfig(const std::string& providerName, const StringVariantBaseMap& config, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); if (providers.count(providerName) == 0) { return false; @@ -241,19 +241,19 @@ bool GraspCandidateObserver::setProviderConfig(const std::string& providerName, void GraspCandidateObserver::setSelectedCandidates(const GraspCandidateSeq& candidates, const Ice::Current&) { - ScopedLock lock(selectedCandidatesMutex); + std::unique_lock lock(selectedCandidatesMutex); selectedCandidates = candidates; } GraspCandidateSeq GraspCandidateObserver::getSelectedCandidates(const Ice::Current&) { - ScopedLock lock(selectedCandidatesMutex); + std::unique_lock lock(selectedCandidatesMutex); return selectedCandidates; } BimanualGraspCandidateSeq GraspCandidateObserver::getAllBimanualCandidates(const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); BimanualGraspCandidateSeq all; for (const std::pair<std::string, grasping::BimanualGraspCandidateSeq>& pair : bimanualCandidates) { @@ -264,13 +264,13 @@ BimanualGraspCandidateSeq GraspCandidateObserver::getAllBimanualCandidates(const void GraspCandidateObserver::setSelectedBimanualCandidates(const grasping::BimanualGraspCandidateSeq& candidates, const Ice::Current&) { - ScopedLock lock(selectedCandidatesMutex); + std::unique_lock lock(selectedCandidatesMutex); selectedBimanualCandidates = candidates; } BimanualGraspCandidateSeq GraspCandidateObserver::getSelectedBimanualCandidates(const Ice::Current&) { - ScopedLock lock(selectedCandidatesMutex); + std::unique_lock lock(selectedCandidatesMutex); return selectedBimanualCandidates; } diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.h b/source/RobotAPI/components/units/GraspCandidateObserver.h index a481ec2791d6c97a5c882361109d96d494e44e9e..beb95c3a2bde2c9bd3c568031dd4ce2db7939d07 100644 --- a/source/RobotAPI/components/units/GraspCandidateObserver.h +++ b/source/RobotAPI/components/units/GraspCandidateObserver.h @@ -26,6 +26,8 @@ #include <ArmarXCore/observers/Observer.h> #include <RobotAPI/interface/observers/GraspCandidateObserverInterface.h> +#include <mutex> + namespace armarx { /** @@ -106,7 +108,7 @@ namespace armarx bool hasProvider(const std::string& providerName); void checkHasProvider(const std::string& providerName); grasping::StringSeq getAvailableProviderNames(); - Mutex dataMutex; + std::mutex dataMutex; std::map<std::string, grasping::GraspCandidateSeq> candidates; std::map<std::string, grasping::BimanualGraspCandidateSeq> bimanualCandidates; grasping::InfoMap providers; @@ -114,7 +116,7 @@ namespace armarx grasping::GraspCandidateProviderInterfacePrx configTopic; - Mutex selectedCandidatesMutex; + std::mutex selectedCandidatesMutex; grasping::GraspCandidateSeq selectedCandidates; grasping::BimanualGraspCandidateSeq selectedBimanualCandidates; diff --git a/source/RobotAPI/components/units/HapticObserver.cpp b/source/RobotAPI/components/units/HapticObserver.cpp index 759927bd8799c8d319ba69fe1e3e384402ac8d7a..0fe52df490098255ef86b56bd43025017a2997b5 100644 --- a/source/RobotAPI/components/units/HapticObserver.cpp +++ b/source/RobotAPI/components/units/HapticObserver.cpp @@ -76,7 +76,7 @@ namespace armarx void HapticObserver::reportSensorValues(const std::string& device, const std::string& name, const armarx::MatrixFloatBasePtr& values, const armarx::TimestampBasePtr& timestamp, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); MatrixFloatPtr matrix = MatrixFloatPtr::dynamicCast(values); if (matrix->cols == 0) @@ -159,7 +159,7 @@ namespace armarx void HapticObserver::updateStatistics() { - /*ScopedLock lock(dataMutex); + /*std::unique_lock lock(dataMutex); //ARMARX_LOG << "updateStatistics"; long now = TimestampVariant::nowLong(); for (std::map<std::string, HapticSampleStatistics>::iterator it = statistics.begin(); it != statistics.end(); ++it) diff --git a/source/RobotAPI/components/units/HapticObserver.h b/source/RobotAPI/components/units/HapticObserver.h index 5e75db5b05f74cf23cecb6ce3908f6f9ca1fd2c9..cac9a85c903e4c83125489f97c8c65dd3b368ff5 100644 --- a/source/RobotAPI/components/units/HapticObserver.h +++ b/source/RobotAPI/components/units/HapticObserver.h @@ -30,6 +30,7 @@ #include <ArmarXCore/util/variants/eigen3/Eigen3VariantObjectFactories.h> #include <ArmarXCore/core/services/tasks/PeriodicTask.h> +#include <mutex> namespace armarx { @@ -146,7 +147,7 @@ namespace armarx */ PropertyDefinitionsPtr createPropertyDefinitions() override; private: - armarx::Mutex dataMutex; + std::mutex dataMutex; std::string topicName; PeriodicTask<HapticObserver>::pointer_type statisticsTask; diff --git a/source/RobotAPI/components/units/InertialMeasurementUnitObserver.cpp b/source/RobotAPI/components/units/InertialMeasurementUnitObserver.cpp index 52e6f92ea93cb4c5f4f58611a56fb6f73533b3af..dc73454fe838fafeddebbbfca0915efaca5752f0 100644 --- a/source/RobotAPI/components/units/InertialMeasurementUnitObserver.cpp +++ b/source/RobotAPI/components/units/InertialMeasurementUnitObserver.cpp @@ -71,7 +71,7 @@ namespace armarx const std::string& device, const std::string& name, const IMUData& values, const TimestampBasePtr& timestamp, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); TimestampVariantPtr timestampPtr = TimestampVariantPtr::dynamicCast(timestamp); diff --git a/source/RobotAPI/components/units/InertialMeasurementUnitObserver.h b/source/RobotAPI/components/units/InertialMeasurementUnitObserver.h index 4591228d92d457967b85106554898345895b6ee2..728e2dc385906114fa09c2b7b044990196a94a2a 100644 --- a/source/RobotAPI/components/units/InertialMeasurementUnitObserver.h +++ b/source/RobotAPI/components/units/InertialMeasurementUnitObserver.h @@ -29,6 +29,7 @@ #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <RobotAPI/libraries/core/Pose.h> +#include <mutex> namespace armarx { @@ -82,7 +83,7 @@ namespace armarx private: - Mutex dataMutex; + std::mutex dataMutex; DebugDrawerInterfacePrx debugDrawerPrx; diff --git a/source/RobotAPI/components/units/KinematicUnitObserver.cpp b/source/RobotAPI/components/units/KinematicUnitObserver.cpp index 15712aa55724e6eb29ffe97e9fa9226a5c9c9872..c3d52e47fac5f00008939a9acb4c299aa814f680 100644 --- a/source/RobotAPI/components/units/KinematicUnitObserver.cpp +++ b/source/RobotAPI/components/units/KinematicUnitObserver.cpp @@ -287,7 +287,7 @@ namespace armarx // ARMARX_INFO << deactivateSpam(10) << " timestamp is " << (IceUtil::Time::now() - IceUtil::Time::microSeconds(timestamp)).toMicroSecondsDouble() << " µs old"; bool newChannel; { - ScopedLock lock(initializedChannelsMutex); + std::unique_lock lock(initializedChannelsMutex); newChannel = initializedChannels.count(channelName) == 0; initializedChannels.insert(channelName); } diff --git a/source/RobotAPI/components/units/KinematicUnitObserver.h b/source/RobotAPI/components/units/KinematicUnitObserver.h index 8d726600692d58d32b35c22f11b43fa7f4e3b4dd..5b21e89d0cb300c331cd105b907439da70cc937a 100644 --- a/source/RobotAPI/components/units/KinematicUnitObserver.h +++ b/source/RobotAPI/components/units/KinematicUnitObserver.h @@ -32,6 +32,7 @@ #include <ArmarXCore/observers/Observer.h> #include <string> +#include <mutex> namespace armarx { @@ -154,7 +155,7 @@ namespace armarx protected: void nameValueMapToDataFields(const std::string& channelName, const NameValueMap& nameValueMap, Ice::Long timestamp, bool aValueChanged); std::set<std::string> initializedChannels; - Mutex initializedChannelsMutex; + std::mutex initializedChannelsMutex; private: std::string robotNodeSetName; std::set<std::string> robotNodes; diff --git a/source/RobotAPI/components/units/LaserScannerUnitObserver.cpp b/source/RobotAPI/components/units/LaserScannerUnitObserver.cpp index 0944336bfaf52400a6685ce58d4b1c409a3e86c3..04bd47d5a9cd4931ad9783391e346c88d29aa4ce 100644 --- a/source/RobotAPI/components/units/LaserScannerUnitObserver.cpp +++ b/source/RobotAPI/components/units/LaserScannerUnitObserver.cpp @@ -64,7 +64,7 @@ namespace armarx void LaserScannerUnitObserver::reportSensorValues(const std::string& device, const std::string& name, const LaserScan& scan, const TimestampBasePtr& timestamp, const Ice::Current& c) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); if (!existsChannel(device)) { diff --git a/source/RobotAPI/components/units/LaserScannerUnitObserver.h b/source/RobotAPI/components/units/LaserScannerUnitObserver.h index 4b093eb49cc12f3d07b457f744f3fda78e8872c0..05aa07cb9c36668d72d4fa8046c855c28e0ab735 100644 --- a/source/RobotAPI/components/units/LaserScannerUnitObserver.h +++ b/source/RobotAPI/components/units/LaserScannerUnitObserver.h @@ -29,6 +29,7 @@ #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <RobotAPI/libraries/core/Pose.h> +#include <mutex> namespace armarx { @@ -78,7 +79,7 @@ namespace armarx const TimestampBasePtr& timestamp, const Ice::Current& c) override; private: - Mutex dataMutex; + std::mutex dataMutex; }; } diff --git a/source/RobotAPI/components/units/MetaWearIMUObserver.cpp b/source/RobotAPI/components/units/MetaWearIMUObserver.cpp index b6885037df8700f4f6c09b01d0483a3c277210b2..95937330857902c4127d0ffe3b35eebff3e8d86d 100644 --- a/source/RobotAPI/components/units/MetaWearIMUObserver.cpp +++ b/source/RobotAPI/components/units/MetaWearIMUObserver.cpp @@ -64,7 +64,7 @@ namespace armarx void armarx::MetaWearIMUObserver::reportIMUValues(const std::string& name, const MetaWearIMUData& data, const TimestampBasePtr& timestamp, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); if (!existsChannel(name)) { diff --git a/source/RobotAPI/components/units/MetaWearIMUObserver.h b/source/RobotAPI/components/units/MetaWearIMUObserver.h index 6dba1f74653563fc132706e39d23036b2595ae4a..87eb6b49fbd390a66aef98c4f0a22d174115d659 100644 --- a/source/RobotAPI/components/units/MetaWearIMUObserver.h +++ b/source/RobotAPI/components/units/MetaWearIMUObserver.h @@ -29,6 +29,7 @@ #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <RobotAPI/libraries/core/Pose.h> +#include <mutex> namespace armarx { @@ -74,7 +75,7 @@ namespace armarx private: - Mutex dataMutex; + std::mutex dataMutex; DebugDrawerInterfacePrx debugDrawerPrx; void offerVector3(const std::string& channelName, const std::string& dfName, const std::vector<float>& data); diff --git a/source/RobotAPI/components/units/OptoForceUnitObserver.cpp b/source/RobotAPI/components/units/OptoForceUnitObserver.cpp index ce09bacd4543fb2ac779229d5c02de89bf3d6e05..f87a5b56edb87cc841b71da64a5018d42ace1274 100644 --- a/source/RobotAPI/components/units/OptoForceUnitObserver.cpp +++ b/source/RobotAPI/components/units/OptoForceUnitObserver.cpp @@ -65,7 +65,7 @@ namespace armarx void OptoForceUnitObserver::reportSensorValues(const std::string& device, const std::string& name, float fx, float fy, float fz, const TimestampBasePtr& timestamp, const Ice::Current& c) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); TimestampVariantPtr timestampPtr = TimestampVariantPtr::dynamicCast(timestamp); if (!existsChannel(name)) @@ -86,7 +86,7 @@ namespace armarx /*void OptoForceUnitObserver::reportSensorValues(const std::string& device, const std::string& name, const IMUData& values, const TimestampBasePtr& timestamp, const Ice::Current& c) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); TimestampVariantPtr timestampPtr = TimestampVariantPtr::dynamicCast(timestamp); diff --git a/source/RobotAPI/components/units/OptoForceUnitObserver.h b/source/RobotAPI/components/units/OptoForceUnitObserver.h index 3bdc63e1a6b874cb9005260801c8c11869b009c7..0d415cb2bc89396f9fc0d81669009f034b17c646 100644 --- a/source/RobotAPI/components/units/OptoForceUnitObserver.h +++ b/source/RobotAPI/components/units/OptoForceUnitObserver.h @@ -29,6 +29,7 @@ #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <RobotAPI/libraries/core/Pose.h> +#include <mutex> namespace armarx { @@ -81,7 +82,7 @@ namespace armarx private: - Mutex dataMutex; + std::mutex dataMutex; DebugDrawerInterfacePrx debugDrawerPrx; diff --git a/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.cpp b/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.cpp index 514a1767b5c95ad06228d87f4c09df94ff87f833..75640877635972e5cbf11f078580487834f64d4d 100644 --- a/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.cpp +++ b/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.cpp @@ -59,7 +59,7 @@ namespace armarx void OrientedTactileSensorUnitObserver::reportSensorValues(int id, float pressure, float qw, float qx, float qy, float qz, float pressureRate, float rotationRate, float accelerationRate, float accelx, float accely, float accelz, const TimestampBasePtr& timestamp, const Ice::Current&) { - ScopedLock lock(dataMutex); + std::unique_lock lock(dataMutex); TimestampVariantPtr timestampPtr = TimestampVariantPtr::dynamicCast(timestamp); std::stringstream ss; diff --git a/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.h b/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.h index 033f9cd08bd4f82bf399eb33df20eb2ac5a4956c..70916163f96bfa87944269e5bcf3f85a88bb5278 100644 --- a/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.h +++ b/source/RobotAPI/components/units/OrientedTactileSensorUnitObserver.h @@ -29,6 +29,7 @@ #include <RobotAPI/interface/visualization/DebugDrawerInterface.h> #include <RobotAPI/libraries/core/Pose.h> +#include <mutex> namespace armarx { @@ -80,7 +81,7 @@ namespace armarx private: - Mutex dataMutex; + std::mutex dataMutex; DebugDrawerInterfacePrx debugDrawerPrx; }; } diff --git a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp index 9a2dbb98e6026f602741b6020b50e0d1fd1a9ad4..9fe87907b881e06b12cac0495503da973c23a625 100644 --- a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp +++ b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.cpp @@ -92,7 +92,7 @@ void RobotStateObserver::updatePoses() return; } - ScopedRecursiveLock lock(dataMutex); + std::unique_lock lock(dataMutex); ReadLockPtr lock2 = robot->getReadLock(); FramedPoseBaseMap tcpPoses; std::string rootFrame = robot->getRootNode()->getName(); @@ -181,7 +181,7 @@ void RobotStateObserver::updateNodeVelocities(const NameValueMap& jointVel, long return; } - ScopedRecursiveLock lock(dataMutex); + std::unique_lock lock(dataMutex); if (!robot) { @@ -316,7 +316,7 @@ PropertyDefinitionsPtr RobotStateObserver::createPropertyDefinitions() void RobotStateObserver::setRobot(RobotPtr robot) { - ScopedRecursiveLock lock(dataMutex); + std::unique_lock lock(dataMutex); this->robot = robot; std::vector< VirtualRobot::RobotNodeSetPtr > robotNodes; diff --git a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h index b604011aec6843d69bc58a1cd8e0b335345344d0..e3acfd611dc6487744decc1c4d3183e33f74c383 100644 --- a/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h +++ b/source/RobotAPI/libraries/core/remoterobot/RobotStateObserver.h @@ -94,7 +94,7 @@ namespace armarx RobotStateComponentInterfacePrx server; VirtualRobot::RobotPtr robot, velocityReportRobot; std::vector<std::pair<VirtualRobot::RobotNodePtr, std::string> > nodesToReport; - RecursiveMutex dataMutex; + std::recursive_mutex dataMutex; IceUtil::Time lastVelocityUpdate; // RobotStateObserverInterface interface