Tactile direct manipulation figure
authorThomas Pietrzak <thomas.pietrzak@gmail.com>
Thu, 7 Apr 2022 09:00:03 +0000 (11:00 +0200)
committerThomas Pietrzak <thomas.pietrzak@gmail.com>
Thu, 7 Apr 2022 09:00:03 +0000 (11:00 +0200)
figures/hand.pdf [new file with mode: 0644]
figures/interactingloops.tex
figures/tactiledm.tex [new file with mode: 0644]
mystyle.sty
tex/4-loop.tex

diff --git a/figures/hand.pdf b/figures/hand.pdf
new file mode 100644 (file)
index 0000000..690686d
Binary files /dev/null and b/figures/hand.pdf differ
index 8432d5c3d81496cefaf5f820eb19cfe5ec6932ce..93c841e53a0c9ff96df2464243148714745bb55d 100644 (file)
@@ -19,7 +19,7 @@
   \begin{tikzpicture}[x=1mm, y=1mm]
     \small
     % Common/shared environment?
-    \node[minimum width=15mm, draw=black!20, fill=black!20, text=black, text width=20mm, line width=4mm, circle, align=center,outer sep=0, execute at begin node=\setlength{\baselineskip}{10mm}](environment) at (0,0) {Shared environment};
+    \node[minimum width=15mm, draw=black!20, fill=black!20, text=black, text width=20mm, line width=4mm, circle, align=center,outer sep=0, execute at begin node=\setlength{\baselineskip}{10mm}, decorate, decoration={random steps,segment length=3mm,amplitude=0.8mm}](environment) at (0,0) {Shared environment};
     % Middle line
     %\draw [line width=30, draw=black!20, fill=black!50] (0,-15) -- (0,15);
 
