From e69af84c36970fbbeb3de209e3bfe06cb034de69 Mon Sep 17 00:00:00 2001 From: Alex Cunningham Date: Wed, 12 Jun 2013 19:30:22 +0000 Subject: [PATCH] Added wrapping for graph/values serialization with tests in Matlab. Values serializes correctly, but graphs do not in either case. --- gtsam.h | 27 ++++++++++++++++++++++ matlab/gtsam_tests/testPlanarSLAMExample.m | 8 +++++++ matlab/gtsam_tests/testPose2SLAMExample.m | 9 ++++++++ 3 files changed, 44 insertions(+) diff --git a/gtsam.h b/gtsam.h index 20ea0bf8a..64270b133 100644 --- a/gtsam.h +++ b/gtsam.h @@ -2102,6 +2102,33 @@ pair load2D(string filename, pair load2D_robust(string filename, gtsam::noiseModel::Base* model); +//************************************************************************* +// Serialization +//************************************************************************* +#include + +// Serialize/Deserialize a NonlinearFactorGraph +string serializeGraph(const gtsam::NonlinearFactorGraph& graph); + +gtsam::NonlinearFactorGraph* deserializeGraph(string serialized_graph); + +string serializeGraphXML(const gtsam::NonlinearFactorGraph& graph); +string serializeGraphXML(const gtsam::NonlinearFactorGraph& graph, string name); + +gtsam::NonlinearFactorGraph* deserializeGraphXML(string serialized_graph); +gtsam::NonlinearFactorGraph* deserializeGraphXML(string serialized_graph, string name); + +// Serialize/Deserialize a Values +string serializeValues(const gtsam::Values& values); + +gtsam::Values* deserializeValues(string serialized_values); + +string serializeValuesXML(const gtsam::Values& values); +string serializeValuesXML(const gtsam::Values& values, string name); + +gtsam::Values* deserializeValuesXML(string serialized_values); +gtsam::Values* deserializeValuesXML(string serialized_values, string name); + //************************************************************************* // Utilities //************************************************************************* diff --git a/matlab/gtsam_tests/testPlanarSLAMExample.m b/matlab/gtsam_tests/testPlanarSLAMExample.m index 2a736a710..584b86345 100644 --- a/matlab/gtsam_tests/testPlanarSLAMExample.m +++ b/matlab/gtsam_tests/testPlanarSLAMExample.m @@ -68,4 +68,12 @@ point_1 = result.at(symbol('l',1)); marginals.marginalCovariance(symbol('l',1)); CHECK('point_1.equals(Point2(2,2),1e-4)',point_1.equals(Point2(2,2),1e-4)); +%% Check that serialization works properly +serialized_values = serializeValues(initialEstimate); +deserializedValues = deserializeValues(serialized_values); +CHECK('initialEstimate.equals(deserializedValues)',initialEstimate.equals(deserializedValues,1e-9)); +% FAILS: unregistered class? +% serialized_graph = serializeGraph(graph); +% deserializedGraph = deserializeGraph(serialized_graph); +% CHECK('graph.equals(deserializedGraph)',graph.equals(deserializedGraph,1e-9)); \ No newline at end of file diff --git a/matlab/gtsam_tests/testPose2SLAMExample.m b/matlab/gtsam_tests/testPose2SLAMExample.m index 127bcd41c..2ac354955 100644 --- a/matlab/gtsam_tests/testPose2SLAMExample.m +++ b/matlab/gtsam_tests/testPose2SLAMExample.m @@ -61,3 +61,12 @@ pose_1 = result.at(1); CHECK('pose_1.equals(Pose2,1e-4)',pose_1.equals(Pose2,1e-4)); +%% Check that serialization works properly +serialized_values = serializeValues(initialEstimate); +deserializedValues = deserializeValues(serialized_values); +CHECK('initialEstimate.equals(deserializedValues)',initialEstimate.equals(deserializedValues,1e-9)); + +% FAILS: unregistered class? +% serialized_graph = serializeGraph(graph); +% deserializedGraph = deserializeGraph(serialized_graph); +% CHECK('graph.equals(deserializedGraph)',graph.equals(deserializedGraph,1e-9));