UbiquityRobotics / fiducials

Simultaneous localization and mapping using fiducial markers.
BSD 3-Clause "New" or "Revised" License
265 stars 135 forks source link

Map.txt not updating - fiducial SLAM #218

Closed RegGrobler closed 4 years ago

RegGrobler commented 4 years ago

Good day

I am busy with a px4/gazebo/ros project where I want to use a downward facing camera on a multirotor uav for a fiducial slam application.

I assume that the uav will takeoff from an aruco marker. My map.txt thus has this fiducial saved at xyz location 0,0,0. I then will have another marker placed arbitrarily in the environment which also needs to be mapped using fiducial slam.

The problem im facing is that the other marker is only added to map.txt if both it and the initial starting marker are seen by the camera at the same time (eg. during high altitude flight). The reason for this as I understand is because fiducial slam has no way of knowing where the second marker is unless it can recognise a fiducial that has already been mapped. Am I correct in my understanding? Is this a limitation?

Is there a way to make use of onboard sensor information provided by the flight controller to provide fiducial slam with this information? How does something like the robot_localisation package fit into the picture?

Any help to make this clearer will be appreciated. Thank you!

rohbotics commented 4 years ago

Your assumption is correct, the map making system requires that any new fiducial is visible at the same time as a known fiducials.

This is by design, the absolute localization provided by onboard sensors can drift over time, so trying to use it for making a map is difficult, and the map will be quite inaccurate. It is theorhetically possible to add in the external data with a proper error model, but we don't support this at the moment.

RegGrobler commented 4 years ago

Thank you for the reply. Makes good sense.

RegGrobler commented 4 years ago

Good day Rohan

I saw on ros answers that you mentioned something about using robot localisation with this package. I want to also use robot localization but for a uav application. I am having some issues and perhaps since you have already gone through the process you might be able to spot an issue with my setup. If you have 5 minutes to spare I would really appreciate if you have a quick look at my ros answers question.

https://answers.ros.org/question/352359/how-to-use-fiducial_slam-with-robot_localisation/