[Documentation] [TitleIndex] [WordIndex


This package contains a recognition system for square, binary 2D-markers using either a mono or a stereo camera setup.

Examples of used (printed) markers: aruco_markers.jpg

Close-up of a marker with its orientation: aruco_marker_orientation_2.jpg



The objects are detected in the image(s) using the ArUco-library. Depending on the used camera system (mono or stereo), the found markers are further processed. If a mono system is used, the found poses of the ArUco-library are published, if on the other hand a stereo system is used, the final marker pose is calculated based on the positions of the markers in the left and right image: If a marker with the same id was found in each of them, the 3D corner points are calculated using triangulation of the 2D corner points in each image. The final pose is then calculated using ICP and then published.

Marker images can be created by using the marker creator tool this package contains. They need to be printed and then they can be attached to corresponding objects in the scene. This correspondance can be specified by adding mesh-models to the asr_object_database and naming the object depending on the used marker id (compare already created objects in the database for more information).


In this example 4 markers are in the scene, two of which have a corresponding object stored in the asr_object_database (monitor and mouse). The markers each have the size of 1.5x1.5mm and the used cameras have a resolution of 1292x964.

Camera image of the stereo setup: aruco_results_3.png

Resulting rviz-visualization of the found markers: aruco_results.png

Resulting 3D-rviz-visualization of the found markers (as two of the markers don't have a corresponding object only their marker orientation is shown): aruco_results_2.png


Needed packages

Needed hardware

A calibrated mono or stereo camera system.

Start system

Marker Recognition

Start the process with

roslaunch asr_aruco_marker_recognition aruco_marker_recognition.launch

To start the (paused) recognition call the following service:

rosservice call /asr_aruco_marker_recognition/get_recognizer

To pause the (running) recognition call:

rosservice call /asr_aruco_marker_recognition/release_recognizer

Marker Creator

First edit the parameters for the marker creator as you need them to be (see configuration) and then start the process with

roslaunch asr_aruco_marker_recognition marker_creator.launch

The created marker images can be found in the directory specified in the configuration-yaml-file.

ROS Nodes

Subscribed Topics

The image and camera information of the left camera (or the camera in a mono setup):

The topic names can be set in a .yaml file (see configuration). If a stereo setup is used, the topics above need to be available for both, the left and the right camera (by default the topic names are the same with right instead of left)

Published Topics

As the subscribed topics, the output topics can be defined in a .yaml file.


The following parameters can be changed in the aruco_marker_recognition_params.yaml file in the param folder:

The marker creator has the following parameters specified in marker_creator_params.yaml in the param folder:

Needed Services

This package calls a service provided by the asr_object_database to get information about the objects corresponding to the used markers:

Provided Services

2024-07-13 12:37