ccny_vision: ar_pose | artoolkit

Package Summary

Augmented Reality Marker Pose Estimation using ARToolkit

arsingle.jpg armulti.jpg

Overview

This package is an ROS wrapper for ARToolkit.

ar_pose provides has two nodes you can run. The program ar_single provides a transform between the camera and a single AR Marker. The program ar_multi provides an array of transforms for multiple markers.

Calibration Requirements

Currently the ar_pose package requires calibration information from a camera_info topic. If there is no camera_info topic the marker pose estimation will not start.

Examples

You can run ar_pose on a live video from a camera, or on a pre-recorded bag file that comes with the package. First, make sure you have ccny_vision stack downloaded and installed and built by following the instructions here.

Prerecorded Demo: Tracking a single marker

This demo uses ar_single to track the location of an AR Marker relative to the location of a fixed camera. The position of the camera in the world frame is published by static_tf_publisher as a static transform. The tracking process is visualized in rviz.

Download Warning The setup_single.sh script currently downloads a 350MB file.

First, make sure you have built the additional packages necessary for the demo:

   1 rosmake rviz rosbag

Next, download the example image data and run the demo.

   1 roscd ar_pose/demo
   2 ./setup_single.sh
   3 roslaunch ar_pose demo_single.launch

You should then see something similar to the video below:

Prerecorded Demo: Tracking the camera position

This demo uses ar_single to track the position of the camera relative to the location of an AR Marker. The position of the marker in the world frame is published by static_tf_publisher as a static transform. The tracking process is visualized in rviz.

Download Warning The setup_reverse.sh script currently downloads a 177MB file.

First, make sure you have built the additional packages necessary for the demo:

   1 rosmake rviz rosbag

Next, download the example image data and run the demo.

   1 roscd ar_pose/demo
   2 ./setup_reverse.sh
   3 roslaunch ar_pose demo_reverse.launch

You should then see something similar to the video below:

Prerecorded Demo: Tracking multiple markers

This demo uses ar_multi to track the location of multiple AR Markers relative to the location of a fixed camera. The position of the camera in the world frame is published by static_tf_publisher as a static transform. The tracking process is visualized in rviz.

Download Warning The setup_multi.sh script currently downloads a 177MB file.

First, make sure you have built the additional packages necessary for the demo:

   1 rosmake rviz rosbag

Next, download the example image data and run the demo.

   1 roscd ar_pose/demo
   2 ./setup_multi.sh
   3 roslaunch ar_pose demo_multi.launch

Live video examples

Two examples are provided that are configured and calibrated for use with a Logitech C600 webcam and the usb_cam driver.

The single-marker example that is provided uses the patt.hiro marker. A .pdf of this marker can be found in ~/ros/stacks/ccny-ros-pkg/ccny_vision/artoolkit/build/artoolkit-svn/patterns/pattHiro.pdf

   1 roslaunch ar_pose ar_pose_single.launch

A multi-marker configuration can be started as well. The Markers used in this example are found in ~/ros/stacks/ccny-ros-pkg/ccny_vision/data/4x4/4x4_ps.tar.gz The 4x4 patterns were created with patternMaker which was developed by David Johnson, Christopher Berthiaume and Bryan Witkowski. These patterns are distributed with this software under the GPL with permission.

   1 roslaunch ar_pose ar_pose_single.launch

Nodes

ar_single

This node tracks a single AR Maker in an image and displays its relative pose.

Subscribed Topics

/usb_cam/image_raw (sensor_msgs/Image)
  • The image topic. Images from this topic are passed to ARToolKit for analysis.
/usb_cam/camera_info (sensor_msgs/CameraInfo)
  • The camera info topic. This contains the calibration information that is passed to ARToolKit.

Published Topics

ar_pose_marker (ar_pose/ARMarker)
  • The current pose of the marker relative to the camera.
visualization_marker (visualization_msgs/Marker)
  • Visualization marker for rviz

Parameters

marker_pattern (string, default: "data/patt.hiro")
  • ARToolKit format pattern file
marker_width (double, default: 80.0)
  • The width of the marker in mm.
marker_center_x (double, default: 0.0)
  • The offset of the physical center of the Marker
marker_center_y (double, default: 0.0)
  • The offset of the physical center of the Marker
threshold (double, default: 100)
  • Threshold passed to ARToolKit
use_history (bool, default: true)
  • Option to use the previous estimate of the markers position to improve the current estimate.
publish_visual_markers (bool, default: true)
  • Option to enable publishing visual markers for rviz
publish_tf (bool, default: true)
  • Enable broadcasting transforms
marker_frame (string, default: "ar_marker")
  • The frame attached to the AR Marker
reverse_transform (bool, default: false)
  • When true, publishes a marker -> camera tf instead of camera -> marker

Provided tf Transforms

camera_frame_idmarker_frame
  • Default: the pose of the marker relative to the camera frame
marker_framecamera_frame_id
  • Reversed: the pose of the camera frame relative to the marker

ar_multi

This node tracks multiple AR Maker in an image and displays theirs relative pose.

Subscribed Topics

/usb_cam/image_raw (sensor_msgs/Image)
  • The image topic. Images from this topic are passed to ARToolKit for analysis.
/usb_cam/camera_info (sensor_msgs/CameraInfo)
  • The camera info topic. This contains the calibration information that is passed to ARToolKit.

Published Topics

ar_pose_marker (ar_pose/ARMarkers)
  • An array of markers, each marker describe the current pose relative to the camera.
visualization_marker (visualization_msgs/Marker)
  • Visualization marker for rviz

Parameters

marker_pattern_list (string, default: "data/object_4x4")
  • ARToolKit file describing each pattern.
threshold (double, default: 100)
  • Threshold passed to ARToolKit
publish_visual_markers (bool, default: true)
  • Option to enable publishing visual markers for rviz
publish_tf (bool, default: true)
  • Enable broadcasting transforms

Provided tf Transforms

camera_frame_idmarker_frames
  • the pose of markers relative to the camera frame

Troubleshooting

Ubuntu 11.10

A workaround for undefined references in libARgsub.a with Ubuntu 11.10:

  • delete #include <AR/gsub.h> on line 29 in ar_multi.h

  • remove "argCleanup();" on line 159 in ar_multi.cpp

Bug Reports & Feature Requests

We appreciate the time and effort spent submitting bug reports.

Please use our Trac to report bugs or request features.

Wiki: ar_pose (last edited 2011-11-06 04:34:48 by PascalGohl)