diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp index be53cc7ffc75e2e351667bc3143f7e8dfe05b61c..340d945796bcc5cb81db9ab830a436cb2c5185c0 100644 --- a/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp +++ b/source/RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.cpp @@ -439,10 +439,15 @@ namespace armarx::armem::server::obj::instance const Ice::Current&) { objpose::ObjectPosePredictionResultSeq results; - for (const auto& request : requests) + // TODO(@phesch): Only fetch the required data in the lock, perform the predictions + // locally in this function's thread. + segment.doLocked([this,&requests,&results]() { - results.push_back(segment.predictObjectPose(request)); - } + for (const auto& request : requests) + { + results.push_back(segment.predictObjectPose(request)); + } + }); return results; }