AbstractMotionModel.cpp
Go to the documentation of this file.
1 
2 #include "AbstractMotionModel.h"
3 
5 
8 {
9  std::unique_lock lock(motionPredictionLock);
10 
11  this->robotStateProxy = robotStateProxy;
12  poseAtLastLocalization = new armarx::LinkedPose();
13  predictedPoseAtStartOfCurrentLocalization = nullptr;
14  globalRobotPoseAtLastLocalization = nullptr;
15  uncertaintyAtLastLocalization = nullptr;
16  uncertaintyAtStartOfCurrentLocalization = nullptr;
17  timeOfLastLocalizationStart = new armarx::TimestampVariant(IceUtil::Time::now());
18  timeOfLastSuccessfulLocalization = new armarx::TimestampVariant(IceUtil::Time::now());
19 }
20 
21 armarx::LinkedPoseBasePtr
23 {
24  std::unique_lock lock(motionPredictionLock);
25 
26  armarx::LinkedPosePtr ret = getPredictedPoseInternal();
27  return ret;
28 }
29 
30 memoryx::MultivariateNormalDistributionBasePtr
32 {
33  std::unique_lock lock(motionPredictionLock);
34 
35  MultivariateNormalDistributionBasePtr ret = getUncertaintyInternal();
36  return ret;
37 }
38 
39 void
41  const armarx::LinkedPoseBasePtr& poseAtLastLocalization,
42  const armarx::PoseBasePtr& globalRobotPoseAtLastLocalization,
43  const memoryx::MultivariateNormalDistributionBasePtr& uncertaintyAtLastLocalization,
44  const Ice::Current&)
45 {
46  std::unique_lock lock(motionPredictionLock);
47  this->poseAtLastLocalization = poseAtLastLocalization;
48  timeOfLastSuccessfulLocalization =
49  armarx::TimestampVariantPtr::dynamicCast(timeOfLastLocalizationStart->clone());
50 
51  if (globalRobotPoseAtLastLocalization)
52  {
53  this->globalRobotPoseAtLastLocalization = globalRobotPoseAtLastLocalization;
54  }
55 
56  if (uncertaintyAtLastLocalization)
57  {
58  this->uncertaintyAtLastLocalization = uncertaintyAtLastLocalization;
59  }
60 }
61 
62 void
64 {
65  std::unique_lock lock(motionPredictionLock);
66 
67  predictedPoseAtStartOfCurrentLocalization = getPredictedPoseInternal();
68  uncertaintyAtStartOfCurrentLocalization = getUncertaintyInternal();
69  timeOfLastLocalizationStart = new armarx::TimestampVariant(IceUtil::Time::now());
70 }
71 
72 armarx::LinkedPoseBasePtr
74 {
75  return predictedPoseAtStartOfCurrentLocalization;
76 }
77 
78 memoryx::MultivariateNormalDistributionBasePtr
80 {
81  return uncertaintyAtStartOfCurrentLocalization;
82 }
83 
84 std::string
86 {
87  return ice_id();
88 }
89 
92 {
93  if (motionModelName.compare("Static") == 0)
94  {
95  return eMotionModelStaticObject;
96  }
97  else if (motionModelName.compare("RobotHand") == 0)
98  {
99  return eMotionModelRobotHand;
100  }
101  else if (motionModelName.compare("AttachedToOtherObject") == 0)
102  {
103  return eMotionModelAttachedToOtherObject;
104  }
105  else if (motionModelName.compare("KBM") == 0)
106  {
107  return eMotionModelKBM;
108  }
109  else if (motionModelName.empty())
110  {
111  ARMARX_WARNING_S << "Motion model name is empty!";
112  return eMotionModelStaticObject;
113  }
114  else
115  {
116  ARMARX_WARNING_S << "Unknown motion model: " << motionModelName;
117  return eMotionModelStaticObject;
118  }
119 }
120 
121 armarx::LinkedPoseBasePtr
123 {
124  std::unique_lock lock(motionPredictionLock);
125 
126  armarx::LinkedPoseBasePtr ret = poseAtLastLocalization;
127  return ret;
128 }
129 
131 {
132 }
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:13
memoryx::AbstractMotionModel::savePredictedPoseAtStartOfCurrentLocalization
void savePredictedPoseAtStartOfCurrentLocalization(const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:63
armarx::TimestampVariant
Definition: TimestampVariant.h:54
memoryx::AbstractMotionModel::AbstractMotionModel
AbstractMotionModel()
Definition: AbstractMotionModel.cpp:130
memoryx::AbstractMotionModel::getPredictedPose
armarx::LinkedPoseBasePtr getPredictedPose(const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:22
memoryx::AbstractMotionModel::getUncertainty
MultivariateNormalDistributionBasePtr getUncertainty(const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:31
memoryx::AbstractMotionModel::getMotionModelTypeByName
static EMotionModelType getMotionModelTypeByName(std::string motionModelName)
Definition: AbstractMotionModel.cpp:91
IceInternal::Handle
Definition: forward_declarations.h:8
armarx::VariantType::LinkedPose
const VariantTypeId LinkedPose
Definition: LinkedPose.h:43
memoryx::AbstractMotionModel::getMotionModelName
virtual std::string getMotionModelName()
Definition: AbstractMotionModel.cpp:85
memoryx::AbstractMotionModel::getUncertaintyAtStartOfCurrentLocalization
MultivariateNormalDistributionBasePtr getUncertaintyAtStartOfCurrentLocalization(const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:79
memoryx::AbstractMotionModel::setPoseAtLastLocalisation
void setPoseAtLastLocalisation(const armarx::LinkedPoseBasePtr &poseAtLastLocalization, const armarx::PoseBasePtr &globalRobotPoseAtLastLocalization, const MultivariateNormalDistributionBasePtr &uncertaintyAtLastLocalization, const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:40
ARMARX_WARNING_S
#define ARMARX_WARNING_S
Definition: Logging.h:213
memoryx::AbstractMotionModel::getPredictedPoseAtStartOfCurrentLocalization
armarx::LinkedPoseBasePtr getPredictedPoseAtStartOfCurrentLocalization(const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:73
memoryx::AbstractMotionModel::motionPredictionLock
std::recursive_mutex motionPredictionLock
Definition: AbstractMotionModel.h:100
AbstractMotionModel.h
IceInternal::ProxyHandle<::IceProxy::armarx::RobotStateComponentInterface >
Logging.h
memoryx::AbstractMotionModel::getPoseAtLastLocalisation
armarx::LinkedPoseBasePtr getPoseAtLastLocalisation(const Ice::Current &=Ice::emptyCurrent) override
Definition: AbstractMotionModel.cpp:122
memoryx::AbstractMotionModel::EMotionModelType
EMotionModelType
Definition: AbstractMotionModel.h:42