Author: Job van Dieten

Maintainer: Jordi Pages < >


(!) Please ask about problems and questions regarding this tutorial on Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

ArUco marker detection (C++)

Description: This tutorial shows how to detect fiducial markers using the ArUco library and to get its 3D pose.

Keywords: OpenCV

Tutorial Level: BEGINNER

Next Tutorial: Person detection



This tutorial shows how to run fiducial marker detection with TIAGo using the OpenCV-based library ArUco. Fiducial markers is an example of robust model-based object detection. The ArUco markers are planar square binary markers that, provided the length of its square side, its 6 DoF pose can be estimated precisely from monocular vision.


First, make sure that the tutorials are properly installed along with the TIAGo simulation, as shown in the Tutorials Installation Section.


Open a four consoles and source the catking workspace as follows in each one:

  • cd ~/tiago_public_ws
    source ./devel/setup.bash

Now run the simulation in the first console as follows

  • $ roslaunch tiago_gazebo tiago_gazebo.launch public_sim:=true robot:=steel world:=tutorial_office gzpose:="-x -3.5 -y -0.85 -z 0 -R 0 -P 0 -Y -3.0"

This will spawn TIAGo in front of a board composed of multiple ArUco markers


In the second console run the marker detector with the appropriate remappings and parameters:

  • $ rosrun aruco_ros single /camera_info:=/xtion/rgb/camera_info /image:=/xtion/rgb/image_rect_color _marker_id:=584  _marker_size:=0.10 _marker_frame:=/aruco_frame _camera_frame:=/xtion_optical_frame _image_is_rectified:=true _reference_frame:=/base_footprint

In the above instruction we are telling the node to identify the marker with ID 584 and that the length of the square side is 10 cm.

Wiki: Robots/TIAGo/Tutorials/ArucoBoard (last edited 2017-03-18 22:32:56 by Jordi Pages)