Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
kilted

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

gtsam2mrpt_serial repository

gtsam2mrpt_serial

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MRPT/gtsam2mrpt_serial.git
VCS Type git
VCS Version develop
Last Updated 2026-02-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
gtsam2mrpt_serial 0.2.0

README

Ubuntu CI

Distro Build dev Build releases Stable version
ROS 2 Humble (Ubuntu 22.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Jazzy (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Kilted (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version
ROS 2 Rolling (Ubuntu 24.04) Build Status amd64 Build Status · arm64 Build Status Version

gtsam2mrpt_serial

A C++ library providing a bidirectional serialization bridge between GTSAM and mrpt-serialization.

Serialize and deserialize GTSAM data structures — including NonlinearFactorGraph and Values — to and from any mrpt I/O stream (files, sockets, pipes) with optional transparent compression.

Features

  • Fast — benchmarks show roughly half the wall-clock time of GTSAM’s native Boost binary serialization for mid-sized graphs (see Performance).
  • Portable — the binary format is stable across machine architectures, endianness, word sizes, and operating systems, unlike Boost serialization.
  • Versioned — a version tag is embedded in every serialized object so that future library releases can read files produced by older ones.
  • Compressed — transparent .gz and .zstd compression is available via mrpt::io::CCompressedOutputStream at no extra cost to the caller.
  • Stream-agnostic — works with any stream in mrpt-io: local files, TCP sockets, named pipes, in-memory buffers, and more.

Requirements

  • C++17 or newer (required by MRPT).
  • MRPT ≥ 2.4: install via sudo apt install libmrpt-dev (Ubuntu 22.04+), via the ROS 2 packages listed in the table above, or follow the MRPT install guide.
  • GTSAM: build from source or install from the official PPA.

Supported types

Category Types
Values Pose2, Pose3, Point2, Point3, Rot2, Rot3
Factors PriorFactor<T>, BetweenFactor<T> for all value types above
Noise models Gaussian, Diagonal, Isotropic, Constrained, Unit, Robust (with all built-in m-estimators)

Usage

Include the single header and use the << / >> stream operators:

#include <gtsam2mrpt_serial/serialize.h>
#include <mrpt/io/CCompressedOutputStream.h>
#include <mrpt/serialization/CArchive.h>

using namespace gtsam2mrpt_serial;

// --- Serialize ---
gtsam::NonlinearFactorGraph graph = /* ... */;
gtsam::Values               initial = /* ... */;

mrpt::io::CCompressedOutputStream f("graph.mrpt.zstd");
auto arch = mrpt::serialization::archiveFrom(f);
arch << graph << initial;

// --- Deserialize ---
mrpt::io::CCompressedInputStream f2("graph.mrpt.zstd");
auto arch2 = mrpt::serialization::archiveFrom(f2);

gtsam::NonlinearFactorGraph graph2;
gtsam::Values               initial2;
arch2 >> graph2 >> initial2;

For a more complete example, see gtsam2mrpt_serial/tests/main.cpp.

Installation

sudo apt install ros-$ROS_DISTRO-gtsam2mrpt-serial

From source

mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
git clone https://github.com/MRPT/gtsam2mrpt_serial.git
cd ~/ros2_ws
colcon build --packages-select gtsam2mrpt_serial

Performance

Profiling against GTSAM’s native Boost binary serialization on an Intel Core i7-6700HQ @ 2.60 GHz (Ubuntu 20.04, Boost 1.71, MRPT 2.4.4) shows approximately 2× faster serialization and deserialization for mid-sized factor graphs. The time axis below is logarithmic.

Serialization Serialization benchmark

Deserialization Deserialization benchmark

Benchmarking code: gtsam2mrpt_serial/tests/main.cpp.

License

Released under the 3-clause BSD license.