Fiducial Markers

“A fiducial marker or fiducial is an object placed in the field of view of an imaging system, for use as a point of reference or a measure. It may be either something placed into or on the imaging subject, or a mark or set of marks in the reticle of an optical instrument.”

Fiducial markers (also known as AR markers) are a type of robust QR code that only encodes a simple number, and are used by ConveyorBot as landmarks, which it can use to navigate the environment of your choosing.

Marker Types

ConveyorBot uses several types of fiducials:

🟩 Go marker has a single arrow which point to the direction where the ConveyorBot will drive.
🟥 Stop marker is made to halt the ConveyorBot in that spot. After the ConveyorBot moves on top of the Stop marker it rotates in a direction of a marker arrow. While ConveyorBot waits on a Stop marker the user can load or unload the packages. The robot will resume following markers when user presses the CONTINUE button on the touchscreen of the ConveyorBot.
🟦 Turn marker is made for creating crossroads. Crossroad is a couple of markers in the same location (they must not overlap!), where each is pointing in an arbitrary/different direction. Purpose of Turn markers and crossroads is to change the driving direction of the ConveyorBot.
🟪 Bidirectional marker is the only marker with 2 arrows in it. ConveyorBot drives allong the arrow that requires less robot rotation. Bidirectional marker is good for two-way routes where ConveyorBot requires to move in both directions for example narrow aisles where there is not enough space for both a forward and return path.

ConveyorBot can be used either with STag or ArUco markers (default and recommended being STag). The analogy of marker types is the same for both. Each marker has a unique numeric ID, which is written on it. This way marker types are correctly distinguished which correspond to the correct ConveyorBot manevers.

ConveyorBot markers specifically, are rugged prefabricated sticky vinyl stickers that can be peeled off and placed on another floor location. However, it’s not recommended to peel them off too many times as they’ll stick less each time.

Generating Markers

You can also print out markers on regular paper, though this requires a few modifications on the robot side (mainly marker size). We’ve provided a selection of scripts that offer a simple terminal UI, which enables user to re-configure fiducials according to their need.

Said scripts can be found in the ConveyorBot repository in the breadcrumb/breadcrumb_detect/scripts directory:

  • ArUco/ -> generate Aruco markers with frames
  • STag/ -> generate STag markers with frames by generating also the inner part.
  • STag/ -> generate STag markers with frames by getting the inner part from downloaded image library. Download the required images from here.

Script were tested using python2.7.

ArUco Dictionary ID

You can generate ArUco markers from any dictionary you prefer. Make sure you set the corresponding dictionary parameter in launch file. We performed most of the test with dictionary with ID 7. For more information about ArUco refer to ArUco.

STag Library HD

You can generate STag markers from any library you prefer. Make sure you set the corresponding libraryHD parameter in launch file. We performed most of the test with library HD15, which suited our needs. For more information about STag refer to STag.


Generally each pack should correspond to a standalone route, but you can generate yourself packs according to your preference. Take note that each marker has a unique id, while a number is unique only to the pack.