Demo ARtoolkit
Augmented reality markers using ARtoolkit.
By Shixian Wenshixianw@usc.eduhttp://jevois.orgGPL v3
 Language: C++Supports mappings with USB output: YesSupports mappings with NO USB output: Yes 
 Video Mapping:   NONE 0 0 0 YUYV 320 240 60.0 JeVois DemoARtoolkit
 Video Mapping:   NONE 0 0 0 YUYV 640 480 30.0 JeVois DemoARtoolkit
 Video Mapping:   NONE 0 0 0 YUYV 1280 1024 15.0 JeVois DemoARtoolkit
 Video Mapping:   YUYV 320 258 60.0 YUYV 320 240 60.0 JeVois DemoARtoolkit
 Video Mapping:   YUYV 640 498 30.0 YUYV 640 480 30.0 JeVois DemoARtoolkit

Module Documentation

Detect and decode patterns known as ARtoolkit markers, which are small 2D barcodes often used in augmented reality and robotics. See - This module uses version 5.x for now.

This algorithm is very fast. It runs at 400+ frames/s at 320x240 and can easily sustain the maximum 15 frames/s of the JeVois camera sensor chip at 1280x1024. It may be interesting to combine it with other algorithms running on the quad-core JeVois processor (see for example the MarkersCombo module).

Sample patterns

This module uses by default the dictionary of 3x3 patterns with parity (32 different patterns). You can download them from

Also see the files in jevoisbase/Contrib/ARToolKit5arm/doc/patterns/ for more.

Serial Messages

This module can send standardized serial messages as described in Standardized serial messages formatting.

When msg3d is turned on, 3D messages will be sent, otherwise 2D messages.

One message is issued for every detected marker, on every video frame.

2D messages when msg3d is off:

  • Serial message type: 2D
  • id: decoded ARtoolkit marker ID, with a prefix 'A'
  • x, y, or vertices: standardized 2D coordinates of marker center or corners
  • w, h: standardized marker size
  • extra: none (empty string)

3D messages when msg3d is on:

  • Serial message type: 3D
  • id: decoded ARtoolkit marker ID, with a prefix 'A'
  • x, y, z, or vertices: 3D coordinates in millimeters of marker center or corners
  • w, h, d: marker size in millimeters, a depth of 1mm is always used
  • extra: none (empty string)

If you will use the quaternion data (Detail message style; see Standardized serial messages formatting), you should probably set the serprec parameter to something non-zero to get enough accuracy in the quaternion values.

See Standardized serial messages formatting for more on standardized serial messages, and Helper functions to convert coordinates from camera resolution to standardized for more info on standardized coordinates.

For information about camera calibration and obtaining precise location, distance and pose estimates, see this tutorial.

ParameterTypeDescriptionDefaultValid Values
(ARtoolkit) camparamsstd::stringFile stem of camera parameters, or empty. Camera resolution will be appended, as well as a .dat extension. For example, specifying 'camera_para' here and running the camera sensor at 320x240 will attempt to load camera_para320x240.dat from within the module's directory (if relative stem) or from the specified absolute location (if absolute stem).JEVOIS_SHARE_PATH /camera/camera_para-
(ARtoolkit) contposeboolUse continuous pose estimation in good quality videotrue-
(ARtoolkit) msg3dboolSend 3D serial messages if true, otherwise 2Dfalse-
(ARtoolkit) threshmodeDictThreshModeDictionary threshold mode to use, affects robustness to varying lighting conditionsDictThreshMode::AR_LABELING_THRESH_MODE_AUTO_OTSUDictThreshMode_Values
(ARtoolkit) dictionaryDictSymbol dictionary to useDict::AR_MATRIX_CODE_3x3_PARITY65Dict_Values
(ARtoolkit) confthreshdoubleMinimum confidence threshold required for valid detections0.7jevois::Range<double>(0.0, 1.0)
Detailed docs:DemoARtoolkit
Copyright:Copyright (C) 2017 by Shixian Wen, iLab and the University of Southern California
License:GPL v3
Support URL:
Other URL:
Address:University of Southern California, HNB-10A, 3641 Watt Way, Los Angeles, CA 90089-2520, USA