summaryrefslogtreecommitdiffhomepage
path: root/eyeware-beam-sdk/docs/getting_started.html
diff options
context:
space:
mode:
Diffstat (limited to 'eyeware-beam-sdk/docs/getting_started.html')
-rw-r--r--eyeware-beam-sdk/docs/getting_started.html372
1 files changed, 372 insertions, 0 deletions
diff --git a/eyeware-beam-sdk/docs/getting_started.html b/eyeware-beam-sdk/docs/getting_started.html
new file mode 100644
index 0000000..cdc0460
--- /dev/null
+++ b/eyeware-beam-sdk/docs/getting_started.html
@@ -0,0 +1,372 @@
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+ <meta charset="utf-8" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+
+ <title>Getting started &mdash; Beam SDK 1.1.0 documentation</title>
+
+
+
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
+
+
+
+
+
+
+
+
+
+
+ <!--[if lt IE 9]>
+ <script src="_static/js/html5shiv.min.js"></script>
+ <![endif]-->
+
+
+ <script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+ <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
+ <script src="_static/jquery.js"></script>
+ <script src="_static/underscore.js"></script>
+ <script src="_static/doctools.js"></script>
+
+ <script type="text/javascript" src="_static/js/theme.js"></script>
+
+
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="API overview" href="api_overview.html" />
+ <link rel="prev" title="Introduction" href="introduction.html" />
+</head>
+
+<body class="wy-body-for-nav">
+
+
+ <div class="wy-grid-for-nav">
+
+ <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+ <div class="wy-side-scroll">
+ <div class="wy-side-nav-search" style="background: #48447E" >
+
+
+
+ <a href="index.html" class="icon icon-home"> Beam SDK
+
+
+
+ </a>
+
+
+
+
+ <div class="version">
+ 1.1.0
+ </div>
+
+
+
+
+<div role="search">
+ <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
+ <input type="text" name="q" placeholder="Search docs" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+</div>
+
+
+ </div>
+
+
+ <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+
+
+
+
+
+
+ <p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting started</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#requirements">Requirements</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#python-example">Python example</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#output">Output</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#explanation">Explanation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="api_overview.html">API overview</a></li>
+<li class="toctree-l1"><a class="reference internal" href="api_reference.html">API reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="redistribution.html">Redistributing a Beam client application</a></li>
+</ul>
+
+
+
+ </div>
+
+ </div>
+ </nav>
+
+ <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+
+ <nav class="wy-nav-top" aria-label="top navigation">
+
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="index.html">Beam SDK</a>
+
+ </nav>
+
+
+ <div class="wy-nav-content">
+
+ <div class="rst-content">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+ <ul class="wy-breadcrumbs">
+
+ <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
+
+ <li>Getting started</li>
+
+
+ <li class="wy-breadcrumbs-aside">
+
+
+ <a href="_sources/getting_started.rst.txt" rel="nofollow"> View page source</a>
+
+
+ </li>
+
+ </ul>
+
+
+ <hr/>
+</div>
+ <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+ <div itemprop="articleBody">
+
+ <div class="toctree-wrapper compound">
+</div>
+<div class="section" id="getting-started">
+<h1>Getting started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="requirements">
+<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><p>The <a class="reference external" href="https://beam.eyeware.tech">Beam application</a> is installed on your system;</p></li>
+<li><p>you have an active subscription, which makes you able to receive head and eye tracking data;</p></li>
+<li><p>you run the calibration procedure within the Beam application at least once.</p></li>
+</ul>
+<p>In addition, if you want to use the Python API, you need:</p>
+<ul class="simple">
+<li><p>Python 3.6;</p></li>
+<li><p>NumPy;</p></li>
+<li><p>adding <code class="docutils literal notranslate"><span class="pre">&lt;YOUR_BEAM_SDK_INSTALLATION_FOLDER&gt;/API/python</span></code> to your <code class="docutils literal notranslate"><span class="pre">PYTHONPATH</span></code>.</p></li>
+</ul>
+</div>
+<div class="section" id="python-example">
+<h2>Python example<a class="headerlink" href="#python-example" title="Permalink to this headline">¶</a></h2>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">eyeware.client</span> <span class="kn">import</span> <span class="n">TrackerClient</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="c1"># Build tracker client, to establish a communication with the tracker server (an Eyeware application).</span>
+<span class="c1">#</span>
+<span class="c1"># Constructing the tracker client object without arguments sets a default server hostname and port which</span>
+<span class="c1"># work fine in many configurations.</span>
+<span class="c1"># However, it is possible to set a specific hostname and port, depending on your setup and network.</span>
+<span class="c1"># See the TrackerClient API reference for further information.</span>
+<span class="n">tracker</span> <span class="o">=</span> <span class="n">TrackerClient</span><span class="p">()</span>
+
+<span class="c1"># Run forever, until we press ctrl+c</span>
+<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
+ <span class="c1"># Make sure that the connection with the tracker server (Eyeware application) is up and running.</span>
+ <span class="k">if</span> <span class="n">tracker</span><span class="o">.</span><span class="n">connected</span><span class="p">:</span>
+
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; * Head Pose:&quot;</span><span class="p">)</span>
+ <span class="n">head_pose</span> <span class="o">=</span> <span class="n">tracker</span><span class="o">.</span><span class="n">get_head_pose_info</span><span class="p">()</span>
+ <span class="n">head_is_lost</span> <span class="o">=</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">is_lost</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Lost track: &quot;</span><span class="p">,</span> <span class="n">head_is_lost</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">head_is_lost</span><span class="p">:</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Session ID: &quot;</span><span class="p">,</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">track_session_uid</span><span class="p">)</span>
+ <span class="n">rot</span> <span class="o">=</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">rotation</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Rotation: |</span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2">|&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">rot</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]))</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; |</span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2">|&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">rot</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">]))</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; |</span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2">|&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">rot</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">]))</span>
+ <span class="n">tr</span> <span class="o">=</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">translation</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Translation: &lt;x=</span><span class="si">%5.3f</span><span class="s2"> m, y=</span><span class="si">%5.3f</span><span class="s2"> m, z=</span><span class="si">%5.3f</span><span class="s2"> m&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tr</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">tr</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">tr</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
+
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; * Gaze on Screen:&quot;</span><span class="p">)</span>
+ <span class="n">screen_gaze</span> <span class="o">=</span> <span class="n">tracker</span><span class="o">.</span><span class="n">get_screen_gaze_info</span><span class="p">()</span>
+ <span class="n">screen_gaze_is_lost</span> <span class="o">=</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">is_lost</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Lost track: &quot;</span><span class="p">,</span> <span class="n">screen_gaze_is_lost</span><span class="p">)</span>
+ <span class="k">if</span> <span class="ow">not</span> <span class="n">screen_gaze_is_lost</span><span class="p">:</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Screen ID: &quot;</span><span class="p">,</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">screen_id</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Coordinates: &lt;x=</span><span class="si">%5.3f</span><span class="s2"> px, y=</span><span class="si">%5.3f</span><span class="s2"> px&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">screen_gaze</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Confidence: &quot;</span><span class="p">,</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">confidence</span><span class="p">)</span>
+
+ <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">30</span><span class="p">)</span> <span class="c1"># We expect tracking data at 30 Hz</span>
+ <span class="k">else</span><span class="p">:</span>
+ <span class="c1"># Print a message every MESSAGE_PERIOD_IN_SECONDS seconds</span>
+ <span class="n">MESSAGE_PERIOD_IN_SECONDS</span> <span class="o">=</span> <span class="mi">2</span>
+ <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">MESSAGE_PERIOD_IN_SECONDS</span> <span class="o">-</span> <span class="n">time</span><span class="o">.</span><span class="n">monotonic</span><span class="p">()</span> <span class="o">%</span> <span class="n">MESSAGE_PERIOD_IN_SECONDS</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;No connection with tracker server&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="section" id="output">
+<h3>Output<a class="headerlink" href="#output" title="Permalink to this headline">¶</a></h3>
+<p>Running the example code in a terminal will start printing information in real time.
+There will be a lot of prints, one for each frame.
+Let us zoom on the printed output associated to one frame only:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">*</span> <span class="n">Head</span> <span class="n">Pose</span><span class="p">:</span>
+ <span class="o">-</span> <span class="n">Lost</span> <span class="n">track</span><span class="p">:</span> <span class="kc">False</span>
+ <span class="o">-</span> <span class="n">Session</span> <span class="n">ID</span><span class="p">:</span> <span class="mi">1</span>
+ <span class="o">-</span> <span class="n">Rotation</span><span class="p">:</span> <span class="o">|-</span><span class="mf">0.999</span> <span class="o">-</span><span class="mf">0.005</span> <span class="o">-</span><span class="mf">0.045</span><span class="o">|</span>
+ <span class="o">|-</span><span class="mf">0.008</span> <span class="mf">0.999</span> <span class="mf">0.051</span><span class="o">|</span>
+ <span class="o">|</span><span class="mf">0.045</span> <span class="mf">0.051</span> <span class="o">-</span><span class="mf">0.998</span><span class="o">|</span>
+ <span class="o">-</span> <span class="n">Translation</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">x</span><span class="o">=</span><span class="mf">0.166</span> <span class="n">m</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mf">0.181</span> <span class="n">m</span><span class="p">,</span> <span class="n">z</span><span class="o">=</span><span class="mf">0.260</span> <span class="n">m</span><span class="o">&gt;</span>
+<span class="o">*</span> <span class="n">Gaze</span> <span class="n">on</span> <span class="n">Screen</span><span class="p">:</span>
+ <span class="o">-</span> <span class="n">Lost</span> <span class="n">track</span><span class="p">:</span> <span class="kc">False</span>
+ <span class="o">-</span> <span class="n">Screen</span> <span class="n">ID</span><span class="p">:</span> <span class="mi">0</span>
+ <span class="o">-</span> <span class="n">Coordinates</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">x</span><span class="o">=</span><span class="mf">698.000</span> <span class="n">px</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="mf">149.000</span> <span class="n">px</span><span class="o">&gt;</span>
+ <span class="o">-</span> <span class="n">Confidence</span><span class="p">:</span> <span class="n">TrackingConfidence</span><span class="o">.</span><span class="n">HIGH</span>
+</pre></div>
+</div>
+<p>For the meaning of the returned fields, refer to the section <a class="reference internal" href="api_overview.html#api-overview"><span class="std std-ref">API overview</span></a>.</p>
+</div>
+</div>
+<div class="section" id="explanation">
+<h2>Explanation<a class="headerlink" href="#explanation" title="Permalink to this headline">¶</a></h2>
+<p>When creating a Python script with the purpose of consuming head and eye tracking information from Beam SDK, you must ensure that the basic classes are correctly imported:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">eyeware.client</span> <span class="kn">import</span> <span class="n">TrackerClient</span>
+</pre></div>
+</div>
+<p>We can build a <code class="docutils literal notranslate"><span class="pre">TrackerClient</span></code> object, which is the main entry point of Beam SDK (see <a class="reference internal" href="api_overview.html#api-overview"><span class="std std-ref">API overview</span></a> for further details):</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">tracker</span> <span class="o">=</span> <span class="n">TrackerClient</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>Then, we verify that the connection between our client object and the tracker server (Eyeware application) is up and running as follows:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">tracker</span><span class="o">.</span><span class="n">connected</span><span class="p">:</span>
+</pre></div>
+</div>
+<p>and we are now ready to receive head and gaze tracking data, doing something with that data.</p>
+<p>Let us start from the head tracking part.
+First, we will retrieve the head tracking information data structure.
+Then, we will check whether tracking information is valid for the current frame.
+In code:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot; * Head Pose:&quot;</span><span class="p">)</span>
+<span class="n">head_pose</span> <span class="o">=</span> <span class="n">tracker</span><span class="o">.</span><span class="n">get_head_pose_info</span><span class="p">()</span>
+<span class="n">head_is_lost</span> <span class="o">=</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">is_lost</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Lost track: &quot;</span><span class="p">,</span> <span class="n">head_is_lost</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>If the head tracking information is indeed valid (i.e., head tracking was <em>not lost</em>), then we retrieve the 3D coordinates of the tracked person’s head:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="ow">not</span> <span class="n">head_is_lost</span><span class="p">:</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Session ID: &quot;</span><span class="p">,</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">track_session_uid</span><span class="p">)</span>
+ <span class="n">rot</span> <span class="o">=</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">rotation</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Rotation: |</span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2">|&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">rot</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]))</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; |</span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2">|&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">rot</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">]))</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; |</span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2"> </span><span class="si">%5.3f</span><span class="s2">|&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">rot</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span> <span class="n">rot</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">]))</span>
+ <span class="n">tr</span> <span class="o">=</span> <span class="n">head_pose</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">translation</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Translation: &lt;x=</span><span class="si">%5.3f</span><span class="s2"> m, y=</span><span class="si">%5.3f</span><span class="s2"> m, z=</span><span class="si">%5.3f</span><span class="s2"> m&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tr</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">tr</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">tr</span><span class="p">[</span><span class="mi">2</span><span class="p">]))</span>
+</pre></div>
+</div>
+<p>For details about the rotation and translation notation, refer to the section <a class="reference internal" href="api_overview.html#api-overview"><span class="std std-ref">API overview</span></a>.</p>
+<p>Now, we want to get screen gaze tracking information.
+This follows the same logic that we applied for head tracking information.
+First, retrieve the screen gaze information data structure.
+Then, check the data validity (whether tracking is <em>not lost</em>):</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="s2">&quot; * Gaze on Screen:&quot;</span><span class="p">)</span>
+<span class="n">screen_gaze</span> <span class="o">=</span> <span class="n">tracker</span><span class="o">.</span><span class="n">get_screen_gaze_info</span><span class="p">()</span>
+<span class="n">screen_gaze_is_lost</span> <span class="o">=</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">is_lost</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Lost track: &quot;</span><span class="p">,</span> <span class="n">screen_gaze_is_lost</span><span class="p">)</span>
+<span class="k">if</span> <span class="ow">not</span> <span class="n">screen_gaze_is_lost</span><span class="p">:</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Screen ID: &quot;</span><span class="p">,</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">screen_id</span><span class="p">)</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Coordinates: &lt;x=</span><span class="si">%5.3f</span><span class="s2"> px, y=</span><span class="si">%5.3f</span><span class="s2"> px&gt;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">screen_gaze</span><span class="o">.</span><span class="n">x</span><span class="p">,</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">y</span><span class="p">))</span>
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot; - Confidence: &quot;</span><span class="p">,</span> <span class="n">screen_gaze</span><span class="o">.</span><span class="n">confidence</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>The rest of the example code is about printing head and gaze tracking data numbers on the terminal.
+Printing those numbers, by itself, is not very useful or interesting.
+Instead, you can exploit the Beam SDK tracking data for building your own creative applications!
+Let us know how it goes at <a class="reference external" href="mailto:contact&#37;&#52;&#48;eyeware&#46;tech">contact<span>&#64;</span>eyeware<span>&#46;</span>tech</a>.
+We would love to hear about your projects.</p>
+</div>
+</div>
+
+
+ </div>
+
+ </div>
+ <footer>
+ <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+ <a href="api_overview.html" class="btn btn-neutral float-right" title="API overview" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+ <a href="introduction.html" class="btn btn-neutral float-left" title="Introduction" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ </div>
+
+ <hr/>
+
+ <div role="contentinfo">
+ <p>
+ &#169; Copyright 2021, Eyeware Tech SA.
+
+ </p>
+ </div>
+
+
+
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
+
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
+
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
+
+</footer>
+ </div>
+ </div>
+
+ </section>
+
+ </div>
+
+
+ <script type="text/javascript">
+ jQuery(function () {
+ SphinxRtdTheme.Navigation.enable(true);
+ });
+ </script>
+
+
+
+
+
+
+</body>
+</html> \ No newline at end of file