wrap custom factor in a separate file
							parent
							
								
									e381a7c9d2
								
							
						
					
					
						commit
						3d3703441c
					
				|  | @ -0,0 +1,38 @@ | |||
| //************************************************************************* | ||||
| // Custom Factor wrapping | ||||
| //************************************************************************* | ||||
| 
 | ||||
| namespace gtsam { | ||||
| 
 | ||||
| #include <gtsam/nonlinear/CustomFactor.h> | ||||
| virtual class CustomFactor : gtsam::NoiseModelFactor { | ||||
|   /* | ||||
|    * Note CustomFactor will not be wrapped for MATLAB, as there is no supporting | ||||
|    * machinery there. This is achieved by adding `gtsam::CustomFactor` to the | ||||
|    * ignore list in `matlab/CMakeLists.txt`. | ||||
|    */ | ||||
|   CustomFactor(); | ||||
|   /* | ||||
|    * Example: | ||||
|    * ``` | ||||
|    * def error_func(this: CustomFactor, v: gtsam.Values, H: List[np.ndarray]): | ||||
|    *    <calculated error> | ||||
|    *    if not H is None: | ||||
|    *        <calculate the Jacobian> | ||||
|    *        H[0] = J1 # 2-d numpy array for a Jacobian block | ||||
|    *        H[1] = J2 | ||||
|    *        ... | ||||
|    *    return error # 1-d numpy array | ||||
|    * | ||||
|    * cf = CustomFactor(noise_model, keys, error_func) | ||||
|    * ``` | ||||
|    */ | ||||
|   CustomFactor(const gtsam::SharedNoiseModel& noiseModel, | ||||
|                const gtsam::KeyVector& keys, | ||||
|                const gtsam::CustomErrorFunction& errorFunction); | ||||
| 
 | ||||
|   void print(string s = "", | ||||
|              gtsam::KeyFormatter keyFormatter = gtsam::DefaultKeyFormatter); | ||||
| }; | ||||
| 
 | ||||
| } | ||||
|  | @ -73,6 +73,7 @@ set(interface_files | |||
|     ${GTSAM_SOURCE_DIR}/gtsam/geometry/geometry.i | ||||
|     ${GTSAM_SOURCE_DIR}/gtsam/linear/linear.i | ||||
|     ${GTSAM_SOURCE_DIR}/gtsam/nonlinear/nonlinear.i | ||||
|     ${GTSAM_SOURCE_DIR}/gtsam/nonlinear/custom.i | ||||
|     ${GTSAM_SOURCE_DIR}/gtsam/symbolic/symbolic.i | ||||
|     ${GTSAM_SOURCE_DIR}/gtsam/sam/sam.i | ||||
|     ${GTSAM_SOURCE_DIR}/gtsam/slam/slam.i | ||||
|  |  | |||
|  | @ -61,6 +61,7 @@ set(interface_headers | |||
|     ${PROJECT_SOURCE_DIR}/gtsam/geometry/geometry.i | ||||
|     ${PROJECT_SOURCE_DIR}/gtsam/linear/linear.i | ||||
|     ${PROJECT_SOURCE_DIR}/gtsam/nonlinear/nonlinear.i | ||||
|     ${PROJECT_SOURCE_DIR}/gtsam/nonlinear/custom.i | ||||
|     ${PROJECT_SOURCE_DIR}/gtsam/symbolic/symbolic.i | ||||
|     ${PROJECT_SOURCE_DIR}/gtsam/sam/sam.i | ||||
|     ${PROJECT_SOURCE_DIR}/gtsam/slam/slam.i | ||||
|  |  | |||
|  | @ -0,0 +1,12 @@ | |||
| /* Please refer to:
 | ||||
|  * https://pybind11.readthedocs.io/en/stable/advanced/cast/stl.html
 | ||||
|  * These are required to save one copy operation on Python calls. | ||||
|  * | ||||
|  * NOTES | ||||
|  * ================= | ||||
|  * | ||||
|  * `PYBIND11_MAKE_OPAQUE` will mark the type as "opaque" for the pybind11 | ||||
|  * automatic STL binding, such that the raw objects can be accessed in Python. | ||||
|  * Without this they will be automatically converted to a Python object, and all | ||||
|  * mutations on Python side will not be reflected on C++. | ||||
|  */ | ||||
|  | @ -10,3 +10,4 @@ | |||
|  * Without this they will be automatically converted to a Python object, and all | ||||
|  * mutations on Python side will not be reflected on C++. | ||||
|  */ | ||||
| #include <pybind11/stl.h> | ||||
|  |  | |||
|  | @ -0,0 +1,12 @@ | |||
| /* Please refer to:
 | ||||
|  * https://pybind11.readthedocs.io/en/stable/advanced/cast/stl.html
 | ||||
|  * These are required to save one copy operation on Python calls. | ||||
|  * | ||||
|  * NOTES | ||||
|  * ================= | ||||
|  * | ||||
|  * `py::bind_vector` and similar machinery gives the std container a Python-like | ||||
|  * interface, but without the `<pybind11/stl.h>` copying mechanism. Combined | ||||
|  * with `PYBIND11_MAKE_OPAQUE` this allows the types to be modified with Python, | ||||
|  * and saves one copy operation. | ||||
|  */ | ||||
		Loading…
	
		Reference in New Issue