| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | /**
 | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:37 +08:00
										 |  |  |  * GTSAM Wrap Module Definition | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  |  * | 
					
						
							|  |  |  |  * These are the current classes available through the matlab toolbox interface, | 
					
						
							|  |  |  |  * add more functions/classes as they are available. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Requirements: | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:37 +08:00
										 |  |  |  *   Classes must start with an uppercase letter | 
					
						
							|  |  |  |  *   Only one Method/Constructor per line | 
					
						
							|  |  |  |  *   Methods can return | 
					
						
							|  |  |  |  *     - Eigen types:       Matrix, Vector | 
					
						
							| 
									
										
										
										
											2012-01-24 02:28:11 +08:00
										 |  |  |  *     - C/C++ basic types: string, bool, size_t, int, double, char | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:37 +08:00
										 |  |  |  *     - void | 
					
						
							|  |  |  |  *     - Any class with which be copied with boost::make_shared() | 
					
						
							|  |  |  |  *     - boost::shared_ptr of any object type | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  |  *   Limitations on methods | 
					
						
							|  |  |  |  *     - Parsing does not support overloading | 
					
						
							|  |  |  |  *     - There can only be one method with a given name | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:37 +08:00
										 |  |  |  *   Arguments to functions any of | 
					
						
							|  |  |  |  *   	 - Eigen types:       Matrix, Vector | 
					
						
							|  |  |  |  *   	 - Eigen types and classes as an optionally const reference | 
					
						
							|  |  |  |  *     - C/C++ basic types: string, bool, size_t, int, double | 
					
						
							|  |  |  |  *     - Any class with which be copied with boost::make_shared() (except Eigen) | 
					
						
							|  |  |  |  *     - boost::shared_ptr of any object type (except Eigen) | 
					
						
							|  |  |  |  *   Comments can use either C++ or C style, with multiple lines | 
					
						
							| 
									
										
										
										
											2011-12-09 04:58:06 +08:00
										 |  |  |  *   Namespace definitions | 
					
						
							|  |  |  |  *     - Names of namespaces must start with a lowercase letter | 
					
						
							|  |  |  |  *   	 - start a namespace with "namespace {" | 
					
						
							|  |  |  |  *   	 - end a namespace with exactly "}///\namespace [namespace_name]", optionally adding the name of the namespace | 
					
						
							|  |  |  |  *   	 - This ending is not C++ standard, and must contain "}///\namespace" to parse | 
					
						
							|  |  |  |  *   	 - Namespaces can be nested | 
					
						
							|  |  |  |  *   Namespace usage | 
					
						
							|  |  |  |  *   	 - Namespaces can be specified for classes in arguments and return values | 
					
						
							|  |  |  |  *   	 - In each case, the namespace must be fully specified, e.g., "namespace1::namespace2::ClassName" | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  |  *   Methods must start with a lowercase letter | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:30 +08:00
										 |  |  |  *   Static methods must start with a letter (upper or lowercase) and use the "static" keyword | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  |  *   Includes in C++ wrappers | 
					
						
							|  |  |  |  *   	 - By default, the include will be <[classname].h> | 
					
						
							| 
									
										
										
										
											2011-12-16 03:39:14 +08:00
										 |  |  |  *   	 - All namespaces must have angle brackets: <path> | 
					
						
							|  |  |  |  *   	 - To override, add a full include statement just before the class statement | 
					
						
							|  |  |  |  *   	 - An override include can be added for a namespace by placing it just before the namespace statement | 
					
						
							|  |  |  |  *   	 - Both classes and namespace accept exactly one namespace | 
					
						
							| 
									
										
										
										
											2011-12-16 05:27:08 +08:00
										 |  |  |  *   Overriding type dependency checks | 
					
						
							|  |  |  |  *     - If you are using a class 'OtherClass' not wrapped in this definition file, add "class OtherClass;" to avoid a dependency error | 
					
						
							|  |  |  |  *     - Limitation: this only works if the class does not need a namespace specification | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:37 +08:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * Status: | 
					
						
							|  |  |  |  *  - TODO: global functions | 
					
						
							| 
									
										
										
										
											2011-12-07 23:23:20 +08:00
										 |  |  |  *  - TODO: default values for arguments | 
					
						
							|  |  |  |  *  - TODO: overloaded functions | 
					
						
							| 
									
										
										
										
											2011-12-16 05:23:20 +08:00
										 |  |  |  *  - TODO: signatures for constructors can be ambiguous if two types have the same first letter | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |  *  - TODO: Handle gtsam::Rot3M conversions to quaternions | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-10 04:29:47 +08:00
										 |  |  | // Everything is in the gtsam namespace, so we avoid copying everything in
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //using namespace gtsam;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace gtsam { | 
					
						
							| 
									
										
										
										
											2011-12-10 04:29:47 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-18 04:04:37 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | // base
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | // geometry
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-14 02:41:56 +08:00
										 |  |  | class Point2 { | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   Point2(); | 
					
						
							|  |  |  |   Point2(double x, double y); | 
					
						
							|  |  |  |   static gtsam::Point2 Expmap(Vector v); | 
					
						
							|  |  |  | 	static Vector Logmap(const gtsam::Point2& p); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							|  |  |  | 	double x(); | 
					
						
							|  |  |  | 	double y(); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   Vector localCoordinates(const gtsam::Point2& p); | 
					
						
							|  |  |  | 	gtsam::Point2 compose(const gtsam::Point2& p2); | 
					
						
							|  |  |  | 	gtsam::Point2 between(const gtsam::Point2& p2); | 
					
						
							|  |  |  |   gtsam::Point2 retract(Vector v); | 
					
						
							| 
									
										
										
										
											2011-10-14 02:41:56 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Point3 { | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	Point3(); | 
					
						
							|  |  |  | 	Point3(double x, double y, double z); | 
					
						
							|  |  |  | 	Point3(Vector v); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	static gtsam::Point3 Expmap(Vector v); | 
					
						
							|  |  |  | 	static Vector Logmap(const gtsam::Point3& p); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::Point3& p, double tol); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	Vector vector() const; | 
					
						
							|  |  |  | 	double x(); | 
					
						
							|  |  |  | 	double y(); | 
					
						
							|  |  |  | 	double z(); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Vector localCoordinates(const gtsam::Point3& p); | 
					
						
							|  |  |  | 	gtsam::Point3 retract(Vector v); | 
					
						
							|  |  |  | 	gtsam::Point3 compose(const gtsam::Point3& p2); | 
					
						
							|  |  |  | 	gtsam::Point3 between(const gtsam::Point3& p2); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-10-14 02:41:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-14 12:43:40 +08:00
										 |  |  | class Rot2 { | 
					
						
							|  |  |  | 	Rot2(); | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | 	Rot2(double theta); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	static gtsam::Rot2 Expmap(Vector v); | 
					
						
							|  |  |  | 	static Vector Logmap(const gtsam::Rot2& p); | 
					
						
							|  |  |  | 	static gtsam::Rot2 fromAngle(double theta); | 
					
						
							|  |  |  | 	static gtsam::Rot2 fromDegrees(double theta); | 
					
						
							|  |  |  | 	static gtsam::Rot2 fromCosSin(double c, double s); | 
					
						
							|  |  |  | 	static gtsam::Rot2 relativeBearing(const gtsam::Point2& d); // Ignoring derivative
 | 
					
						
							|  |  |  | 	static gtsam::Rot2 atan2(double y, double x); | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::Rot2& rot, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-12-07 23:23:20 +08:00
										 |  |  | 	double theta() const; | 
					
						
							|  |  |  | 	double degrees() const; | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | 	double c() const; | 
					
						
							|  |  |  | 	double s() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Vector localCoordinates(const gtsam::Rot2& p); | 
					
						
							|  |  |  | 	gtsam::Rot2 retract(Vector v); | 
					
						
							|  |  |  | 	gtsam::Rot2 compose(const gtsam::Rot2& p2); | 
					
						
							|  |  |  | 	gtsam::Rot2 between(const gtsam::Rot2& p2); | 
					
						
							| 
									
										
										
										
											2011-10-14 12:43:40 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-01 09:59:34 +08:00
										 |  |  | class Rot3 { | 
					
						
							|  |  |  | 	Rot3(); | 
					
						
							|  |  |  | 	Rot3(Matrix R); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   static gtsam::Rot3 Rx(double t); | 
					
						
							|  |  |  |   static gtsam::Rot3 Ry(double t); | 
					
						
							|  |  |  |   static gtsam::Rot3 Rz(double t); | 
					
						
							|  |  |  | //  static gtsam::Rot3 RzRyRx(double x, double y, double z); // FIXME: overloaded functions don't work yet
 | 
					
						
							|  |  |  |   static gtsam::Rot3 RzRyRx(Vector xyz); | 
					
						
							|  |  |  |   static gtsam::Rot3 yaw  (double t); // positive yaw is to right (as in aircraft heading)
 | 
					
						
							|  |  |  |   static gtsam::Rot3 pitch(double t); // positive pitch is up (increasing aircraft altitude)
 | 
					
						
							|  |  |  |   static gtsam::Rot3 roll (double t); // positive roll is to right (increasing yaw in aircraft)
 | 
					
						
							|  |  |  |   static gtsam::Rot3 ypr(double y, double p, double r); | 
					
						
							|  |  |  |   static gtsam::Rot3 quaternion(double w, double x, double y, double z); | 
					
						
							|  |  |  |   static gtsam::Rot3 rodriguez(Vector v); | 
					
						
							| 
									
										
										
										
											2012-01-15 11:57:35 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::Rot3& rot, double tol) const; | 
					
						
							|  |  |  |   static gtsam::Rot3 identity(); | 
					
						
							|  |  |  |   gtsam::Rot3 compose(const gtsam::Rot3& p2) const; | 
					
						
							|  |  |  |   gtsam::Rot3 inverse() const; | 
					
						
							|  |  |  | 	gtsam::Rot3 between(const gtsam::Rot3& p2) const; | 
					
						
							|  |  |  | 	gtsam::Point3 rotate(const gtsam::Point3& p) const; | 
					
						
							|  |  |  | 	gtsam::Point3 unrotate(const gtsam::Point3& p) const; | 
					
						
							|  |  |  | 	gtsam::Rot3 retractCayley(Vector v) const; | 
					
						
							|  |  |  | 	gtsam::Rot3 retract(Vector v) const; | 
					
						
							|  |  |  | 	Vector localCoordinates(const gtsam::Rot3& p) const; | 
					
						
							|  |  |  | 	static gtsam::Rot3 Expmap(Vector v); | 
					
						
							|  |  |  | 	static Vector Logmap(const gtsam::Rot3& p); | 
					
						
							| 
									
										
										
										
											2011-12-02 02:57:32 +08:00
										 |  |  | 	Matrix matrix() const; | 
					
						
							|  |  |  | 	Matrix transpose() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Point3 column(int index) const; | 
					
						
							| 
									
										
										
										
											2011-12-02 02:57:32 +08:00
										 |  |  | 	Vector xyz() const; | 
					
						
							|  |  |  | 	Vector ypr() const; | 
					
						
							| 
									
										
										
										
											2012-01-15 11:57:35 +08:00
										 |  |  | 	Vector rpy() const; | 
					
						
							| 
									
										
										
										
											2011-12-08 00:41:50 +08:00
										 |  |  |   double roll() const; | 
					
						
							|  |  |  |   double pitch() const; | 
					
						
							|  |  |  |   double yaw() const; | 
					
						
							| 
									
										
										
										
											2011-12-07 23:23:20 +08:00
										 |  |  | //  Vector toQuaternion() const;  // FIXME: Can't cast to Vector properly
 | 
					
						
							| 
									
										
										
										
											2011-12-01 09:59:34 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-14 02:41:56 +08:00
										 |  |  | class Pose2 { | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	Pose2(); | 
					
						
							|  |  |  | 	Pose2(double x, double y, double theta); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Pose2(double theta, const gtsam::Point2& t); | 
					
						
							|  |  |  | 	Pose2(const gtsam::Rot2& r, const gtsam::Point2& t); | 
					
						
							| 
									
										
										
										
											2011-11-04 14:10:20 +08:00
										 |  |  | 	Pose2(Vector v); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	static gtsam::Pose2 Expmap(Vector v); | 
					
						
							|  |  |  | 	static Vector Logmap(const gtsam::Pose2& p); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::Pose2& pose, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	double x() const; | 
					
						
							|  |  |  | 	double y() const; | 
					
						
							|  |  |  | 	double theta() const; | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	int dim() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Vector localCoordinates(const gtsam::Pose2& p); | 
					
						
							|  |  |  | 	gtsam::Pose2 retract(Vector v); | 
					
						
							|  |  |  | 	gtsam::Pose2 compose(const gtsam::Pose2& p2); | 
					
						
							|  |  |  | 	gtsam::Pose2 between(const gtsam::Pose2& p2); | 
					
						
							|  |  |  | 	gtsam::Rot2 bearing(const gtsam::Point2& point); | 
					
						
							|  |  |  | 	double range(const gtsam::Point2& point); | 
					
						
							|  |  |  | 	gtsam::Point2 translation() const; | 
					
						
							|  |  |  | 	gtsam::Rot2 rotation() const; | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-01 09:59:34 +08:00
										 |  |  | class Pose3 { | 
					
						
							|  |  |  | 	Pose3(); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Pose3(const gtsam::Rot3& r, const gtsam::Point3& t); | 
					
						
							| 
									
										
										
										
											2011-12-02 02:57:32 +08:00
										 |  |  | 	Pose3(Matrix t); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Pose3(const gtsam::Pose2& pose2); | 
					
						
							|  |  |  | 	static gtsam::Pose3 Expmap(Vector v); | 
					
						
							|  |  |  | 	static Vector Logmap(const gtsam::Pose3& p); | 
					
						
							| 
									
										
										
										
											2011-12-01 09:59:34 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::Pose3& pose, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-12-01 09:59:34 +08:00
										 |  |  | 	double x() const; | 
					
						
							|  |  |  | 	double y() const; | 
					
						
							|  |  |  | 	double z() const; | 
					
						
							| 
									
										
										
										
											2011-12-02 02:57:32 +08:00
										 |  |  | 	Matrix matrix() const; | 
					
						
							|  |  |  | 	Matrix adjointMap() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Pose3 compose(const gtsam::Pose3& p2); | 
					
						
							|  |  |  | 	gtsam::Pose3 between(const gtsam::Pose3& p2); | 
					
						
							|  |  |  | 	gtsam::Pose3 retract(Vector v); | 
					
						
							|  |  |  | 	gtsam::Pose3 retractFirstOrder(Vector v); | 
					
						
							| 
									
										
										
										
											2012-02-04 12:40:35 +08:00
										 |  |  |   Vector localCoordinates(const gtsam::Pose3& T2) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Point3 translation() const; | 
					
						
							|  |  |  | 	gtsam::Rot3 rotation() const; | 
					
						
							| 
									
										
										
										
											2011-12-01 09:59:34 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-06 22:05:59 +08:00
										 |  |  | class CalibratedCamera { | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     CalibratedCamera(); | 
					
						
							|  |  |  |     CalibratedCamera(const gtsam::Pose3& pose); | 
					
						
							|  |  |  |     CalibratedCamera(const Vector& v); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-02-26 01:31:00 +08:00
										 |  |  |     bool equals(const gtsam::CalibratedCamera& camera, double tol) const; | 
					
						
							| 
									
										
										
										
											2012-02-06 22:05:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     gtsam::Pose3 pose() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gtsam::CalibratedCamera compose(const gtsam::CalibratedCamera& c) const; | 
					
						
							|  |  |  |     gtsam::CalibratedCamera inverse() const; | 
					
						
							|  |  |  |     gtsam::CalibratedCamera level(const gtsam::Pose2& pose2, double height); | 
					
						
							|  |  |  |     gtsam::CalibratedCamera retract(const Vector& d) const; | 
					
						
							|  |  |  |     Vector localCoordinates(const gtsam::CalibratedCamera& T2) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     gtsam::Point2 project(const gtsam::Point3& point) const; | 
					
						
							|  |  |  |     static gtsam::Point2 project_to_camera(const gtsam::Point3& cameraPoint); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-18 04:04:37 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | // inference
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | // linear
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | class SharedGaussian { | 
					
						
							|  |  |  | 	SharedGaussian(Matrix covariance); | 
					
						
							| 
									
										
										
										
											2011-11-05 22:26:57 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SharedDiagonal { | 
					
						
							|  |  |  | 	SharedDiagonal(Vector sigmas); | 
					
						
							| 
									
										
										
										
											2011-11-05 22:26:57 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							|  |  |  | 	Vector sample() const; | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class SharedNoiseModel { | 
					
						
							| 
									
										
										
										
											2012-02-13 01:41:57 +08:00
										 |  |  | 	static gtsam::SharedNoiseModel Sigmas(Vector sigmas); | 
					
						
							|  |  |  | 	static gtsam::SharedNoiseModel Sigma(size_t dim, double sigma); | 
					
						
							|  |  |  | 	static gtsam::SharedNoiseModel Precisions(Vector precisions); | 
					
						
							|  |  |  | 	static gtsam::SharedNoiseModel Precision(size_t dim, double precision); | 
					
						
							|  |  |  | 	static gtsam::SharedNoiseModel Unit(size_t dim); | 
					
						
							|  |  |  | 	static gtsam::SharedNoiseModel SqrtInformation(Matrix R); | 
					
						
							|  |  |  | 	static gtsam::SharedNoiseModel Covariance(Matrix covariance); | 
					
						
							| 
									
										
										
										
											2012-01-05 00:18:38 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | class VectorValues { | 
					
						
							|  |  |  | 	VectorValues(); | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	VectorValues(int nVars, int varDim); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::VectorValues& expected, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	int size() const; | 
					
						
							| 
									
										
										
										
											2012-01-05 00:18:38 +08:00
										 |  |  | 	void insert(int j, Vector value); | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | class GaussianConditional { | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	GaussianConditional(int key, Vector d, Matrix R, Vector sigmas); | 
					
						
							|  |  |  | 	GaussianConditional(int key, Vector d, Matrix R, int name1, Matrix S, | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | 			Vector sigmas); | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	GaussianConditional(int key, Vector d, Matrix R, int name1, Matrix S, | 
					
						
							|  |  |  | 			int name2, Matrix T, Vector sigmas); | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::GaussianConditional &cg, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-28 06:20:43 +08:00
										 |  |  | class GaussianDensity { | 
					
						
							|  |  |  | 	GaussianDensity(int key, Vector d, Matrix R, Vector sigmas); | 
					
						
							|  |  |  | 	void print(string s) const; | 
					
						
							|  |  |  | 	Vector mean() const; | 
					
						
							|  |  |  | 	Matrix information() const; | 
					
						
							|  |  |  | 	Matrix covariance() const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | class GaussianBayesNet { | 
					
						
							|  |  |  | 	GaussianBayesNet(); | 
					
						
							|  |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::GaussianBayesNet& cbn, double tol) const; | 
					
						
							|  |  |  | 	void push_back(gtsam::GaussianConditional* conditional); | 
					
						
							|  |  |  | 	void push_front(gtsam::GaussianConditional* conditional); | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GaussianFactor { | 
					
						
							|  |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::GaussianFactor& lf, double tol) const; | 
					
						
							|  |  |  | 	double error(const gtsam::VectorValues& c) const; | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | class JacobianFactor { | 
					
						
							|  |  |  | 	JacobianFactor(); | 
					
						
							|  |  |  | 	JacobianFactor(Vector b_in); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	JacobianFactor(int i1, Matrix A1, Vector b, const gtsam::SharedDiagonal& model); | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	JacobianFactor(int i1, Matrix A1, int i2, Matrix A2, Vector b, | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 			const gtsam::SharedDiagonal& model); | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	JacobianFactor(int i1, Matrix A1, int i2, Matrix A2, int i3, Matrix A3, | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 			Vector b, const gtsam::SharedDiagonal& model); | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::GaussianFactor& lf, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | 	bool empty() const; | 
					
						
							|  |  |  | 	Vector getb() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	double error(const gtsam::VectorValues& c) const; | 
					
						
							|  |  |  | 	gtsam::GaussianConditional* eliminateFirst(); | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-10-21 13:07:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | class HessianFactor { | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	HessianFactor(const gtsam::HessianFactor& gf); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 	HessianFactor(); | 
					
						
							|  |  |  | 	HessianFactor(int j, Matrix G, Vector g, double f); | 
					
						
							|  |  |  | 	HessianFactor(int j, Vector mu, Matrix Sigma); | 
					
						
							|  |  |  | 	HessianFactor(int j1, int j2, Matrix G11, Matrix G12, Vector g1, Matrix G22, | 
					
						
							|  |  |  | 			Vector g2, double f); | 
					
						
							|  |  |  | 	HessianFactor(int j1, int j2, int j3, Matrix G11, Matrix G12, Matrix G13, | 
					
						
							|  |  |  | 			Vector g1, Matrix G22, Matrix G23, Vector g2, Matrix G33, Vector g3, | 
					
						
							|  |  |  | 			double f); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	HessianFactor(const gtsam::GaussianConditional& cg); | 
					
						
							|  |  |  | 	HessianFactor(const gtsam::GaussianFactor& factor); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  |   void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   bool equals(const gtsam::GaussianFactor& lf, double tol) const; | 
					
						
							|  |  |  |   double error(const gtsam::VectorValues& c) const; | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | class GaussianFactorGraph { | 
					
						
							|  |  |  | 	GaussianFactorGraph(); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   GaussianFactorGraph(const gtsam::GaussianBayesNet& CBN); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // From FactorGraph
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	void push_back(gtsam::GaussianFactor* factor); | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::GaussianFactorGraph& lfgraph, double tol) const; | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	int size() const; | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Building the graph
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	void add(gtsam::JacobianFactor* factor); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 	void add(Vector b); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	void add(int key1, Matrix A1, Vector b, const gtsam::SharedDiagonal& model); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 	void add(int key1, Matrix A1, int key2, Matrix A2, Vector b, | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 			const gtsam::SharedDiagonal& model); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 	void add(int key1, Matrix A1, int key2, Matrix A2, int key3, Matrix A3, | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 			Vector b, const gtsam::SharedDiagonal& model); | 
					
						
							|  |  |  | 	void add(gtsam::HessianFactor* factor); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// error and probability
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	double error(const gtsam::VectorValues& c) const; | 
					
						
							|  |  |  | 	double probPrime(const gtsam::VectorValues& c) const; | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// combining
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   static gtsam::GaussianFactorGraph combine2(const gtsam::GaussianFactorGraph& lfg1, | 
					
						
							|  |  |  |       const gtsam::GaussianFactorGraph& lfg2); | 
					
						
							|  |  |  | 	void combine(const gtsam::GaussianFactorGraph& lfg); | 
					
						
							| 
									
										
										
										
											2012-01-20 12:35:12 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Conversion to matrices
 | 
					
						
							|  |  |  | 	Matrix sparseJacobian_() const; | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	Matrix denseJacobian() const; | 
					
						
							|  |  |  | 	Matrix denseHessian() const; | 
					
						
							| 
									
										
										
										
											2011-10-23 03:42:02 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-10-14 02:41:56 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | class GaussianSequentialSolver { | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   GaussianSequentialSolver(const gtsam::GaussianFactorGraph& graph, bool useQR); | 
					
						
							|  |  |  |   gtsam::GaussianBayesNet* eliminate() const; | 
					
						
							|  |  |  |   gtsam::VectorValues* optimize() const; | 
					
						
							|  |  |  |   gtsam::GaussianFactor* marginalFactor(int j) const; | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  |   Matrix marginalCovariance(int j) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-04 08:27:02 +08:00
										 |  |  | class KalmanFilter { | 
					
						
							| 
									
										
										
										
											2012-01-28 06:20:43 +08:00
										 |  |  | 	KalmanFilter(size_t n); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::GaussianDensity* init(Vector x0, const gtsam::SharedDiagonal& P0); | 
					
						
							|  |  |  | 	gtsam::GaussianDensity* init(Vector x0, Matrix P0); | 
					
						
							| 
									
										
										
										
											2011-11-04 08:27:02 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	static int step(gtsam::GaussianDensity* p); | 
					
						
							|  |  |  | 	gtsam::GaussianDensity* predict(gtsam::GaussianDensity* p, Matrix F, Matrix B, Vector u, | 
					
						
							|  |  |  | 			const gtsam::SharedDiagonal& modelQ); | 
					
						
							|  |  |  | 	gtsam::GaussianDensity* predictQ(gtsam::GaussianDensity* p, Matrix F, Matrix B, Vector u, | 
					
						
							| 
									
										
										
										
											2012-01-28 06:20:43 +08:00
										 |  |  | 			Matrix Q); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::GaussianDensity* predict2(gtsam::GaussianDensity* p, Matrix A0, Matrix A1, Vector b, | 
					
						
							|  |  |  | 			const gtsam::SharedDiagonal& model); | 
					
						
							|  |  |  | 	gtsam::GaussianDensity* update(gtsam::GaussianDensity* p, Matrix H, Vector z, | 
					
						
							|  |  |  | 			const gtsam::SharedDiagonal& model); | 
					
						
							| 
									
										
										
										
											2012-02-01 05:06:56 +08:00
										 |  |  | 	gtsam::GaussianDensity* updateQ(gtsam::GaussianDensity* p, Matrix H, Vector z, | 
					
						
							|  |  |  | 	    Matrix Q); | 
					
						
							| 
									
										
										
										
											2011-11-04 08:27:02 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-18 04:04:37 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | // nonlinear
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | class Ordering { | 
					
						
							|  |  |  | 	Ordering(); | 
					
						
							|  |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	bool equals(const gtsam::Ordering& ord, double tol) const; | 
					
						
							| 
									
										
										
										
											2012-02-26 01:31:00 +08:00
										 |  |  | 	void push_back(size_t key); | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | class NonlinearOptimizationParameters { | 
					
						
							|  |  |  | 	NonlinearOptimizationParameters(double absDecrease, double relDecrease, | 
					
						
							|  |  |  | 			double sumError, int iIters, double lambda, double lambdaFactor); | 
					
						
							|  |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-02-06 07:00:57 +08:00
										 |  |  | 	static gtsam::NonlinearOptimizationParameters* newDecreaseThresholds(double absDecrease, | 
					
						
							| 
									
										
										
										
											2012-02-06 06:34:35 +08:00
										 |  |  | 			double relDecrease); | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | }///\namespace gtsam
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-18 04:04:37 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | // planarSLAM
 | 
					
						
							| 
									
										
										
										
											2012-01-18 04:04:37 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 03:39:14 +08:00
										 |  |  | #include <gtsam/slam/planarSLAM.h>
 | 
					
						
							| 
									
										
										
										
											2011-12-09 23:44:37 +08:00
										 |  |  | namespace planarSLAM { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Values { | 
					
						
							| 
									
										
										
										
											2011-12-09 23:44:37 +08:00
										 |  |  | 	Values(); | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Pose2 pose(int key) const; | 
					
						
							|  |  |  | 	gtsam::Point2 point(int key) const; | 
					
						
							|  |  |  | 	void insertPose(int key, const gtsam::Pose2& pose); | 
					
						
							|  |  |  | 	void insertPoint(int key, const gtsam::Point2& point); | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Graph { | 
					
						
							| 
									
										
										
										
											2011-12-09 23:44:37 +08:00
										 |  |  | 	Graph(); | 
					
						
							| 
									
										
										
										
											2011-10-29 00:25:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void print(string s) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-09 23:44:37 +08:00
										 |  |  | 	double error(const planarSLAM::Values& values) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Ordering* orderingCOLAMD(const planarSLAM::Values& values) const; | 
					
						
							|  |  |  | 	gtsam::GaussianFactorGraph* linearize(const planarSLAM::Values& values, | 
					
						
							|  |  |  | 			const gtsam::Ordering& ordering) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void addPrior(int key, const gtsam::Pose2& pose, const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							|  |  |  | 	void addPoseConstraint(int key, const gtsam::Pose2& pose); | 
					
						
							|  |  |  | 	void addOdometry(int key1, int key2, const gtsam::Pose2& odometry, const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							|  |  |  | 	void addBearing(int poseKey, int pointKey, const gtsam::Rot2& bearing, const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							|  |  |  | 	void addRange(int poseKey, int pointKey, double range, const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							|  |  |  | 	void addBearingRange(int poseKey, int pointKey, const gtsam::Rot2& bearing, double range, | 
					
						
							|  |  |  | 			const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							| 
									
										
										
										
											2012-02-06 06:34:35 +08:00
										 |  |  | 	planarSLAM::Values optimize(const planarSLAM::Values& initialEstimate); | 
					
						
							| 
									
										
										
										
											2011-10-22 00:56:50 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Odometry { | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	Odometry(int key1, int key2, const gtsam::Pose2& measured, | 
					
						
							|  |  |  | 			const gtsam::SharedNoiseModel& model); | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-02-06 06:34:35 +08:00
										 |  |  | 	gtsam::GaussianFactor* linearize(const planarSLAM::Values& center, const gtsam::Ordering& ordering) const; | 
					
						
							| 
									
										
										
										
											2011-11-04 12:27:55 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-11-29 05:31:34 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | class Optimizer { | 
					
						
							|  |  |  | 	Optimizer(planarSLAM::Graph* graph, planarSLAM::Values* values, | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	    gtsam::Ordering* ordering, gtsam::NonlinearOptimizationParameters* parameters); | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-09 23:44:37 +08:00
										 |  |  | }///\namespace planarSLAM
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | // gtsam::Pose2SLAM
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-28 10:49:43 +08:00
										 |  |  | #include <gtsam/slam/pose2SLAM.h>
 | 
					
						
							|  |  |  | namespace pose2SLAM { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Values { | 
					
						
							|  |  |  |   Values(); | 
					
						
							|  |  |  |   void print(string s) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   void insertPose(int key, const gtsam::Pose2& pose); | 
					
						
							|  |  |  |   gtsam::Pose2 pose(int i); | 
					
						
							| 
									
										
										
										
											2012-01-28 10:49:43 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Graph { | 
					
						
							|  |  |  |   Graph(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   void print(string s) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   double error(const pose2SLAM::Values& values) const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   gtsam::Ordering* orderingCOLAMD(const pose2SLAM::Values& values) const; | 
					
						
							|  |  |  |   gtsam::GaussianFactorGraph* linearize(const pose2SLAM::Values& values, | 
					
						
							|  |  |  |       const gtsam::Ordering& ordering) const; | 
					
						
							| 
									
										
										
										
											2012-01-28 10:49:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  |   void addPrior(int key, const gtsam::Pose2& pose, const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							|  |  |  |   void addPoseConstraint(int key, const gtsam::Pose2& pose); | 
					
						
							|  |  |  |   void addOdometry(int key1, int key2, const gtsam::Pose2& odometry, const gtsam::SharedNoiseModel& noiseModel); | 
					
						
							| 
									
										
										
										
											2012-01-28 10:49:43 +08:00
										 |  |  |   pose2SLAM::Values optimize(const pose2SLAM::Values& initialEstimate); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | class Optimizer { | 
					
						
							|  |  |  | 	Optimizer(pose2SLAM::Graph* graph, pose2SLAM::Values* values, | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	    gtsam::Ordering* ordering, gtsam::NonlinearOptimizationParameters* parameters); | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | 	void print(string s) const; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-28 10:49:43 +08:00
										 |  |  | }///\namespace pose2SLAM
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-29 03:45:17 +08:00
										 |  |  | //*************************************************************************
 | 
					
						
							|  |  |  | // Simulated2D
 | 
					
						
							|  |  |  | //*************************************************************************
 | 
					
						
							| 
									
										
										
										
											2012-01-28 10:49:43 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 03:39:14 +08:00
										 |  |  | #include <gtsam/slam/simulated2D.h>
 | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | namespace simulated2D { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Values { | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | 	Values(); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	void insertPose(int i, const gtsam::Point2& p); | 
					
						
							|  |  |  | 	void insertPoint(int j, const gtsam::Point2& p); | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | 	int nrPoses() const; | 
					
						
							|  |  |  | 	int nrPoints() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Point2 pose(int i); | 
					
						
							|  |  |  | 	gtsam::Point2 point(int j); | 
					
						
							| 
									
										
										
										
											2011-11-29 05:31:34 +08:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Graph { | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | 	Graph(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // TODO: add factors, etc.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }///\namespace simulated2D
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Simulated2DOriented Example Domain
 | 
					
						
							| 
									
										
										
										
											2011-12-16 03:39:14 +08:00
										 |  |  | #include <gtsam/slam/simulated2DOriented.h>
 | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | namespace simulated2DOriented { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Values { | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | 	Values(); | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	void insertPose(int i, const gtsam::Pose2& p); | 
					
						
							|  |  |  | 	void insertPoint(int j, const gtsam::Point2& p); | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | 	int nrPoses() const; | 
					
						
							|  |  |  | 	int nrPoints() const; | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 	gtsam::Pose2 pose(int i); | 
					
						
							|  |  |  | 	gtsam::Point2 point(int j); | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-16 00:18:03 +08:00
										 |  |  | class Graph { | 
					
						
							| 
									
										
										
										
											2011-12-10 00:36:50 +08:00
										 |  |  | 	Graph(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // TODO: add factors, etc.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }///\namespace simulated2DOriented
 | 
					
						
							| 
									
										
										
										
											2011-12-07 11:05:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //// These are considered to be broken and will be added back as they start working
 | 
					
						
							|  |  |  | //// It's assumed that there have been interface changes that might break this
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Ordering{
 | 
					
						
							|  |  |  | //	Ordering(string key);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  bool equals(const Ordering& ord, double tol) const;
 | 
					
						
							|  |  |  | //	Ordering subtract(const Ordering& keys) const;
 | 
					
						
							|  |  |  | //	void unique ();
 | 
					
						
							|  |  |  | //	void reverse ();
 | 
					
						
							|  |  |  | //  void push_back(string s);
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class GaussianFactorSet {
 | 
					
						
							|  |  |  | //  GaussianFactorSet();
 | 
					
						
							|  |  |  | //  void push_back(GaussianFactor* factor);
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DPosePrior {
 | 
					
						
							|  |  |  | //	Simulated2DPosePrior(Point2& mu, const SharedDiagonal& model, int i);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  double error(const Simulated2DValues& c) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DOrientedPosePrior {
 | 
					
						
							|  |  |  | //	Simulated2DOrientedPosePrior(Pose2& mu, const SharedDiagonal& model, int i);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  double error(const Simulated2DOrientedValues& c) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DPointPrior {
 | 
					
						
							|  |  |  | //	Simulated2DPointPrior(Point2& mu, const SharedDiagonal& model, int i);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  double error(const Simulated2DValues& c) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DOdometry {
 | 
					
						
							|  |  |  | //  Simulated2DOdometry(Point2& mu, const SharedDiagonal& model, int i1, int i2);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  double error(const Simulated2DValues& c) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DOrientedOdometry {
 | 
					
						
							|  |  |  | //	Simulated2DOrientedOdometry(Pose2& mu, const SharedDiagonal& model, int i1, int i2);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  double error(const Simulated2DOrientedValues& c) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DMeasurement {
 | 
					
						
							|  |  |  | //  Simulated2DMeasurement(Point2& mu, const SharedDiagonal& model, int i, int j);
 | 
					
						
							|  |  |  | //  void print(string s) const;
 | 
					
						
							|  |  |  | //  double error(const Simulated2DValues& c) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class GaussianFactor {
 | 
					
						
							|  |  |  | //	GaussianFactor(string key1,
 | 
					
						
							|  |  |  | //			Matrix A1,
 | 
					
						
							|  |  |  | //			Vector b_in,
 | 
					
						
							|  |  |  | //			const SharedDiagonal& model);
 | 
					
						
							|  |  |  | //	GaussianFactor(string key1,
 | 
					
						
							|  |  |  | //			Matrix A1,
 | 
					
						
							|  |  |  | //			string key2,
 | 
					
						
							|  |  |  | //			Matrix A2,
 | 
					
						
							|  |  |  | //			Vector b_in,
 | 
					
						
							|  |  |  | //			const SharedDiagonal& model);
 | 
					
						
							|  |  |  | //	GaussianFactor(string key1,
 | 
					
						
							|  |  |  | //			Matrix A1,
 | 
					
						
							|  |  |  | //			string key2,
 | 
					
						
							|  |  |  | //			Matrix A2,
 | 
					
						
							|  |  |  | //			string key3,
 | 
					
						
							|  |  |  | //			Matrix A3,
 | 
					
						
							|  |  |  | //			Vector b_in,
 | 
					
						
							|  |  |  | //			const SharedDiagonal& model);
 | 
					
						
							|  |  |  | //	bool involves(string key) const;
 | 
					
						
							|  |  |  | //	Matrix getA(string key) const;
 | 
					
						
							|  |  |  | //	pair<Matrix,Vector> matrix(const Ordering& ordering) const;
 | 
					
						
							|  |  |  | //	pair<GaussianConditional*,GaussianFactor*> eliminate(string key) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class GaussianFactorGraph {
 | 
					
						
							|  |  |  | //	GaussianConditional* eliminateOne(string key);
 | 
					
						
							|  |  |  | //	GaussianBayesNet* eliminate_(const Ordering& ordering);
 | 
					
						
							|  |  |  | //	VectorValues* optimize_(const Ordering& ordering);
 | 
					
						
							|  |  |  | //	pair<Matrix,Vector> matrix(const Ordering& ordering) const;
 | 
					
						
							|  |  |  | //	VectorValues* steepestDescent_(const VectorValues& x0) const;
 | 
					
						
							|  |  |  | //	VectorValues* conjugateGradientDescent_(const VectorValues& x0) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //class gtsam::Pose2Values{
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	Pose2Values();
 | 
					
						
							|  |  |  | //	Pose2 get(string key) const;
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //	void insert(string name, const gtsam::Pose2& val);
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	void print(string s) const;
 | 
					
						
							|  |  |  | //	void clear();
 | 
					
						
							|  |  |  | //	int size();
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //class gtsam::Pose2Factor {
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	Pose2Factor(string key1, string key2,
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //			const gtsam::Pose2& measured, Matrix measurement_covariance);
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	void print(string name) const;
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //	double error(const gtsam::Pose2Values& c) const;
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	size_t size() const;
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //	GaussianFactor* linearize(const gtsam::Pose2Values& config) const;
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2012-02-04 01:18:32 +08:00
										 |  |  | //class gtsam::pose2SLAM::Graph{
 | 
					
						
							|  |  |  | //	pose2SLAM::Graph();
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	void print(string s) const;
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //	GaussianFactorGraph* linearize_(const gtsam::Pose2Values& config) const;
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	void push_back(Pose2Factor* factor);
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class SymbolicFactor{
 | 
					
						
							|  |  |  | //	SymbolicFactor(const Ordering& keys);
 | 
					
						
							|  |  |  | //	void print(string s) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DPosePrior {
 | 
					
						
							|  |  |  | //	GaussianFactor* linearize(const Simulated2DValues& config) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DOrientedPosePrior {
 | 
					
						
							|  |  |  | //	GaussianFactor* linearize(const Simulated2DOrientedValues& config) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DPointPrior {
 | 
					
						
							|  |  |  | //	GaussianFactor* linearize(const Simulated2DValues& config) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DOdometry {
 | 
					
						
							|  |  |  | //	GaussianFactor* linearize(const Simulated2DValues& config) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DOrientedOdometry {
 | 
					
						
							|  |  |  | //	GaussianFactor* linearize(const Simulated2DOrientedValues& config) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | //class Simulated2DMeasurement {
 | 
					
						
							|  |  |  | //	GaussianFactor* linearize(const Simulated2DValues& config) const;
 | 
					
						
							|  |  |  | //};
 | 
					
						
							|  |  |  | //
 | 
					
						
							| 
									
										
										
										
											2012-01-31 06:00:13 +08:00
										 |  |  | //class gtsam::Pose2SLAMOptimizer {
 | 
					
						
							| 
									
										
										
										
											2011-12-02 06:06:03 +08:00
										 |  |  | //	Pose2SLAMOptimizer(string dataset_name);
 | 
					
						
							|  |  |  | //	void print(string s) const;
 | 
					
						
							|  |  |  | //	void update(Vector x) const;
 | 
					
						
							|  |  |  | //	Vector optimize() const;
 | 
					
						
							|  |  |  | //	double error() const;
 | 
					
						
							|  |  |  | //	Matrix a1() const;
 | 
					
						
							|  |  |  | //	Matrix a2() const;
 | 
					
						
							|  |  |  | //	Vector b1() const;
 | 
					
						
							|  |  |  | //	Vector b2() const;
 | 
					
						
							|  |  |  | //};
 |