Fiducial Slam vs. "regular" Slam

Can you explain the use case of “Fiducial Slam”? Here are some questions and proposed answers that you could maybe elaborate on?

Is it a fair statement to answer that Fiducial Slam needs a camera and does not require a Lidar. Also Fiducial Slam does not create a map of the “real world”. Instead it creates a coordinate system in the real world that can be used.

How does FS interact with move_base? What has to be configured? My best guess is that move_base needs to be told to pay attention to TF made by FS. Or r is it that FS publishes a map? Or both?

How does FS interact with AMCL? Again what has to be configured? AMCL is estimating position based on lidar echos and the map it has. So I am confused how the two interact.

Thanks!

Is it a fair statement to answer that Fiducial Slam needs a camera and does not require a Lidar. Also Fiducial Slam does not create a map of the “real world”. Instead it creates a coordinate system in the real world that can be used.

Yes that is a accurate assessment.

How does FS interact with move_base? What has to be configured? My best guess is that move_base needs to be told to pay attention to TF made by FS. Or r is it that FS publishes a map? Or both?

If you want to use move_base with fiducial slam, you need to have something publishing a global costmap (based on something like a floorplan or a lidar map) that is aligned to the fiducial map. Then the fiducials will provide a localization that can be used by move_base.

How does FS interact with AMCL? Again what has to be configured? AMCL is estimating position based on lidar echos and the map it has. So I am confused how the two interact.

This integration is something we need to work on more. Generally we use fiducials instead of AMCL, but ideally we do some smarter fusion of the 2 localization systems.

Thanks. That definitely helps. Is there a worked example that you can point me to, in particular about how to get the fiducial map to align with a floor plan. I guess it’s a set of tf dependencies but I am not quite clear how I would set it up. A bit of working documented code would really help.