change test cases to use the updated names, remove 2nd Create in robust
							parent
							
								
									efc264d8ee
								
							
						
					
					
						commit
						90b286f553
					
				|  | @ -661,10 +661,10 @@ Robust::shared_ptr Robust::Create(const RobustModel::shared_ptr& robust, | |||
|   return shared_ptr(new Robust(robust, gaussian)); | ||||
| } | ||||
| 
 | ||||
| Robust::shared_ptr Robust::Create( | ||||
|   const RobustModel::shared_ptr &robust, const NoiseModel::shared_ptr noise){ | ||||
|   return shared_ptr(new Robust(robust,noise)); | ||||
| } | ||||
| // Robust::shared_ptr Robust::Create(
 | ||||
| //   const RobustModel::shared_ptr &robust, const NoiseModel::shared_ptr noise){
 | ||||
| //   return shared_ptr(new Robust(robust,noise));
 | ||||
| // }
 | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
| 
 | ||||
|  |  | |||
|  | @ -734,8 +734,8 @@ namespace gtsam { | |||
|       static shared_ptr Create( | ||||
|         const RobustModel::shared_ptr &robust, const noiseModel::Base::shared_ptr noise); | ||||
| 
 | ||||
|       static shared_ptr Create( | ||||
|         const RobustModel::shared_ptr &robust, const NoiseModel::shared_ptr noise); | ||||
|       // static shared_ptr Create(
 | ||||
|       //   const RobustModel::shared_ptr &robust, const NoiseModel::shared_ptr noise);
 | ||||
| 
 | ||||
|     private: | ||||
|       /** Serialization function */ | ||||
|  |  | |||
|  | @ -451,7 +451,7 @@ TEST(NoiseModel, WhitenInPlace) | |||
| 
 | ||||
| /*
 | ||||
|  * These tests are responsible for testing the weight functions for the m-estimators in GTSAM. | ||||
|  * The weight function is related to the analytic derivative of the residual function. See | ||||
|  * The weight function is related to the analytic derivative of the loss function. See | ||||
|  *  https://members.loria.fr/MOBerger/Enseignement/Master2/Documents/ZhangIVC-97-01.pdf
 | ||||
|  * for details. This weight function is required when optimizing cost functions with robust | ||||
|  * penalties using iteratively re-weighted least squares. | ||||
|  | @ -467,10 +467,10 @@ TEST(NoiseModel, robustFunctionFair) | |||
|   DOUBLES_EQUAL(0.3333333333333333, fair->weight(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.8333333333333333, fair->weight(error4), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.441961080151135, fair->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(22.534692783297260, fair->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(22.534692783297260, fair->residual(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.441961080151135, fair->residual(error4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.441961080151135, fair->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(22.534692783297260, fair->loss(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(22.534692783297260, fair->loss(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.441961080151135, fair->loss(error4), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionHuber) | ||||
|  | @ -483,10 +483,10 @@ TEST(NoiseModel, robustFunctionHuber) | |||
|   DOUBLES_EQUAL(0.5, huber->weight(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(1.0, huber->weight(error4), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.5000, huber->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(37.5000, huber->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(37.5000, huber->residual(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.5000, huber->residual(error4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.5000, huber->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(37.5000, huber->loss(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(37.5000, huber->loss(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.5000, huber->loss(error4), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionCauchy) | ||||
|  | @ -499,10 +499,10 @@ TEST(NoiseModel, robustFunctionCauchy) | |||
|   DOUBLES_EQUAL(0.2000, cauchy->weight(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.961538461538461, cauchy->weight(error4), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.490258914416017, cauchy->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(20.117973905426254, cauchy->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(20.117973905426254, cauchy->residual(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.490258914416017, cauchy->residual(error4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.490258914416017, cauchy->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(20.117973905426254, cauchy->loss(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(20.117973905426254, cauchy->loss(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.490258914416017, cauchy->loss(error4), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionGemanMcClure) | ||||
|  | @ -514,10 +514,10 @@ TEST(NoiseModel, robustFunctionGemanMcClure) | |||
|   DOUBLES_EQUAL(9.80296e-5, gmc->weight(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.25      , gmc->weight(error4), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.2500, gmc->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.495049504950495, gmc->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(0.495049504950495, gmc->residual(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.2500, gmc->residual(error4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.2500, gmc->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.495049504950495, gmc->loss(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(0.495049504950495, gmc->loss(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.2500, gmc->loss(error4), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionWelsch) | ||||
|  | @ -530,10 +530,10 @@ TEST(NoiseModel, robustFunctionWelsch) | |||
|   DOUBLES_EQUAL(0.018315638888734, welsch->weight(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.960789439152323, welsch->weight(error4), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.490132010595960, welsch->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(12.271054513890823, welsch->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(12.271054513890823, welsch->residual(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.490132010595960, welsch->residual(error4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.490132010595960, welsch->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(12.271054513890823, welsch->loss(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(12.271054513890823, welsch->loss(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.490132010595960, welsch->loss(error4), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionTukey) | ||||
|  | @ -546,10 +546,10 @@ TEST(NoiseModel, robustFunctionTukey) | |||
|   DOUBLES_EQUAL(0.0, tukey->weight(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.9216, tukey->weight(error4), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.480266666666667, tukey->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(4.166666666666667, tukey->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(4.166666666666667, tukey->residual(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.480266666666667, tukey->residual(error4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.480266666666667, tukey->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(4.166666666666667, tukey->loss(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(4.166666666666667, tukey->loss(error3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.480266666666667, tukey->loss(error4), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionDCS) | ||||
|  | @ -560,8 +560,8 @@ TEST(NoiseModel, robustFunctionDCS) | |||
|   DOUBLES_EQUAL(1.0       , dcs->weight(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.00039211, dcs->weight(error2), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(0.5         , dcs->residual(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.9900990099, dcs->residual(error2), 1e-8); | ||||
|   DOUBLES_EQUAL(0.5         , dcs->loss(error1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.9900990099, dcs->loss(error2), 1e-8); | ||||
| } | ||||
| 
 | ||||
| TEST(NoiseModel, robustFunctionL2WithDeadZone) | ||||
|  | @ -576,12 +576,12 @@ TEST(NoiseModel, robustFunctionL2WithDeadZone) | |||
|   DOUBLES_EQUAL(0.00990099009, lsdz->weight(e4), 1e-8); | ||||
|   DOUBLES_EQUAL(0.9,           lsdz->weight(e5), 1e-8); | ||||
| 
 | ||||
|   DOUBLES_EQUAL(40.5,    lsdz->residual(e0), 1e-8); | ||||
|   DOUBLES_EQUAL(0.00005, lsdz->residual(e1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.0,     lsdz->residual(e2), 1e-8); | ||||
|   DOUBLES_EQUAL(0.0,     lsdz->residual(e3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.00005, lsdz->residual(e4), 1e-8); | ||||
|   DOUBLES_EQUAL(40.5,    lsdz->residual(e5), 1e-8); | ||||
|   DOUBLES_EQUAL(40.5,    lsdz->loss(e0), 1e-8); | ||||
|   DOUBLES_EQUAL(0.00005, lsdz->loss(e1), 1e-8); | ||||
|   DOUBLES_EQUAL(0.0,     lsdz->loss(e2), 1e-8); | ||||
|   DOUBLES_EQUAL(0.0,     lsdz->loss(e3), 1e-8); | ||||
|   DOUBLES_EQUAL(0.00005, lsdz->loss(e4), 1e-8); | ||||
|   DOUBLES_EQUAL(40.5,    lsdz->loss(e5), 1e-8); | ||||
| } | ||||
| 
 | ||||
| /* ************************************************************************* */ | ||||
|  | @ -665,11 +665,11 @@ TEST(NoiseModel, robustNoiseL2WithDeadZone) | |||
| 
 | ||||
| /*
 | ||||
|  * TODO(mike): There is currently a bug in GTSAM, where none of the mEstimator classes | ||||
|  * implement a residual function, and GTSAM calls the weight function to evaluate the | ||||
|  * total penalty, rather than calling the residual function. The weight function should be | ||||
|  * implement a loss function, and GTSAM calls the weight function to evaluate the | ||||
|  * total penalty, rather than calling the loss function. The weight function should be | ||||
|  * used during iteratively reweighted least squares optimization, but should not be used to | ||||
|  * evaluate the total penalty. The long-term solution is for all mEstimators to implement | ||||
|  * both a weight and a residual function, and for GTSAM to call the residual function when | ||||
|  * both a weight and a loss function, and for GTSAM to call the loss function when | ||||
|  * evaluating the total penalty. This bug causes the test below to fail, so I'm leaving it | ||||
|  * commented out until the underlying bug in GTSAM is fixed. | ||||
|  * | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue