Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
November 23, 2022 00:16
November 23, 2022 00:16
November 23, 2022 00:16
March 28, 2022 18:49


Software package and ROS wrappers of the Aruco Augmented Reality marker detector library.


  • High-framerate tracking of AR markers

  • Generate AR markers with given size and optimized for minimal perceptive ambiguity (when there are more markers to track)

  • Enhanced precision tracking by using boards of markers

  • ROS wrappers


  • Object pose estimation
  • Visual servoing: track object and hand at the same time



  • aruco_ros/Marker.msg

     Header header
     uint32 id
     geometry_msgs/PoseWithCovariance pose
     float64 confidence
  • aruco_ros/MarkerArray.msg

     Header header
     aruco_ros/Marker[] markers

Kinetic changes

  • Updated the Aruco library to version 3.0.4

  • Changed the coordinate system to match the library's, the convention is shown in the image below, following rviz conventions, X is red, Y is green and Z is blue.

Test it with REEM

  • Open a REEM in simulation with a marker floating in front of the robot. This will start the stereo cameras of the robot too. Since this is only a vision test, there is nothing else in this world apart from the robot and a marker floating in front of it. An extra light source had to be added to compensate for the default darkness.

    roslaunch reem_gazebo reem_gazebo.launch world:=floating_marker
  • Launch the image_proc node to get undistorted images from the cameras of the robot.

    ROS_NAMESPACE=/stereo/right rosrun image_proc image_proc image_raw:=image
  • Start the single node which will start tracking the specified marker and will publish its pose in the camera frame

    roslaunch aruco_ros single.launch markerId:=26 markerSize:=0.08 eye:="right"

    the frame in which the pose is refered to can be chosen with the 'ref_frame' argument. The next example forces the marker pose to be published with respect to the robot base_link frame:

    roslaunch aruco_ros single.launch markerId:=26 markerSize:=0.08 eye:="right" ref_frame:=/base_link
  • Visualize the result

    rosrun image_view image_view image:=/aruco_single/result