EarlyVisionConverters.cpp
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::Helpers
17 * @author Kai Welke ( welke 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 #include "EarlyVisionConverters.h"
24 
26 
27 namespace memoryx
28 {
29  Gaussian
30  EarlyVisionConverters::convertToGaussian(const NormalDistributionBasePtr& normalDistribution)
31  {
32  if (!normalDistribution)
33  {
34  ARMARX_WARNING_S << "normalDistribution is NULL";
35  return Gaussian();
36  }
37 
38  int dimensions = normalDistribution->getDimensions();
39  Gaussian result(dimensions);
40 
41  Eigen::MatrixXd cov(dimensions, dimensions);
42  Eigen::VectorXd mean(dimensions);
43 
44  for (int r = 0; r < dimensions; r++)
45  {
46  mean(r) = normalDistribution->getMean()[r];
47 
48  for (int c = 0; c < dimensions; c++)
49  {
50  cov(r, c) = normalDistribution->getCovariance(r, c);
51  }
52  }
53 
54  result.setCovariance(cov);
55  result.setMean(mean);
56 
57  return result;
58  }
59 
62  {
63  int dimensions = gaussian.getDimensions();
65 
67 
68  for (int r = 0; r < dimensions; r++)
69  {
70  Eigen::VectorXd meanV = gaussian.getMean();
71  mean.push_back(meanV(r));
72 
73  for (int c = 0; c < dimensions; c++)
74  {
75  Eigen::MatrixXd covV = gaussian.getCovariance();
76  result->setCovariance(r, c, covV(r, c));
77  }
78  }
79 
80  result->setMean(mean);
81 
82  return result;
83  }
84 
87  {
88  int dimensions = gaussian.getDimensions();
90 
92 
93  for (int d = 0; d < dimensions; d++)
94  {
95  mean.push_back(gaussian.getMean()(d));
96  result->setVariance(d, gaussian.getCovariance()(d, d));
97  }
98 
99  result->setMean(mean);
100 
101  return result;
102  }
103 
106  {
108  new UnivariateNormalDistribution(gaussian.getMean()(0), gaussian.getCovariance()(0, 0));
109 
110  return result;
111  }
112 } // namespace memoryx
Gaussian::getCovariance
const covariance_type & getCovariance() const
Definition: Gaussian.h:82
armarx::VariantType::IsotropicNormalDistribution
const armarx::VariantTypeId IsotropicNormalDistribution
Definition: ProbabilityMeasures.h:38
memoryx
VirtualRobot headers.
Definition: CommonPlacesTester.cpp:48
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
Gaussian::getDimensions
int getDimensions() const
Definition: Gaussian.h:94
IceInternal::Handle
Definition: forward_declarations.h:8
armarx::FloatVector
::std::vector<::Ice::Float > FloatVector
Definition: KinematicUnitGuiPlugin.h:325
memoryx::EarlyVisionConverters::convertToMemoryX_ISO
IsotropicNormalDistributionPtr convertToMemoryX_ISO(const Gaussian &gaussian)
Definition: EarlyVisionConverters.cpp:86
memoryx::EarlyVisionConverters::convertToGaussian
Gaussian convertToGaussian(const NormalDistributionBasePtr &normalDistribution)
Definition: EarlyVisionConverters.cpp:30
armarx::mean
std::optional< float > mean(const boost::circular_buffer< NameValueMap > &buffer, const std::string &key)
Definition: KinematicUnitGuiPlugin.cpp:1620
Gaussian::setMean
void setMean(const value_type &mean)
Definition: Gaussian.cpp:255
memoryx::EarlyVisionConverters::convertToMemoryX_UNI
UnivariateNormalDistributionPtr convertToMemoryX_UNI(const Gaussian &gaussian)
Definition: EarlyVisionConverters.cpp:105
Gaussian::setCovariance
void setCovariance(const covariance_type &cov)
Definition: Gaussian.cpp:272
ARMARX_WARNING_S
#define ARMARX_WARNING_S
Definition: Logging.h:213
armarx::VariantType::UnivariateNormalDistribution
const armarx::VariantTypeId UnivariateNormalDistribution
Definition: ProbabilityMeasures.h:36
EarlyVisionConverters.h
memoryx::EarlyVisionConverters::convertToMemoryX_MULTI
MultivariateNormalDistributionPtr convertToMemoryX_MULTI(const Gaussian &gaussian)
Definition: EarlyVisionConverters.cpp:61
Logging.h
Gaussian::getMean
const value_type & getMean() const
Definition: Gaussian.h:88
Gaussian
Definition: Gaussian.h:50
armarx::VariantType::MultivariateNormalDistribution
const armarx::VariantTypeId MultivariateNormalDistribution
Definition: ProbabilityMeasures.h:40