| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  | /* ----------------------------------------------------------------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 17:32:02 +08:00
										 |  |  |  * GTSAM Copyright 2010, Georgia Tech Research Corporation, | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  * -------------------------------------------------------------------------- */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * @brief exports NonlinearFactorGraph class to python | 
					
						
							| 
									
										
										
										
											2016-01-28 17:32:02 +08:00
										 |  |  |  * @author Andrew Melim | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  |  * @author Ellon Paiva Mendes (LAAS-CNRS) | 
					
						
							|  |  |  |  **/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | #include <boost/python.hpp>
 | 
					
						
							| 
									
										
										
										
											2015-11-21 04:40:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define NO_IMPORT_ARRAY
 | 
					
						
							|  |  |  | #include <numpy_eigen/NumpyEigenConverter.hpp>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | #include "gtsam/nonlinear/NonlinearFactorGraph.h"
 | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  | #include "gtsam/nonlinear/NonlinearFactor.h"
 | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | using namespace boost::python; | 
					
						
							|  |  |  | using namespace gtsam; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-25 16:58:08 +08:00
										 |  |  | BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(print_overloads, NonlinearFactorGraph::print, 0, 1); | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 17:32:02 +08:00
										 |  |  | boost::shared_ptr<NonlinearFactor> getNonlinearFactor( | 
					
						
							|  |  |  |     const NonlinearFactorGraph& graph, size_t idx) { | 
					
						
							|  |  |  |   auto p = boost::dynamic_pointer_cast<NonlinearFactor>(graph.at(idx)); | 
					
						
							|  |  |  |   if (!p) throw std::runtime_error("No NonlinearFactor at requested index"); | 
					
						
							|  |  |  |   return p; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | void exportNonlinearFactorGraph(){ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  |   typedef NonlinearFactorGraph::sharedFactor sharedFactor; | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  |   void (NonlinearFactorGraph::*push_back1)(const sharedFactor&) = &NonlinearFactorGraph::push_back; | 
					
						
							| 
									
										
										
										
											2016-06-19 14:13:59 +08:00
										 |  |  |   void (NonlinearFactorGraph::*push_back2)(const NonlinearFactorGraph&) = &NonlinearFactorGraph::push_back; | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  |   void (NonlinearFactorGraph::*add1)(const sharedFactor&) = &NonlinearFactorGraph::add; | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   class_<NonlinearFactorGraph>("NonlinearFactorGraph", init<>()) | 
					
						
							| 
									
										
										
										
											2016-01-28 17:32:02 +08:00
										 |  |  |     .def("size",&NonlinearFactorGraph::size) | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  |     .def("push_back", push_back1) | 
					
						
							| 
									
										
										
										
											2016-06-19 14:13:59 +08:00
										 |  |  |     .def("push_back", push_back2) | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  |     .def("add", add1) | 
					
						
							| 
									
										
										
										
											2016-06-19 14:13:59 +08:00
										 |  |  |     .def("error",  &NonlinearFactorGraph::error) | 
					
						
							| 
									
										
										
										
											2015-11-24 06:22:18 +08:00
										 |  |  |     .def("resize", &NonlinearFactorGraph::resize) | 
					
						
							|  |  |  |     .def("empty", &NonlinearFactorGraph::empty) | 
					
						
							| 
									
										
										
										
											2016-01-25 16:58:08 +08:00
										 |  |  |     .def("print", &NonlinearFactorGraph::print, print_overloads(args("s"))) | 
					
						
							| 
									
										
										
										
											2016-01-26 21:01:57 +08:00
										 |  |  |     .def("clone", &NonlinearFactorGraph::clone) | 
					
						
							| 
									
										
										
										
											2013-11-20 10:30:44 +08:00
										 |  |  |   ; | 
					
						
							| 
									
										
										
										
											2015-11-20 01:31:38 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 17:32:02 +08:00
										 |  |  |   def("getNonlinearFactor", getNonlinearFactor); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-25 16:58:08 +08:00
										 |  |  | } |