[Documentation] [TitleIndex] [WordIndex

  Show EOL distros: 

Package Summary

3D pose estimation ROS package using ArUco marker boards.

  • Maintainer: Hamdi Sahloul <sahloul AT race.u-tokyo.ac DOT jp>
  • Author: Hamdi Sahloul <sahloul AT race.u-tokyo.ac DOT jp>, Rafael Muñoz Salinas <rmsalinas AT uco DOT es>, Bence Magyar <bence.magyar AT pal-robotics DOT com>
  • License: BSD
  • Source: git https://github.com/Sahloul/ar_sys.git (branch: groovy-devel)

Package Summary

3D pose estimation ROS package using ArUco marker boards.

  • Maintainer status: developed
  • Maintainer: Hamdi Sahloul <sahloul AT race.u-tokyo.ac DOT jp>
  • Author: Hamdi Sahloul <sahloul AT race.u-tokyo.ac DOT jp>, Rafael Muñoz Salinas <rmsalinas AT uco DOT es>, Bence Magyar <bence.magyar AT pal-robotics DOT com>
  • License: BSD
  • Source: git https://github.com/Sahloul/ar_sys.git (branch: hydro-devel)

Package Summary

3D pose estimation ROS package using ArUco marker boards.

  • Maintainer status: developed
  • Maintainer: Hamdi Sahloul <sahloul AT race.u-tokyo.ac DOT jp>
  • Author: Hamdi Sahloul <sahloul AT race.u-tokyo.ac DOT jp>, Rafael Muñoz Salinas <rmsalinas AT uco DOT es>, Bence Magyar <bence.magyar AT pal-robotics DOT com>
  • License: BSD
  • Source: git https://github.com/Sahloul/ar_sys.git (branch: indigo-devel)

Overview

3D pose estimation ROS package using ArUco marker boards.

Installing

We are providing binary releases for many platforms, so you might just issue:

   1 sudo apt-get install ros-indigo-ar-sys

Or equivalent depending on your operating system.

We are providing binary releases for many platforms, so you might just issue:

   1 sudo apt-get install ros-hydro-ar-sys

Or equivalent depending on your operating system.

Since Groovy is now at its end of life, we don't provide releases for it, but you still can build it from the source. Assuming you know how to create a catkin workspace, you can use git and roslocate to automatically download the repository and set your path:

   1 cd ~/catkin_ws/src
   2 roslocate uri ar_sys | xargs git clone

and then build the ar_sys package, by running:

   1 cd ~/catkin_ws
   2 catkin_make

Usage

To use the launchers with full functionality, you might need to build uvc_camera from the source, as we depend on it in the camera capture capabilities.

To start tracking a single board of markers, ensure you pass the proper launcher parameters (see launch files for details) to meet your camera device, calibration URI, pointing to the correct board configuration, and then use:

   1 roslaunch ar_sys single_board.launch

To track more boards, follow the same as of a single board, but modify the data/multi/boards.yml file to include all your board configuration files, and then launch:

   1 roslaunch ar_sys multi-boards.launch

Finally, you could have the 3D rviz viewer of your boards by using:

   1 roslaunch ar_sys system_viewer.launch

This is the very basic usage of the package, and there are more details in the scenarios below.

Scenarios

Multiple cameras

Assuming you have two cameras, and would like to display multiple boards from each camera in one 3D rvix environment. All you need is to execute something like these commands, each in a separate terminal:

   1 roslaunch ar_sys multi-boards.launch video_namespace:=camera1 camera_frame_id:=camera1 camera_device:=/dev/video0 uid:=1
   2 roslaunch ar_sys multi-boards.launch video_namespace:=camera2 camera_frame_id:=camera2 camera_device:=/dev/video1 uid:=2
   3 roslaunch ar_sys system_viewer.launc

This is the single board version of the above scenario.

   1 roslaunch ar_sys single_board.launch video_namespace:=camera1 camera_frame_id:=camera1 board_frame_id:=board1 camera_device:=/dev/video0 uid:=1
   2 roslaunch ar_sys single_board.launch video_namespace:=camera2 camera_frame_id:=camera2 board_frame_id:=board2 camera_device:=/dev/video1 uid:=2
   3 roslaunch ar_sys system_viewer.launch

Nodes

single_board

single_board listens to the /camera_info and /image topics and detects the markers board set by its parameters, and then publishes the from-the-camera transform of the board detect on the /transform topic. This is mainly used with system_viewer node to display the coordinates of the board and the camera related to a reference world point using rviz. The single_board node runs with a ~board_config parameter that points to a YAML file containing markers' positions and IDs within the board.

Subscribed Topics

/image (sensor_msgs/Image) /camera_info (sensor_msgs/CameraInfo)

Published Topics

/result (sensor_msgs/Image) /debug (sensor_msgs/Image) /position (geometry_msgs/Vector3Stamped) /pose (geometry_msgs/PoseStamped) /transform (geometry_msgs/TransformStamped)

Parameters

~image_is_rectified ([ {bool: bool} ], default: [true]) ~marker_size ([ {double: double} ], default: [0.05]) ~board_config ([ {str: str} ], default: ["boardConfiguration.yml"]) ~board_frame ([ {str: str} ], default: [""]) ~draw_markers ([ {bool: bool} ], default: [false]) ~draw_markers_cube ([ {bool: bool} ], default: [false]) ~draw_markers_axis ([ {bool: bool} ], default: [false])

multi_boards

multi_boards listens to the /camera_info and /image topics and detects virtually unlimited boards of markers set by YMAL config file indicated in its parameters, and then publishes the from-the-camera transforms of each board detected on the /transform topic. This is mainly used with system_viewer node to display the coordinates of the camera and each board related to a reference world point using rviz. The multi_boards node runs with a ~boards_config parameter that points to a YAML file containing list of boards.

Subscribed Topics

/image (sensor_msgs/Image) /camera_info (sensor_msgs/CameraInfo)

Published Topics

/result (sensor_msgs/Image) /debug (sensor_msgs/Image) /position (geometry_msgs/Vector3Stamped) /pose (geometry_msgs/PoseStamped) /transform (geometry_msgs/TransformStamped)

Parameters

~image_is_rectified ([ {bool: bool} ], default: [true]) ~boards_config ([ {str: str} ], default: ["boardsConfiguration.yml"]) ~boards_directory ([ {str: str} ], default: ["./data"]) ~draw_markers ([ {bool: bool} ], default: [false]) ~draw_markers_cube ([ {bool: bool} ], default: [false]) ~draw_markers_axis ([ {bool: bool} ], default: [false])

system_viewer

system_viewer listens to the /transform topic and shows together all the boards and cameras coordinates in a single world, and then publishes the visualization markers of each board detected on the /visualization_marker topic. This is mainly used by rviz to display visualized markers, rviz also receives a transforms broadcast of both cameras and boards positions and orientations to visualize it as well. The system_viewer node runs with a ~map_path parameter that points to a YAML file containing list of board names and its positioning configuration.

Subscribed Topics

/transform (geometry_msgs/TransformStamped)

Published Topics

/visualization_marker (visualization_msgs/Marker)

Parameters

~map_path ([ {str: str} ], default: ["map.yml"]) ~digital_filter_change_rate ([ {double: double} ], default: [0.5])

Launch files

There are many roslaunch parameters that we are employing in the launchers of each node. Here is the details:

single_board.launch

single_board.launch launches the single_board node (see nodes section) with optionally a uvc_camera and image_proc nodes to capture images from your webcam, and a image_view node to display the marker detection results.

Parameters

camera_enable ([ {bool: bool} ], default: [true]) camera_device ([ {str: str} ], default: ["/dev/video0"]) camera_info ([ {str: str} ], default: ["file://$(find ar_sys)/camera_info/camera_calibration.yaml"]) camera_frame_id ([ {str: str} ], default: ["camera1"]) camera_width ([ {int: int} ], default: [1280]) camera_height ([ {int: int} ], default: [1024]) camera_fps ([ {int: int} ], default: [30]) result_display ([ {bool: bool} ], default: [true]) result_autosize ([ {bool: bool} ], default: [true]) result_draw_markers ([ {bool: bool} ], default: [false]) result_draw_markers_cube ([ {bool: bool} ], default: [false]) result_draw_markers_axis ([ {bool: bool} ], default: [false]) uid ([ {str: str} ], default: [""]) video_namespace ([ {str: str} ], default: ["/camera1"]) video_image_topic ([ {str: str} ], default: ["image_rect_color"]) video_info_topic ([ {str: str} ], default: ["camera_info"]) video_rectified ([ {bool: bool} ], default: [true]) board_config ([ {str: str} ], default: ["$(find ar_sys)/data/single/board.yml"]) board_frame_id ([ {str: str} ], default: ["board1"]) marker_size ([ {double: double} ], default: [0.05])

multi-boards.launch

multi-boards.launch launches the multi_boards node (see nodes section) with optionally a uvc_camera and image_proc nodes to capture images from your webcam, and a image_view node to display the marker detection results.

Parameters

camera_enable ([ {bool: bool} ], default: [true]) camera_device ([ {str: str} ], default: ["/dev/video0"]) camera_info ([ {str: str} ], default: ["file://$(find ar_sys)/camera_info/camera_calibration.yaml"]) camera_frame_id ([ {str: str} ], default: ["camera1"]) camera_width ([ {int: int} ], default: [1280]) camera_height ([ {int: int} ], default: [1024]) camera_fps ([ {int: int} ], default: [30]) result_display ([ {bool: bool} ], default: [true]) result_autosize ([ {bool: bool} ], default: [true]) result_draw_markers ([ {bool: bool} ], default: [false]) result_draw_markers_cube ([ {bool: bool} ], default: [false]) result_draw_markers_axis ([ {bool: bool} ], default: [false]) uid ([ {str: str} ], default: [""]) video_namespace ([ {str: str} ], default: ["/camera1"]) video_image_topic ([ {str: str} ], default: ["image_rect_color"]) video_info_topic ([ {str: str} ], default: ["camera_info"]) video_rectified ([ {bool: bool} ], default: [true]) boards_config ([ {str: str} ], default: ["$(find ar_sys)/data/multi/boards.yml"]) boards_directory ([ {str: str} ], default: ["$(find ar_sys)/data/multi"])

system_viewer.launch

system_viewer.launch launches the system_viewer node (see nodes section) along with a rviz node to display the detected boards and cameras' transforms in a visual way.

Parameters

map_path ([ {str: str} ], default: ["$(find ar_sys)/data/viewer/map.yml"]) digital_filter_change_rate ([ {double: double} ], default: [0.5]) rviz_config_path ([ {str: str} ], default: ["$(find ar_sys)/data/viewer/viewer.rviz"])

Bug Reports & Feature Requests

/!\ When asking questions or looking for help running ar_sys, use the ar_sys tag on ROS answers

Use GitHub to report bugs or submit feature requests. [View active issues]
We appreciate the time and effort spent submitting bug reports.


2019-11-16 12:38