ProbabilityMeasures.h
Go to the documentation of this file.
1 /*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package MemoryX::Core
17 * @author Alexey Kozlov ( kozlov at kit dot edu)
18 * @date 2012
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22 
23 #pragma once
24 
25 #include <Eigen/Core>
26 
28 
29 #include <MemoryX/interface/core/ProbabilityMeasures.h>
30 
31 namespace armarx::VariantType
32 {
33  // variant types
35  armarx::Variant::addTypeName("::memoryx::DiscreteProbabilityBase");
37  armarx::Variant::addTypeName("::memoryx::UnivariateNormalDistributionBase");
39  armarx::Variant::addTypeName("::memoryx::IsotropicNormalDistributionBase");
41  armarx::Variant::addTypeName("::memoryx::MultivariateNormalDistributionBase");
43  armarx::Variant::addTypeName("::memoryx::GaussianMixtureDistributionBase");
44 } // namespace armarx::VariantType
45 
46 namespace memoryx
47 {
48  /**
49  * @brief The DiscreteProbability class
50  * @ingroup VariantsGrp
51  */
52  class DiscreteProbability : virtual public memoryx::DiscreteProbabilityBase
53  {
54  public:
57  ~DiscreteProbability() override;
58 
59  ::Ice::Float getProbability(const ::Ice::Current& = Ice::emptyCurrent) const override;
60  void setProbability(::Ice::Float, const ::Ice::Current& = Ice::emptyCurrent) override;
61 
62  // inherited from VariantDataClass
64  ice_clone() const override
65  {
66  return this->clone();
67  }
68 
69  armarx::VariantDataClassPtr
70  clone(const Ice::Current& c = Ice::emptyCurrent) const override
71  {
72  return new DiscreteProbability(this->prob);
73  }
74 
75  std::string
76  output(const Ice::Current& c = Ice::emptyCurrent) const override
77  {
78  std::stringstream s;
79  s << prob;
80  return s.str();
81  }
82 
84  getType(const Ice::Current& c = Ice::emptyCurrent) const override
85  {
87  }
88 
89  bool
90  validate(const Ice::Current& c = Ice::emptyCurrent) override
91  {
92  return true;
93  }
94 
95  public: // serialization
96  void serialize(const armarx::ObjectSerializerBasePtr& serializer,
97  const ::Ice::Current& = Ice::emptyCurrent) const override;
98  void deserialize(const armarx::ObjectSerializerBasePtr& serializer,
99  const ::Ice::Current& = Ice::emptyCurrent) override;
100  };
101 
102  class NormalDistribution : virtual public memoryx::NormalDistributionBase
103  {
104  public:
105  int
106  getDimensions(const ::Ice::Current& = Ice::emptyCurrent) const override
107  {
108  return dimensions;
109  }
110 
112  getMean(const ::Ice::Current& = Ice::emptyCurrent) const override
113  {
114  return mean;
115  }
116 
117  void
118  setMean(const FloatVector& mean, const ::Ice::Current& = Ice::emptyCurrent) override
119  {
120  this->mean = mean;
121  }
122 
123  float getCovariance(int row,
124  int col,
125  const ::Ice::Current& = Ice::emptyCurrent) const override = 0;
126 
127  Eigen::VectorXf toEigenMean() const;
128  void fromEigenMean(const Eigen::VectorXf& mean);
129 
130  virtual Eigen::MatrixXf toEigenCovariance() const = 0;
131  virtual void fromEigenCovariance(const Eigen::MatrixXf& cov) = 0;
132  virtual float getDensity(const Eigen::VectorXf& p) = 0;
133 
134  std::string output(const Ice::Current& c = Ice::emptyCurrent) const override;
135 
136  protected:
137  NormalDistribution(int dimensions);
139  NormalDistribution(const Eigen::VectorXf& mean);
141 
142  protected: // serialization
143  void serialize(const armarx::ObjectSerializerBasePtr& serializer,
144  const ::Ice::Current& = Ice::emptyCurrent) const override;
145  void deserialize(const armarx::ObjectSerializerBasePtr& serializer,
146  const ::Ice::Current& = Ice::emptyCurrent) override;
147  };
148 
150 
151  /**
152  * @brief The UnivariateNormalDistribution class
153  * @ingroup VariantsGrp
154  */
156  virtual public memoryx::UnivariateNormalDistributionBase,
157  virtual public memoryx::NormalDistribution
158  {
159  public:
161  UnivariateNormalDistribution(float mean, float var);
163 
164  ::Ice::Float getVariance(const ::Ice::Current& = Ice::emptyCurrent) const override;
165  void setVariance(::Ice::Float, const ::Ice::Current& = Ice::emptyCurrent) override;
166 
167  float
168  getCovariance(int row, int col, const ::Ice::Current& = Ice::emptyCurrent) const override;
169  Eigen::MatrixXf toEigenCovariance() const override;
170  void fromEigenCovariance(const Eigen::MatrixXf& cov) override;
171 
172  float
173  getDensity(const Eigen::VectorXf& p) override
174  {
175  return 0.;
176  }
177 
178  // inherited from VariantDataClass
180  ice_clone() const override
181  {
182  return this->clone();
183  }
184 
185  armarx::VariantDataClassPtr
186  clone(const Ice::Current& c = Ice::emptyCurrent) const override
187  {
188  return new UnivariateNormalDistribution(*this);
189  }
190 
191  // std::string output(const Ice::Current& c = Ice::emptyCurrent) const { std::stringstream s; s << variance; return s.str(); };
193  getType(const Ice::Current& c = Ice::emptyCurrent) const override
194  {
196  }
197 
198  bool
199  validate(const Ice::Current& c = Ice::emptyCurrent) override
200  {
201  return true;
202  }
203 
204  public: // serialization
205  void serialize(const armarx::ObjectSerializerBasePtr& serializer,
206  const ::Ice::Current& = Ice::emptyCurrent) const override;
207  void deserialize(const armarx::ObjectSerializerBasePtr& serializer,
208  const ::Ice::Current& = Ice::emptyCurrent) override;
209  };
210 
212 
213  /**
214  * @brief The IsotropicNormalDistribution class
215  * @ingroup VariantsGrp
216  */
218  virtual public memoryx::IsotropicNormalDistributionBase,
219  virtual public memoryx::NormalDistribution
220  {
221  public:
222  IsotropicNormalDistribution(int dimensions = 0);
224  IsotropicNormalDistribution(const Eigen::VectorXf& mean, const Eigen::VectorXf& vars);
226 
228  const ::Ice::Current& = Ice::emptyCurrent) const override;
229  void setVariance(::Ice::Int dim,
230  ::Ice::Float,
231  const ::Ice::Current& = Ice::emptyCurrent) override;
232 
233  float
234  getCovariance(int row, int col, const ::Ice::Current& = Ice::emptyCurrent) const override;
235  Eigen::MatrixXf toEigenCovariance() const override;
236  void fromEigenCovariance(const Eigen::MatrixXf& cov) override;
237 
238  float
239  getDensity(const Eigen::VectorXf& p) override
240  {
241  return 0.;
242  }
243 
244  // inherited from VariantDataClass
246  ice_clone() const override
247  {
248  return this->clone();
249  }
250 
251  armarx::VariantDataClassPtr
252  clone(const Ice::Current& c = Ice::emptyCurrent) const override
253  {
254  return new IsotropicNormalDistribution(*this);
255  }
256 
258  getType(const Ice::Current& c = Ice::emptyCurrent) const override
259  {
261  }
262 
263  bool
264  validate(const Ice::Current& c = Ice::emptyCurrent) override
265  {
266  return true;
267  }
268 
269  public: // serialization
270  void serialize(const armarx::ObjectSerializerBasePtr& serializer,
271  const ::Ice::Current& = Ice::emptyCurrent) const override;
272  void deserialize(const armarx::ObjectSerializerBasePtr& serializer,
273  const ::Ice::Current& = Ice::emptyCurrent) override;
274  };
275 
277 
280 
281  /**
282  * @brief The MultivariateNormalDistribution class
283  * @ingroup VariantsGrp
284  */
286  virtual public memoryx::MultivariateNormalDistributionBase,
287  virtual public memoryx::NormalDistribution
288  {
289  public:
290  MultivariateNormalDistribution(int dimensions = 0);
292  MultivariateNormalDistribution(const Eigen::VectorXf& mean, const Eigen::MatrixXf& vars);
294 
295  /*!
296  * \brief Create a distribution with uncertainty of variance in all directions (default: variance = 10000, i.e. standard deviation is 100 mm)
297  * \param variance
298  * \return
299  */
301  CreateDefaultDistribution(float variance = 10000)
302  {
303  Eigen::Matrix3f covar = variance * Eigen::Matrix3f::Identity();
304  Eigen::Vector3f mean = Eigen::Vector3f::Zero();
307  }
308 
309  float
310  getCovariance(int row, int col, const ::Ice::Current& = Ice::emptyCurrent) const override;
311  void setCovariance(::Ice::Int row,
312  ::Ice::Int col,
313  ::Ice::Float cov,
314  const ::Ice::Current& = Ice::emptyCurrent) override;
315  float getVarianceScalar(const ::Ice::Current& = Ice::emptyCurrent) const override;
316 
317  Eigen::MatrixXf toEigenCovariance() const override;
318  void fromEigenCovariance(const Eigen::MatrixXf& cov) override;
319  float getDensity(const Eigen::VectorXf& point) override;
320 
321  // inherited from VariantDataClass
323  ice_clone() const override
324  {
325  return this->clone();
326  }
327 
328  armarx::VariantDataClassPtr
329  clone(const Ice::Current& c = Ice::emptyCurrent) const override
330  {
331  return new MultivariateNormalDistribution(*this);
332  }
333 
335  getType(const Ice::Current& c = Ice::emptyCurrent) const override
336  {
338  }
339 
340  bool
341  validate(const Ice::Current& c = Ice::emptyCurrent) override
342  {
343  return true;
344  }
345 
346  public: // serialization
347  void serialize(const armarx::ObjectSerializerBasePtr& serializer,
348  const ::Ice::Current& = Ice::emptyCurrent) const override;
349  void deserialize(const armarx::ObjectSerializerBasePtr& serializer,
350  const ::Ice::Current& = Ice::emptyCurrent) override;
351  };
352 
353 
355 
357 
358  /**
359  * @brief The GaussianMixtureDistribution class
360  * @ingroup VariantsGrp
361  */
362  class GaussianMixtureDistribution : virtual public GaussianMixtureDistributionBase
363  {
364  public:
367 
368  void clear(const ::Ice::Current& = Ice::emptyCurrent) override;
369  ::Ice::Int size(const ::Ice::Current& = Ice::emptyCurrent) const override;
370 
371  ::Ice::Int getDimensions(const ::Ice::Current& = Ice::emptyCurrent) const override;
372  GaussianMixtureComponent
373  getComponent(::Ice::Int index, const ::Ice::Current& = Ice::emptyCurrent) const override;
374  GaussianMixtureComponent
375  getModalComponent(const ::Ice::Current& = Ice::emptyCurrent) const override;
376  void addComponent(const GaussianMixtureComponent& component,
377  const ::Ice::Current& = Ice::emptyCurrent) override;
378  void addComponent(const NormalDistributionBasePtr& gaussian, float weight);
379  void addGaussian(const NormalDistributionBasePtr& gaussian,
380  float weight,
381  const ::Ice::Current& = Ice::emptyCurrent) override;
382  void setComponent(::Ice::Int index,
383  const GaussianMixtureComponent& component,
384  const ::Ice::Current& = Ice::emptyCurrent) override;
385  void removeComponent(::Ice::Int index, const ::Ice::Current& = Ice::emptyCurrent) override;
386 
387  /**
388  * Multiply weight of each GM component with a given constant
389  *
390  * @param factor constant to multiply with (scaling factor)
391  */
392  void addComponents(const GaussianMixtureDistributionBasePtr& other,
393  const ::Ice::Current& = Ice::emptyCurrent) override;
394 
395  /**
396  * Multiply weight of each GM component with a given constant
397  *
398  * @param factor constant to multiply with (scaling factor)
399  */
400  void scaleComponents(::Ice::Float factor,
401  const ::Ice::Current& = Ice::emptyCurrent) override;
402 
403  /**
404  * Remove all components with weights lower than threshold value
405  *
406  * @param threshold
407  */
408  void pruneComponents(::Ice::Float threshold,
409  const ::Ice::Current& = Ice::emptyCurrent) override;
410 
411  /**
412  * Normalize components weights (i.e. sum of weights = 1.0)
413  */
414  void normalize(const ::Ice::Current& = Ice::emptyCurrent) override;
415 
416  virtual float getDensity(const Eigen::VectorXf& point);
417 
418 
419  /**
420  * Convert or approximate given ProbabilityMeasure to a gaussian mixture. To special cases implemented so far:
421  * probMeasure is a gaussian (NormalDistibution) -> create GM with a single component probMeasure
422  * probMeasure is a gaussian mixture -> just return probMeasure itself
423  *
424  * probMeasure probability measure to approximate/convert
425  */
427  FromProbabilityMeasure(const ProbabilityMeasureBasePtr& probMeasure);
428 
429  // inherited from VariantDataClass
431  ice_clone() const override
432  {
433  return this->clone();
434  }
435 
436  armarx::VariantDataClassPtr
437  clone(const Ice::Current& c = Ice::emptyCurrent) const override
438  {
439  return new GaussianMixtureDistribution(*this);
440  }
441 
443  getType(const Ice::Current& c = Ice::emptyCurrent) const override
444  {
446  }
447 
448  bool
449  validate(const Ice::Current& c = Ice::emptyCurrent) override
450  {
451  return true;
452  }
453 
454  std::string output(const Ice::Current& c = Ice::emptyCurrent) const override;
455 
456  public: // serialization
457  void serialize(const armarx::ObjectSerializerBasePtr& serializer,
458  const ::Ice::Current& = Ice::emptyCurrent) const override;
459  void deserialize(const armarx::ObjectSerializerBasePtr& serializer,
460  const ::Ice::Current& = Ice::emptyCurrent) override;
461 
462  private:
463  float getTotalWeight() const;
464  };
465 
466 } // namespace memoryx
memoryx::IsotropicNormalDistribution::getVariance
::Ice::Float getVariance(::Ice::Int dim, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:313
memoryx::DiscreteProbability::setProbability
void setProbability(::Ice::Float, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:56
memoryx::GaussianMixtureDistribution::getType
armarx::VariantTypeId getType(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:443
memoryx::UnivariateNormalDistribution::getCovariance
float getCovariance(int row, int col, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:224
armarx::VariantType::GaussianMixtureDistribution
const armarx::VariantTypeId GaussianMixtureDistribution
Definition: ProbabilityMeasures.h:42
memoryx::IsotropicNormalDistribution
The IsotropicNormalDistribution class.
Definition: ProbabilityMeasures.h:217
memoryx::NormalDistribution::fromEigenMean
void fromEigenMean(const Eigen::VectorXf &mean)
Definition: ProbabilityMeasures.cpp:120
memoryx::GaussianMixtureDistribution::removeComponent
void removeComponent(::Ice::Int index, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:653
memoryx::GaussianMixtureDistribution::getModalComponent
GaussianMixtureComponent getModalComponent(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:579
memoryx::GaussianMixtureDistribution::output
std::string output(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:788
armarx::VariantType::IsotropicNormalDistribution
const armarx::VariantTypeId IsotropicNormalDistribution
Definition: ProbabilityMeasures.h:38
armarx::VariantType::Float
const VariantTypeId Float
Definition: Variant.h:919
memoryx::DiscreteProbability::ice_clone
Ice::ObjectPtr ice_clone() const override
Definition: ProbabilityMeasures.h:64
memoryx::GaussianMixtureDistribution::addGaussian
void addGaussian(const NormalDistributionBasePtr &gaussian, float weight, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:626
memoryx::IsotropicNormalDistribution::getDensity
float getDensity(const Eigen::VectorXf &p) override
Definition: ProbabilityMeasures.h:239
memoryx::GaussianMixtureDistribution::size
::Ice::Int size(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:672
memoryx::UnivariateNormalDistribution::validate
bool validate(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.h:199
memoryx::IsotropicNormalDistribution::fromEigenCovariance
void fromEigenCovariance(const Eigen::MatrixXf &cov) override
Definition: ProbabilityMeasures.cpp:352
index
uint8_t index
Definition: EtherCATFrame.h:59
memoryx::DiscreteProbability::~DiscreteProbability
~DiscreteProbability() override
Definition: ProbabilityMeasures.cpp:45
memoryx::NormalDistribution::getCovariance
float getCovariance(int row, int col, const ::Ice::Current &=Ice::emptyCurrent) const override=0
memoryx::UnivariateNormalDistribution::clone
armarx::VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:186
memoryx::NormalDistribution::fromEigenCovariance
virtual void fromEigenCovariance(const Eigen::MatrixXf &cov)=0
memoryx::NormalDistribution::setMean
void setMean(const FloatVector &mean, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.h:118
memoryx::NormalDistribution::getMean
FloatVector getMean(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:112
memoryx::MultivariateNormalDistribution::getCovariance
float getCovariance(int row, int col, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:432
memoryx::UnivariateNormalDistribution::getVariance
::Ice::Float getVariance(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:212
memoryx::IsotropicNormalDistribution::setVariance
void setVariance(::Ice::Int dim, ::Ice::Float, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:319
memoryx::UnivariateNormalDistribution::getType
armarx::VariantTypeId getType(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:193
memoryx::IsotropicNormalDistribution::getCovariance
float getCovariance(int row, int col, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:328
memoryx::GaussianMixtureDistribution::deserialize
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:826
memoryx::DiscreteProbability::getProbability
::Ice::Float getProbability(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:50
memoryx::IsotropicNormalDistribution::IsotropicNormalDistribution
IsotropicNormalDistribution(int dimensions=0)
Definition: ProbabilityMeasures.cpp:281
memoryx
VirtualRobot headers.
Definition: CommonPlacesTester.cpp:48
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
memoryx::IsotropicNormalDistribution::ice_clone
Ice::ObjectPtr ice_clone() const override
Definition: ProbabilityMeasures.h:246
memoryx::GaussianMixtureDistribution::getDimensions
::Ice::Int getDimensions(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:563
memoryx::GaussianMixtureDistribution::normalize
void normalize(const ::Ice::Current &=Ice::emptyCurrent) override
Normalize components weights (i.e.
Definition: ProbabilityMeasures.cpp:732
memoryx::GaussianMixtureDistribution::serialize
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:803
memoryx::IsotropicNormalDistribution::clone
armarx::VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:252
memoryx::UnivariateNormalDistribution::serialize
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:256
memoryx::MultivariateNormalDistribution::serialize
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:516
IceInternal::Handle
Definition: forward_declarations.h:8
armarx::FloatVector
::std::vector<::Ice::Float > FloatVector
Definition: KinematicUnitGuiPlugin.h:325
memoryx::MultivariateNormalDistribution::getVarianceScalar
float getVarianceScalar(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:462
memoryx::GaussianMixtureDistribution::pruneComponents
void pruneComponents(::Ice::Float threshold, const ::Ice::Current &=Ice::emptyCurrent) override
Remove all components with weights lower than threshold value.
Definition: ProbabilityMeasures.cpp:713
memoryx::MultivariateNormalDistribution::CreateDefaultDistribution
static MultivariateNormalDistributionPtr CreateDefaultDistribution(float variance=10000)
Create a distribution with uncertainty of variance in all directions (default: variance = 10000,...
Definition: ProbabilityMeasures.h:301
GfxTL::Identity
void Identity(MatrixXX< N, N, T > *a)
Definition: MatrixXX.h:570
memoryx::GaussianMixtureDistribution::addComponent
void addComponent(const GaussianMixtureComponent &component, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:600
memoryx::DiscreteProbability::getType
armarx::VariantTypeId getType(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:84
memoryx::NormalDistribution::toEigenCovariance
virtual Eigen::MatrixXf toEigenCovariance() const =0
armarx::mean
std::optional< float > mean(const boost::circular_buffer< NameValueMap > &buffer, const std::string &key)
Definition: KinematicUnitGuiPlugin.cpp:1620
memoryx::GaussianMixtureDistribution::clone
armarx::VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:437
memoryx::MultivariateNormalDistribution::setCovariance
void setCovariance(::Ice::Int row, ::Ice::Int col, ::Ice::Float cov, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:444
memoryx::UnivariateNormalDistribution::toEigenCovariance
Eigen::MatrixXf toEigenCovariance() const override
Definition: ProbabilityMeasures.cpp:235
memoryx::NormalDistribution::getDimensions
int getDimensions(const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:106
memoryx::MultivariateNormalDistribution
The MultivariateNormalDistribution class.
Definition: ProbabilityMeasures.h:285
memoryx::DiscreteProbability
The DiscreteProbability class.
Definition: ProbabilityMeasures.h:52
memoryx::GaussianMixtureDistribution
The GaussianMixtureDistribution class.
Definition: ProbabilityMeasures.h:362
memoryx::NormalDistribution::toEigenMean
Eigen::VectorXf toEigenMean() const
Definition: ProbabilityMeasures.cpp:112
memoryx::IsotropicNormalDistribution::deserialize
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:386
memoryx::IsotropicNormalDistribution::validate
bool validate(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.h:264
memoryx::UnivariateNormalDistribution::setVariance
void setVariance(::Ice::Float, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:218
memoryx::GaussianMixtureDistribution::getDensity
virtual float getDensity(const Eigen::VectorXf &point)
Definition: ProbabilityMeasures.cpp:744
memoryx::GaussianMixtureDistribution::setComponent
void setComponent(::Ice::Int index, const GaussianMixtureComponent &component, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:634
armarx::VariantType
Definition: ChannelRef.h:167
memoryx::DiscreteProbability::DiscreteProbability
DiscreteProbability()
Definition: ProbabilityMeasures.cpp:35
memoryx::NormalDistribution::NormalDistribution
NormalDistribution(int dimensions)
Definition: ProbabilityMeasures.cpp:85
armarx::VariantTypeId
Ice::Int VariantTypeId
Definition: Variant.h:43
memoryx::UnivariateNormalDistribution::UnivariateNormalDistribution
UnivariateNormalDistribution()
Definition: ProbabilityMeasures.cpp:186
memoryx::UnivariateNormalDistribution
The UnivariateNormalDistribution class.
Definition: ProbabilityMeasures.h:155
memoryx::MultivariateNormalDistribution::MultivariateNormalDistribution
MultivariateNormalDistribution(int dimensions=0)
Definition: ProbabilityMeasures.cpp:400
memoryx::GaussianMixtureDistribution::addComponents
void addComponents(const GaussianMixtureDistributionBasePtr &other, const ::Ice::Current &=Ice::emptyCurrent) override
Multiply weight of each GM component with a given constant.
Definition: ProbabilityMeasures.cpp:693
memoryx::MultivariateNormalDistributionPtr
IceInternal::Handle< MultivariateNormalDistribution > MultivariateNormalDistributionPtr
Definition: ProbabilityMeasures.h:279
memoryx::GaussianMixtureDistribution::FromProbabilityMeasure
static GaussianMixtureDistributionPtr FromProbabilityMeasure(const ProbabilityMeasureBasePtr &probMeasure)
Convert or approximate given ProbabilityMeasure to a gaussian mixture.
Definition: ProbabilityMeasures.cpp:760
memoryx::NormalDistribution::output
std::string output(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:133
memoryx::MultivariateNormalDistribution::clone
armarx::VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:329
memoryx::GaussianMixtureDistribution::GaussianMixtureDistribution
GaussianMixtureDistribution()
GaussianMixtureDistribution implementation.
Definition: ProbabilityMeasures.cpp:540
memoryx::GaussianMixtureDistribution::ice_clone
Ice::ObjectPtr ice_clone() const override
Definition: ProbabilityMeasures.h:431
memoryx::IsotropicNormalDistribution::toEigenCovariance
Eigen::MatrixXf toEigenCovariance() const override
Definition: ProbabilityMeasures.cpp:339
memoryx::UnivariateNormalDistribution::fromEigenCovariance
void fromEigenCovariance(const Eigen::MatrixXf &cov) override
Definition: ProbabilityMeasures.cpp:243
memoryx::DiscreteProbability::clone
armarx::VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:70
memoryx::MultivariateNormalDistribution::toEigenCovariance
Eigen::MatrixXf toEigenCovariance() const override
Definition: ProbabilityMeasures.cpp:476
armarx::VariantType::UnivariateNormalDistribution
const armarx::VariantTypeId UnivariateNormalDistribution
Definition: ProbabilityMeasures.h:36
memoryx::UnivariateNormalDistribution::getDensity
float getDensity(const Eigen::VectorXf &p) override
Definition: ProbabilityMeasures.h:173
memoryx::GaussianMixtureDistribution::clear
void clear(const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:666
memoryx::DiscreteProbability::output
std::string output(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:76
memoryx::UnivariateNormalDistribution::deserialize
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:267
memoryx::MultivariateNormalDistribution::deserialize
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:527
memoryx::NormalDistribution::serialize
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:162
armarx::VariantType::Int
const VariantTypeId Int
Definition: Variant.h:917
memoryx::GaussianMixtureDistribution::validate
bool validate(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.h:449
memoryx::NormalDistribution::getDensity
virtual float getDensity(const Eigen::VectorXf &p)=0
memoryx::MultivariateNormalDistribution::validate
bool validate(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.h:341
memoryx::NormalDistribution::deserialize
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:172
memoryx::MultivariateNormalDistribution::ice_clone
Ice::ObjectPtr ice_clone() const override
Definition: ProbabilityMeasures.h:323
memoryx::NormalDistribution
Definition: ProbabilityMeasures.h:102
armarx::aron::type::ObjectPtr
std::shared_ptr< Object > ObjectPtr
Definition: Object.h:36
memoryx::GaussianMixtureDistribution::scaleComponents
void scaleComponents(::Ice::Float factor, const ::Ice::Current &=Ice::emptyCurrent) override
Multiply weight of each GM component with a given constant.
Definition: ProbabilityMeasures.cpp:703
memoryx::DiscreteProbability::deserialize
void deserialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.cpp:72
memoryx::UnivariateNormalDistribution::ice_clone
Ice::ObjectPtr ice_clone() const override
Definition: ProbabilityMeasures.h:180
GfxTL::Matrix3f
MatrixXX< 3, 3, float > Matrix3f
Definition: MatrixXX.h:649
memoryx::DiscreteProbability::serialize
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:62
memoryx::MultivariateNormalDistribution::fromEigenCovariance
void fromEigenCovariance(const Eigen::MatrixXf &cov) override
Definition: ProbabilityMeasures.cpp:485
armarx::VariantType::DiscreteProbability
const armarx::VariantTypeId DiscreteProbability
Definition: ProbabilityMeasures.h:34
Variant.h
memoryx::DiscreteProbability::validate
bool validate(const Ice::Current &c=Ice::emptyCurrent) override
Definition: ProbabilityMeasures.h:90
memoryx::IsotropicNormalDistribution::serialize
void serialize(const armarx::ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:375
memoryx::MultivariateNormalDistribution::getType
armarx::VariantTypeId getType(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:335
armarx::ctrlutil::s
double s(double t, double s0, double v0, double a0, double j)
Definition: CtrlUtil.h:33
armarx::Variant::addTypeName
static VariantTypeId addTypeName(const std::string &typeName)
Register a new type for the use in a Variant.
Definition: Variant.cpp:869
memoryx::GaussianMixtureDistribution::getComponent
GaussianMixtureComponent getComponent(::Ice::Int index, const ::Ice::Current &=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.cpp:569
memoryx::MultivariateNormalDistribution::getDensity
float getDensity(const Eigen::VectorXf &point) override
Definition: ProbabilityMeasures.cpp:499
armarx::VariantType::MultivariateNormalDistribution
const armarx::VariantTypeId MultivariateNormalDistribution
Definition: ProbabilityMeasures.h:40
memoryx::IsotropicNormalDistribution::getType
armarx::VariantTypeId getType(const Ice::Current &c=Ice::emptyCurrent) const override
Definition: ProbabilityMeasures.h:258