This repository is an extension of the original SE-Sync algorithm that adds efficient computation and certification of landmark/feature locations in addition to solving pose-graph SLAM. This is done by efficiently marginalizing over landmark measurement data, computing the certified optimal pose solution via SE-Sync and recovering the optimal landmark locations.
A description of the algorithm can be found in our article
The original SE-Sync repository can be found here.
Currently, SE-Sync-Landmarks has only been implemented in MATLAB.
Please see the SE-Sync repository for initial setup.
To solve for landmark locations in addition to solving pose-graph SLAM, the user must provide an additional flag to the measurements input structure of the original SE-Sync:
Field | Description |
---|---|
edges |
An (mx2)-dimension encoding the edges in the measurement network; edges(k, :) = [i,j] means that the |
R |
An m-dimensional cell array whose |
t |
An m-dimensional cell array whose |
kappa |
An m-dimensional cell array whose |
tau |
An m-dimensional cell array whose |
lmFlag |
An mx1 dimensional array of booleans indicating whether the measurement is a landmark measurement (true) or a pose measurement (false). It is expected that the relative rotation measurement associated with landmarks is set to a 3x3 matrix of zeros. |
When defining the edges
structure, the first
Once the input measurements
structure is assembled as defined above, the SE_sync
function can be called normally.
The output data structure is the same as in the standard SE-Sync. However, the output translation variables contain both pose and landmark translations in a single array. The first