| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | /* ----------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-11 22:39:48 +08:00
										 |  |  |  * GTSAM Copyright 2010, Georgia Tech Research Corporation, | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  |  * Atlanta, Georgia 30332-0415 | 
					
						
							|  |  |  |  * All Rights Reserved | 
					
						
							|  |  |  |  * Authors: Frank Dellaert, et al. (see THANKS for the full author list) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * See LICENSE for the license information | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * -------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @file   testSimulated3D.cpp | 
					
						
							|  |  |  |  * @brief  Unit tests for simulated 3D measurement functions | 
					
						
							|  |  |  |  * @author Alex Cunningham | 
					
						
							|  |  |  |  **/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-10 04:15:44 +08:00
										 |  |  | #include <tests/simulated3D.h>
 | 
					
						
							| 
									
										
										
										
											2013-08-19 23:32:16 +08:00
										 |  |  | #include <gtsam/inference/Symbol.h>
 | 
					
						
							| 
									
										
										
										
											2012-06-03 03:05:38 +08:00
										 |  |  | #include <gtsam/geometry/Pose3.h>
 | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | #include <gtsam/base/Testable.h>
 | 
					
						
							|  |  |  | #include <gtsam/base/numericalDerivative.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-03 03:28:21 +08:00
										 |  |  | #include <CppUnitLite/TestHarness.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <iostream>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-11 09:03:15 +08:00
										 |  |  | using namespace std::placeholders; | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | using namespace gtsam; | 
					
						
							| 
									
										
										
										
											2012-06-03 03:28:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Convenience for named keys
 | 
					
						
							|  |  |  | using symbol_shorthand::X; | 
					
						
							|  |  |  | using symbol_shorthand::L; | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* ************************************************************************* */ | 
					
						
							|  |  |  | TEST( simulated3D, Values ) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   Values actual; | 
					
						
							|  |  |  |   actual.insert(L(1),Point3(1,1,1)); | 
					
						
							|  |  |  |   actual.insert(X(2),Point3(2,2,2)); | 
					
						
							|  |  |  |   EXPECT(assert_equal(actual,actual,1e-9)); | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* ************************************************************************* */ | 
					
						
							|  |  |  | TEST( simulated3D, Dprior ) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   Point3 x(1,-9, 7); | 
					
						
							| 
									
										
										
										
											2023-01-14 06:11:03 +08:00
										 |  |  |   Matrix numerical = numericalDerivative11<Point3, Point3>(std::bind(simulated3D::prior, std::placeholders::_1, nullptr),x); | 
					
						
							| 
									
										
										
										
											2012-10-02 22:40:07 +08:00
										 |  |  |   Matrix computed; | 
					
						
							|  |  |  |   simulated3D::prior(x,computed); | 
					
						
							|  |  |  |   EXPECT(assert_equal(numerical,computed,1e-9)); | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* ************************************************************************* */ | 
					
						
							|  |  |  | TEST( simulated3D, DOdo ) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2021-07-11 09:03:15 +08:00
										 |  |  |   Point3 x1(1, -9, 7), x2(-5, 6, 7); | 
					
						
							|  |  |  |   Matrix H1, H2; | 
					
						
							|  |  |  |   simulated3D::odo(x1, x2, H1, H2); | 
					
						
							|  |  |  |   Matrix A1 = numericalDerivative21<Point3, Point3, Point3>( | 
					
						
							|  |  |  |       std::bind(simulated3D::odo, std::placeholders::_1, std::placeholders::_2, | 
					
						
							| 
									
										
										
										
											2023-01-14 06:11:03 +08:00
										 |  |  |                 nullptr, nullptr), | 
					
						
							| 
									
										
										
										
											2021-07-11 09:03:15 +08:00
										 |  |  |       x1, x2); | 
					
						
							|  |  |  |   EXPECT(assert_equal(A1, H1, 1e-9)); | 
					
						
							|  |  |  |   Matrix A2 = numericalDerivative22<Point3, Point3, Point3>( | 
					
						
							|  |  |  |       std::bind(simulated3D::odo, std::placeholders::_1, std::placeholders::_2, | 
					
						
							| 
									
										
										
										
											2023-01-14 06:11:03 +08:00
										 |  |  |                 nullptr, nullptr), | 
					
						
							| 
									
										
										
										
											2021-07-11 09:03:15 +08:00
										 |  |  |       x1, x2); | 
					
						
							|  |  |  |   EXPECT(assert_equal(A2, H2, 1e-9)); | 
					
						
							| 
									
										
										
										
											2012-05-04 01:03:16 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* ************************************************************************* */ | 
					
						
							|  |  |  | int main() { TestResult tr; return TestRegistry::runAllTests(tr);} | 
					
						
							|  |  |  | /* ************************************************************************* */ |