Introduction

Caesar is an open-source robotic software stack aimed at localization and mapping for robotics, using non-Gaussian graphical model state-estimation techniques. The factor graph method is well suited to combining heterogeneous and ambiguous sensor data streams. The focus is predominantly on geometric/spatial/semantic estimation tasks related to simultaneous localization and mapping (SLAM). The software is also highly extensible and well suited to a variety of estimation /filtering-type tasks — especially in non-Gaussian/multimodal settings. Check out a brief description on why non-Gaussian / multi-modal data processing needs arise.

A Few Highlights

Caesar.jl addresses numerous issues that arise in prior SLAM solutions, including:

  • Distributed Factor Graph representation deeply-coupled with an on-Manifold probabilistic algebra language;
  • Localization using different algorithms:
    • MM-iSAMv2
    • Parametric methods, including regular Guassian or Max-Mixtures.
    • Other multi-parametric and non-Gaussian algorithms are presently being implemented.
  • Solving under-defined systems,
  • Inference with non-Gaussian measurements,
  • Standard features for natively handling ambiguous data association and multi-hypotheses,
    • Native multi-modal (hypothesis) representation in the factor-graph, see Data Association and Hypotheses:
    • Multi-modal and non-parametric representation of constraints;
    • Gaussian distributions are but one of the many representations of measurement error;
  • Simplifying bespoke factor development,
  • Centralized (or peer-to-peer decentralized) factor-graph persistence,
    • i.e. Federated multi-session/agent reduction.
  • Multi-CPU inference.
  • Out-of-library extendable for Custom New Variables and Factors;
  • Natively supports legacy Gaussian parametric and max-mixtures solutions;
  • Local in-memory solving on the device as well as database-driven centralized solving (micro-service architecture);
  • Natively support Clique Recycling (i.e. fixed-lag out-marginalization) for continuous operation as well as off-line batch solving, see more at Using Incremental Updates (Clique Recycling I);
  • Natively supports Dead Reckon Tethering;
  • Natively supports Federated multi-session/agent solving;
  • Native support for Entry=>Data blobs for storing large format data.
  • Middleware support, e.g. see the ROS Integration Page.