david-m-rosen/SE-Sync

Documentation on how to start

Closed this issue · 5 comments

Hi,
I would like to start off by saying thank you for providing such a great algorithm for non-linear optimization. I would like to start using Se-Sync as a SLAM backend, but am unsure on how to start.

I went to check your main.cpp, the first thing that you do is read measurements from a file ? If understand correctly, that file contains the pose graph? But in real application where would this information come from ?

Is something else suppose to be run before applying the Se-Sync ? Does it mean, that I need to use something else to get the poses before applying your algorithm ? Do I need to use for e.g g2o to create a pose graph before applying Se-Sync ?

I am new in this field so sorry if all of this is obvious.
Thank you for your time

Hi @an99990,

Thanks for your interest in the project!

So as you mention, SE-Sync solves the "back-end" SLAM problem: given a pose-graph optimization problem, find its global minimizer. The problem of constructing a (global) pose-graph optimization problem from raw sensor data (e.g. laser scans, IMU measurements, etc.) is beyond the scope of this method; in brief, this amounts to a feature extraction + data association problem, which is solved by the so-called "front-end" of a SLAM system. In practice, this is typically done using some kind of local relative motion estimation (e.g. laser scan matching, visual odometry, IMU integration, etc.) together with (global) loop closure detection (using e.g. bag-of-words place recognition, etc.).

hi @david-m-rosen thank you for your prompt answer. Is Se-Sync able to optimize ongoing pose-graph or does it need the whole graph ? I am asking because i wonder if this can be used online while constructing the pose-graph (SLAM front-end).

Thank you

do you have any advice on how or which library is usually used to construct pose graph ? Or is this something thats usually done manually like a linked list ?

thank you

can se-sync work with factor graph generated with GSAM ?

hey @an99990,
I know I'm not David but I think I can answer a few of these questions:

  1. Yes, SE-Sync is able to optimize an ongoing pose-graph. I myself managed to achieve it by adding the SE-Sync project to the hdl_graph_slam project made by koide3. The thing is, you need to call the SE-Sync optimizer each time a graph is updated;
  2. I know that there exists a library called g2o that has everything you need to work with a graph: add/delete vertices and edges, add/delete constraints, optimize, etc. You should check koide3's projects hdl_graph_slam and interactive_slam for more info on how to use this library;
  3. Sorry, I don't know how to work with GSAM.