diff --git a/figures/tactiledm.tex b/figures/tactiledm.tex
new file mode 100644 (file)
index 0000000..9d0828d
--- /dev/null
@@ -0,0 +1,69 @@
+%!TEX root = ../hdrmain.tex
+
+\begin{figure}[htb]
+  \centering
+  % #1: position
+  % #2: color
+  % #3: freq
+  \newcommand{\vibration}[3]{
+    \fill [#2, path fading=fade out] (#1) circle (5);
+    \draw[style=wave, decoration={segment length=#3}] (#1) -- ++(45:5);% ++(#1);
+    \draw[style=wave, decoration={segment length=#3}] (#1) -- ++(-135:5);% ++(#1);
+  }
+  % #1: position
+  % #2: color
+  % #3: angle
+  \newcommand{\cursor}[3]{
+    \draw[#2, -Stealth, line width=0.8mm] (#1) ++(#3:7) -- (#1);
+  }
+  \tikzfading[name=fade out,
+    inner color=transparent!50,
+    outer color=transparent!100]
+  % \tikzexternalenable
+  \begin{tikzpicture}[x=1mm, y=1mm,
+    display/.style={draw=black!30, fill=white, line width=7},
+    target/.style={draw=myblue, line width=7},
+    arrow/.style={draw=myred, line width=2},
+    wave/.style={black, decorate, decoration={expanding waves, angle=45, segment length=3}, line width=1}]
+    \small
+    \def\circleradius{14}
+    \begin{scope}
+      \node[anchor=south, xshift=19, yshift=-19] (hand) at (0,0) {\includegraphics[height=4cm]{figures/hand}};
+      % Display
+      \filldraw[style=display] (0,0) circle (\circleradius);
+      % Labels
+      \node[below=1] () at (90:\circleradius) {\ang{0}};
+      \node[right=1] () at (180:\circleradius) {\ang{90}};
+      \node[above=1] () at (-90:\circleradius) {\ang{180}};
+      \node[left=1] () at (0:\circleradius) {\ang{270}};
+      % Targets
+      \draw[style=target] (40:\circleradius) arc [start angle=40, end angle=80, radius=\circleradius]
+        (-30:\circleradius) arc [start angle=-30, end angle=10, radius=\circleradius]
+        (-100:\circleradius) arc [start angle=-100, end angle=-60, radius=\circleradius];
+      % green cursor
+      \vibration{140:\circleradius}{mygreen}{4}
+      \cursor{140:\circleradius}{black}{-45}
+    \end{scope}
+    \begin{scope}[xshift=150]
+      \node[anchor=south, xshift=19, yshift=-19] (hand) at (0,0) {\includegraphics[height=4cm]{figures/hand}};
+      % Display
+      \filldraw[style=display] (0,0) circle (\circleradius);
+      % Labels
+      \node[below=1] () at (90:\circleradius) {\ang{0}};
+      % Targets
+      \draw[style=target] (40:\circleradius) arc [start angle=40, end angle=80, radius=\circleradius]
+        (-30:\circleradius) arc [start angle=-30, end angle=10, radius=\circleradius]
+        (-100:\circleradius) arc [start angle=-100, end angle=-60, radius=\circleradius];
+      % greyed cursor
+      \cursor{140:\circleradius}{black!15}{-45}
+      % red cursor
+      \vibration{-65:\circleradius}{myred}{2.5}
+      \cursor{-65:\circleradius}{black!}{135}
+      % arrow
+      \draw[style=arrow, -{Stealth[bend]}] (160:11) arc [start angle=160, end angle=270, radius=11];
+    \end{scope}
+  \end{tikzpicture}
+  \tikzexternaldisable
+  \caption[Tactile direct manipulation]{A 1D circular \sumproduct{360 x 1} tactile display around the wrist. On left, the tactile pointer is over void and the tactile response frequency is represented in green. On right, the user navigates the pointer to a target, where the tactile response frequency is different (red).}
+  \label{fig:tactiledm}
+\end{figure}
index e16c4b5a117c94eaac75ba769256dd115bb5430c..c2acca920c1ecb5811d7d4b1822a3b5dc0c66fe3 100644 (file)
 \sisetup{per-mode=fraction, range-phrase={--}, range-units = single, output-decimal-marker = {.}}
 % Patch until the new version of siunitx is out
 \newcommand{\qtyrange}[3]{\SIrange{#1}{#2}{#3}}
+\newcommand{\sumproduct}[1]{\num{#1}}
 
 \usepackage{pgfplots}
 \usepackage{tikz}
-\usetikzlibrary{calc,arrows.meta,arrows,positioning,decorations.text,backgrounds}
+\usetikzlibrary{calc,arrows.meta,arrows,positioning,decorations.text,backgrounds,fadings}
 \usepackage[siunitx]{circuitikz}
 \usepgfplotslibrary{external}
 \pgfplotsset{compat=1.17} % avoids warning
 
 \definecolor{myred}{rgb}    {0.98,0.17,0.15}
 \definecolor{myblue}{rgb}    {0.17,0.60,0.99}
+\definecolor{mygreen}{rgb}    {0.17,0.88,0.25}
 
 \newcommand\brectangles{%
 \begin{tikzpicture}[overlay, remember picture]
index cd4cf15e24c421b2a5f8870c0125c49721877891..c1c43d6479f2b1ed9a2e42cd97ed05032c94fffe 100644 (file)
@@ -718,7 +718,7 @@ The advantage of this approach is that it leverages the sensorimotor and executi
 \section{Contributions}
 
 In the previous chapters I presented contributions to improve output by leveraging the sense of touch, and input by leveraging the motor abilities.
-The contributions below use the orthogonal approach as discussed above to leverage the sensorimotor loop.
+The contributions below use the orthogonal approach as discussed above to improve interaction by leveraging the sensorimotor loop.
 The first contribution is two interaction paradigms that leverage gestural interaction and vibrotactile feedback.
 %The first one use semaphoric gestures to replace pointing in mid-air gestural interaction.
 The second contribution investigates the contributionn of haptics on the embodiment of an avatar in Virtual Reality.
@@ -726,8 +726,9 @@ The second contribution investigates the contributionn of haptics on the embodim
 \subsection{Haptic interaction paradigms}
 \label{sec:hapticparadigms}
 
-Summon interactions~\cite{gupta17}
+\subsubsection{Summon interactions}
 \label{sec:summon}
+~\cite{gupta17}
 
 3D gestural interaction in the air faces difficult challenges due to the contact-less nature of this interaction style.
 The absence of physical buttons or other unambiguous activation action makes it difficult to segment gestures.
@@ -735,14 +736,17 @@ As a consequence, the system constantly interprets the users' actions.
 Therefore the user is always potentially interacting with the environment.
 This is known as the Midas touch problem, as a reference to the Midas king in the greek mythology, who turned everything he was touching to gold.
 
-Direct Manipulation~\cite{gupta16,gupta16a}
+\subsubsection{Haptic direct Manipulation}
 \label{sec:hapticdm}
+~\cite{gupta16,gupta16a}
 
 Direct manipulation is one of the most fundamental foundation of GUIs~\cite{schneiderman83}.
 It provides valuable usability benefits that highly contributed to the success of GUIs over command line interfaces.
 Yet, the description of this paradigm relied essentially on visual cues.
 In this project, we explained how to adapt the concept of direct manipulation to tactile displays.
 
+\input{figures/tactiledm.tex}
+
 \subsection{Haptic and embodiment in Virtual Reality}