AR Tag Overview and Tasks


 * 1) Each competition we have planned to participate in (CIRC, URC) has some kind of autonomous task that involves detection of AR tags.

In URC, the task is an autonomous navigation task, where the rover must navigate autonomously to multiple landmarks given rough GPS coordinates of them. There are multiple legs of the task, and as the task progresses the coordinates get more and more inaccurate. In the earlier legs of the task, the landmarks are simple posts that we have to get close enough to in order to count as “reaching” the landmark, but in later legs, the landmarks become “gates” formed by two posts, and we must drive through the gate in order for that leg to count. In order to find a more accurate location for the landmarks, each landmark has an AR tag mounted on it that we can detect with our cameras. More specific info on the task can be found in the URC Rules, section 3.e.

For CIRC, not much is actually known yet about the task; we believe that it is an autonomous navigation task similar to URC but there isn’t really a detailed specification on the task or what AR tags will be used, and the rules haven’t been released yet for 2021. (If anyone can find this information or has access to it, it would greatly appreciated if you could share it with Evan Straw on Slack.) However, we know that there will be a task with AR tags.

Unfortunately, there isn’t really a standard for AR tags, so multiple different tag formats exist. The general thing that is common to all AR tags is that they are square markers with a black border and a pattern of black and white squares inside, similar to a QR code but with fewer pixels. CIRC is using a more well-known tag system called [ARUco] but URC is using a lesser-known system known as ALVAR, for which there is little information other than [a ROS package for detecting them]. A lot of our information about ALVAR has been reverse engineered from that ROS package and studying the format of the tags.



Above, left: an ALVAR marker. Above, right: an ARUco marker.

The ALVAR markers are 7 pixels by 7 pixels, with a 2-pixel-wide border around a 5x5 region for the data. The ARUco markers are 5x5, with a 1-pixel border and a 4x4 data region. The middle row and column of the data region in the ALVAR marker are not used for data and are instead used for alignment, whereas the ARUco markers do not have any alignment features and ensure that tags appear unique when viewed from all directions. The ALVAR data region appears to store its ID encoded as a Hamming code for error correction, although the decoding process was reverse engineered from the ROS library; as we tried decoding them, the Hamming codes didn’t seem to agree with what the documentation on the ROS library claims are the actual IDs of the markers. (To avoid ambiguity, we are just going to use the ordering of the markers on the ROS library page as the IDs; the IDs shouldn’t matter anyway. More on that later.) ARUco, for contrast, does not actually encode any meaningful data in its “data region;” rather, ARUco markers are deterministically generated and ARUco detection code maintains a “dictionary” of what all the marker patterns look like, associated to their IDs.



Purple: border, Green: data region, Red: alignment