Demo ARtoolkit
Augmented reality markers using ARtoolkit.
By Shixian Wenshixianw@usc.eduhttp://jevois.orgGPL v3
 Language:   C++            Supports mappings with USB output:   Yes            Supports 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 ArUco, 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.

ParameterTypeDescriptionDefaultValid Values
(ARtoolkit) camparamsstd::stringFile stem of camera parameters, or empty. Camera resolution will be appended, as well as a .cfg 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.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_OTSU-
(ARtoolkit) dictionaryDictSymbol dictionary to useDict::AR_MATRIX_CODE_3x3_PARITY65-
(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