diff --git a/sm/CMakeLists.txt b/sm/CMakeLists.txt index 8a7b3efc91a5c8bd84b33a58a573592b34b3d1e9..0824a24356663b6f702ba11244bfdd4ab46c5528 100644 --- a/sm/CMakeLists.txt +++ b/sm/CMakeLists.txt @@ -162,6 +162,7 @@ SET(csm_sources ./csm/structprior/ConstraintManager.cpp ./csm/structprior/Constraint.cpp ./csm/structprior/MeasurementsLikelihood.cpp +./csm/structprior/Minimizer.cpp ./lib/egsl/egsl.c ./lib/egsl/egsl_conversions.c ./lib/egsl/egsl_misc.c diff --git a/sm/csm/structprior/MeasurementsLikelihood.cpp b/sm/csm/structprior/MeasurementsLikelihood.cpp index 55c606966f2e09517fe250d2339505435428338d..8bf0a58011a17b37382c3e76706cf78d695de4ac 100644 --- a/sm/csm/structprior/MeasurementsLikelihood.cpp +++ b/sm/csm/structprior/MeasurementsLikelihood.cpp @@ -3,6 +3,7 @@ MeasurementsLikelihood::MeasurementsLikelihood(int likelihood_function, int measurements_number) { function_type = likelihood_function; + error = 0; grad.resize(measurements_number); hess.resize(measurements_number); @@ -27,7 +28,7 @@ void MeasurementsLikelihood::ComputeAlphaLikelihoods(std::vector<double> x_vecto if (hess.size() != 0) hess.clear(); - // may be redundant, it's added in case some measurements are pre-discarded + // may be redundant, it's added in case some measurements are pre-discarded or something grad.resize(n); hess.resize(n); for (int i=0;i<n;i++) @@ -60,8 +61,6 @@ void MeasurementsLikelihood::ComputeAlphaLikelihoods(std::vector<double> x_vecto } } - - } @@ -72,6 +71,47 @@ void MeasurementsLikelihood::ComputeAlphaLikelihoods(std::vector<double> x_vecto } + +} + + +void MeasurementsLikelihood::ComputeRangeLikelihoods(std::vector<double> x_vector, std::vector<double> ranges0, std::vector<double> ranges_covs) +{ + + if (function_type == L2) + { + + + + + + } + + + + if (function_type == L1) + { + + + + + + } + + + + + } + + + + + + + + + + diff --git a/sm/csm/structprior/MeasurementsLikelihood.h b/sm/csm/structprior/MeasurementsLikelihood.h index 21da7f83a20f46e04875b76478d8ca759d46ae6c..6c13dbb3a701924a74f2a7c90ebcc91287e88e24 100644 --- a/sm/csm/structprior/MeasurementsLikelihood.h +++ b/sm/csm/structprior/MeasurementsLikelihood.h @@ -25,8 +25,8 @@ public: std::vector<std::vector<double> > hess; //methods public: - void ComputeAlphaLikelihoods(std::vector<double> x_vector, std::vector<double> alphas0, std::vector<double> alphas_covs ); - + void ComputeAlphaLikelihoods(std::vector<double> x_vector, std::vector<double> alphas0, std::vector<double> alphas_covs); + void ComputeRangeLikelihoods(std::vector<double> x_vector, std::vector<double> ranges0, std::vector<double> ranges_covs); }; diff --git a/sm/csm/structprior/structprior_test.cpp b/sm/csm/structprior/structprior_test.cpp index c73c6c012ba885c433ed978b1322549892400b34..eb723b239bd6bd1cbb678d7144e6657dd12bc325 100644 --- a/sm/csm/structprior/structprior_test.cpp +++ b/sm/csm/structprior/structprior_test.cpp @@ -3,6 +3,7 @@ #include "ConstraintManager.h" #include "MeasurementsLikelihood.h" +#include "Minimizer.h" int main(int argc, const char** argv) @@ -35,7 +36,7 @@ int main(int argc, const char** argv) int number_of_measurements = laserdata->nrays; MeasurementsLikelihood f(L2,number_of_measurements); - + Minimizer minimizer; //minimizer.Minimize(laserdata,f,cons_manager...)...