Non-Gaussian State-estimation with JuliaRobotics/Caesar.jl
2019-07-23, 15:20–15:30, Elm B

Navigation and mapping for robots require data fusion from various sensors, each producing uncertain and opportunistic measurement data.
We are continuing with a multi-year, native Julia factor graph based simultaneous localization and mapping (SLAM) inference system that grew out of research work on non-Gaussian state-estimation, and is the primary implementation of the "multimodal-iSAM" algorithm from robotics literature.


We are actively using Julia in algorithmic research and development work for robotic navigation. In robotic navigation, multiple sensor data are combined such as odometers, cameras, inertial measurement units, lidars, GPS, sonar acoustics, etc. The dream is to build factor graph based non-Gaussian state-estimation into real-time capable systems. Julia has enabled the development of newer non-Gaussian inference techniques that would otherwise have been near intractable if attempted with older languages. Most SLAM systems today are built in C++ with some Python integration while others are using MATLAB with an eye on later C++ implementations. Switching to Julia has been worth it; our ongoing efforts are to formalize the benefits of the one-language / fast / distributed / high-level-numerical-syntax of Julia with an open-source development model. Our approach not only includes on-board computations but also distributed inference with a cloud server model. JuliaRobotics/Caesar.jl is an umbrella framework alongside dedicated packages such as RoME.jl / IncrementalInference.jl / Arena.jl / ApproxManifoldProducts.jl / GraffSDK.jl. The JuliaRobotics/Caesar.jl package depends on over 100 other Julia packages, creating challenges with first run compile times and debugging efforts. Our challenge now is to continue software development, all-round performance improvement, improved user experience, and help grow the JuliaRobotics community. Although the JuliaRobotics community is still small, we believe that Julia could become a significant language in robotics. In the mean-time, a multi-language interface is in the works too. We are actively using Julia in algorithmic research and development work for robotic navigation. Robotic navigation is generally done by combining data from multiple sensors such as odometers, cameras, inertial measurement units, lidars, GPS, sonar acoustics, etc. The dream is to build factor graph based non-Gaussian state-estimation into real-time capable systems. Julia has enabled the development of newer non-Gaussian inference techniques that would otherwise have been near intractable if attempted with older languages. Most SLAM systems today are built in C++ with some Python integration while others are using MATLAB with an eye on later C++ implementations. Switching to Julia has been worth it; our ongoing efforts are to formalize the benefits of the one-language / fast / distributed / high-level-numerical-syntax of Julia with an open-source development model. Our approach not only includes on-board computations but also distributed inference with a cloud server model. JuliaRobotics/Caesar.jl is an umbrella framework alongside dedicated packages such as RoME.jl / IncrementalInference.jl / Arena.jl / ApproxManifoldProducts.jl / GraffSDK.jl. The JuliaRobotics/Caesar.jl package depends on over 100 other Julia packages, creating challenges with first run compile times and debugging efforts. Our challenge now is to continue software development, all-round performance improvement, improved user experience, and help grow the JuliaRobotics community.