\newcommand{\dashedcell}[3]{
\node[minimum width=1.2cm, minimum height=1.2cm,dashed, text=black, draw=black, text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2};
}
- %\tikzexternalenable
+ \tikzexternalenable
\begin{tikzpicture}
\scriptsize
\begin{scope}[x=1mm, y=1mm]
%\draw[very thick] (0,55) -- (170,55);
\redcell{15,65}{User action}{}
- \dashedcell{30,65}{HID sent}{mousehid}
+ \dashedcell{30,65}{Device HID sent}{mousehid}
\darkbluecell{125,65}{Sytem response}{}
\draw[fill=black!10, rounded corners=2mm] (0,0) rectangle (170,55);
\bluecell{45,20}{Raw HID received}{rawhidreceived1}
\draw[ultra thick] (45,8) -- (45,12);
\node[anchor=north] () at (45, 8) {piezo};
- \dashedcell{60,20}{HID received}{hosthid}
+ \dashedcell{60,20}{Device HID received}{hosthid}
\draw[ultra thick] (60,8) -- (60,12);
\node[anchor=north] () at (60, 8) {libpointing};
\dashedcell{75,20}{Low-level event}{}
\end{scope}
\end{tikzpicture}
- %\tikzexternaldisable
+ \tikzexternaldisable
\caption[LagMeter measurement process.]{LagMeter measurement process.}
\label{fig:lagmeter}
\end{figure}
This latency is known to cause performance and usability issues~\cite{deber15,jota13,teather09,waltemate16}.
Therefore, there are research studies about strategies to mitigate these effects or reduce latency~\cite{cattan15,nancel18}.
-In order to reduce latency or its effects, it is importantto measure it, and understand the contribution of each part of the system to it.
+\input{figures/lagmeter.tex}
+
+Before reducing latency or mitigating its effects, it is important to measure it, and understand the contribution of each part of the system to it.
There are many possible sources of latency: input and output, software and hardware, device and host.
Typical latency measurement methods consisted in counting frames on videos made with a high-speed camera~\cite{ng12,steed08,teather09}.
This method is simple, but tedious.
It is difficult to make large series of measurements and it is impossible to identify the main sources of latency.
Other methods enable repetitive measures, but they are adapted to specific input types~\cite{casiez15,deber16}.
-Therefore, we created the LagMeter: a latency measurement tool that facilitates repetitive measures, and enables the slicing of latency between several parts of the interactive system~\cite{casiez17}.
-It measures the end-to-end latency between any tap-based input (keyboard, mouse, touchpad, touchscreen, …) and the resulting change on the screen.
%Any interactive system exhibits some delay between a user’s action and the corresponding system response, known as the end-to-end latency. This latency is caused by many factors pertaining to the input device, the operating system (e.g. device drivers, control and communication policies), the soft- ware toolkits and application used, as well as the output device. Depending on its amount and variation over time (jitter), the end-to-end latency can degrade the action-perception loop, impact user performance and make the system feel less responsive and interactive.
%Latency has long been known to affect performance and user perception in indirect pointing tasks, Virtual Reality and touch interactions [1, 8–10, 12, 13, 16, 21]. While today’s touchscreens show latencies ranging from 50 to 200 ms [14], it is known that users can perceive touchscreen latency as low as 2 ms [14] and that performance for dragging tasks degrades above 25 ms [10]. In indirect interaction, latencies above 50 ms are noticed and affect performance [8, 9].
%Considering the importance of latency in interactive systems, it is essential to measure and report it, to assess how it af- fects users or the results of an experiment. Until recently, its measure has been a tedious process based on the use of external cameras [11, 14, 15, 18–21] but methods have been proposed to ease the process through interactive tools [2, 6] or repeated measures [3, 7]. These tools can be used to try to reduce latency but it can be a trial and error process without the understanding of the influence of each part of a system. In addition, none of the measurement tools allows to measure end-to-end latency while a user interacts with the system, and existing tools are limited to specific technologies.
-\input{figures/lagmeter.tex}
+\paragraph{Measurement apparatus}
+
+We designed LagMeter, a latency measurement tool that facilitates repetitive measures, and enables the slicing of latency between several parts of the interactive system~\cite{casiez17}.
+It measures latency for any tap-based input such as keyboards, mice, touchpads, touchscreens.
+The slicing of latency uses software probes at different stages of the system.
+The details are described in the paper, and the overall idea is depicted on \reffig{fig:lagmeter}.
-Our method is usable with any tap-based input: keyboard, mouse, touchpad, touchscreen.
-Slicing of latency with software probes.
+The moment users touch the input device, a piezoelectric vibration sensor\footnote{\href{http://www.te.com/usa-en/product-CAT-PFS0011.html}{http://www.te.com/usa-en/product-CAT- PFS0011.html}} detects the contact.
+We connected this sensor to a custom board connected to an Arduino Leonardo\footnote{\href{https://www.arduino.cc/en/Main/Arduino_BoardLeonardo}{https://www.arduino.cc/en/Main/Arduino\_BoardLeonardo}} microcontroller board, which sends a Raw HID message to the host computer.
+This communication channel is fast, we measured a $1.3s$ round-trip delay between the Arduino and the host computer (sd $0.6s$, \nth{95} percentile $2.0s$, details are available in the paper).
+In parallel, the input device sends an HID packet corresponding to the event to the host computer.
+A custom application gets the RawHID packet with HIDAPI\footnote{\href{https://github.com/signal11/hidapi}{https://github.com/signal11/hidapi}}, and the device HID packet with libpointing~\cite{casiez11a}.
+It also has callbacks on the system and toolkit input events.
+When the application received the input event, the application toggles the screen between black and white.
+It has callbacks that trigger when the repaint is requested and done.
+Then, a photodiode on the electronic board detects the change on the screen and the Arduino sends another Raw HID message to the application.
-figure
+%Our method is usable with any tap-based input: keyboard, mouse, touchpad, touchscreen.
+%Slicing of latency with software probes.
-explain method, pipeline
+\paragraph{Results and discussion}
briefly describe results, takeaway: latency is due do display pipeline