Skip to content

Multiple Aruco markers

Related components: Autopilot Inference, Cerebra Studio – Mission Planner.

The Origin One loads maps and localizes itself using Aruco markers. Aruco markers have a distinct position in the navigation space of the robot, i.e., in its Cartesian global frame. Each Aruco marker may have been defined with a different global frame, where a global frame is defined with a point in the Earth's frame, i.e., with a Latitude and Longitude. That is why the pose of the Aruco marker that is stored in the database of the robot is stored together with the Latitude and Longitude of its global frame (also referred to as the Coordinate System Information).

When a map is being created, and the Origin One started in front of an Aruco marker, then the map will get the global frame that was stored in the database of the robot, which is not necessarily (although preferable) the global frame of the Aruco marker. Nonetheless, the position of the Aruco marker will be transformed into the new global frame in case the stored global frame (or Coordinate Systen Info), is different to that of the Aruco marker.

Normally, we advise to use one Aruco marker in the (indoor) operation area. The reason is that with one Aruco marker there is only one global frame, or Coordinate System, defined. And since the position of the Aruco marker and the map is automatically aligned in that one global frame it also means that estimated position of the robot based on the marker and based on the map are aligned.

However, if you want use multiple Aruco markers, then their global frame, or Coordinate System, with which each of them is stored in the database may be different. Or in case their Coordinate System is indeed the same, then still the real-world pose of one Aruco marker may not match the real-world pose of the other marker compared to how their poses are stored in the database of the robot (as is illustrated in the image below).

IncorrectMarkerPoses

In this section it is explained what you will need to do as a user when you want to use multiple Aruco markers in the same operational area. Reasons for using multiple Aruco markers may be to improve localization in large area, for docking tasks (although the Aruco marker does not need to be known to the robot for that), and for MULTI_MAP mode in which the robot is able to switch between maps.

Ensure all Aruco markers and maps use the same coordinate system

The case for using multiple Aruco markers is best when the robot, the Aruco markers and the Maps all use the same global frame, i.e., the same Coordinate System Information. More information about this Coordinate System Information, and how to set it, can be found on this webpage.

You may use the "information_examples" of the code examples to update the pose of the Aruco markers, i.e., X, Y and heading, and while you are updating this pose automatically the current Coordinate System Information of the Origin One will be stored with the Aruco marker's pose. Therefore, updating the pose of all Aruco markers known to the robot will ensure that all markers use the same Coordinate System Information. If you then also create new maps, and delete the old ones, then you will also be sure that all the maps in the robot use the same Coordinate System Information.

Warning

But before actual creating new maps, first make sure that the position of the Aruco markers is correctly updated.

Updating the pose of Aruco markers

We advice that you pick a real-world location for the global origin in the (indoor) operational area. This can be any fixed object. Also (virtually) define the orientation of the global frame, i.e., whereto are the X- and Y-axis directed. You may also pick the location where you fix the Aruco marker with ID = 0 as the global origin, this will match the the position of this marker as it is stored in the database of the robot when shipped, i.e., X = 0.0 meters, Y = 0.0 meters and heading = 0.0 degrees.

Next step is to measure the position of each Aruco marker, e.g., using a ruler. Please note that you measure the distances of the Aruco marker wrt global origin in the direction of X and in the direction of Y , as is depicted in the floorplan below. Also measure the heading of the Aruco marker wrt the global frame by measuring the angle between the X-axis of the global frame and the X-axis of the local Aruco marker (which is defined to the right of the Aruco marker). Then, write down you measurements, similar to the list below, and use the "information_example" of the code examples to update the poses of the Aruco markers.

  • Aruco marker 1: X = 2.5 meters, Y = -1.25 meters, heading = 180 degrees;
  • Aruco marker 2: X = 7.5 meters, Y = -7.25 meters, heading = -90 degrees;
  • Aruco marker 3: X = 8.5 meters, Y = 0.0 meters, heading = 0.0 degrees;

MutlipleMarkers