--- /dev/null
+%!TEX root = ../hdrmain.tex
+
+\begin{figure}[htb]
+ \centering
+ \definecolor{cellred}{rgb} {0.98,0.17,0.15}
+ \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
+
+ \def\inner{10}
+ \def\innerw{5}
+ \pgfmathsetmacro{\innera}{\inner+\innerw}
+ \pgfmathsetmacro{\innerb}{\inner-\innerw}
+ \def\innerp{15}
+ \pgfmathsetmacro{\innerc}{90-\innerp}
+ \pgfmathsetmacro{\innerd}{270-\innerp}
+ \pgfmathsetmacro{\innere}{90+\innerp}
+
+ \def\outer{20}
+ \def\outerw{5}
+ \pgfmathsetmacro{\outera}{\outer+\outerw}
+ \pgfmathsetmacro{\outerb}{\outer-\outerw}
+ \def\outerp{10}
+ \pgfmathsetmacro{\outerc}{180-\outerp}
+ \pgfmathsetmacro{\outerd}{360-\outerp}
+ \pgfmathsetmacro{\outere}{180+\outerp}
+
+ % #1: color
+ % #2: r
+ % #3: rd
+ % #4: a1
+ % #5: a2
+ % #6: ad
+ % #7 : text 1
+ % #8 : text 2
+ % #9 : text color
+ \newcommand{\bigarrow}[9]{
+ \fill[x=1mm, y=1mm, color=#1] (#5:#2) -- (#5-#6:#2-#3) arc[start angle=#5-#6, end angle=#4+#6, radius=#2-#3] -- (#4:#2) -- (#4+#6:#2+#3) arc[start angle=#4+#6, end angle=#5-#6, radius=#2+#3];
+
+ \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#7},text align=center, raise=-0.5ex}] (#5:#2) arc[start angle=#5, end angle=#4, radius=#2];
+ \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#8},text align=center, raise=-0.5ex}] (#4:#2) arc[start angle=#4, end angle=#5, radius=#2];
+ }
+ \newcommand{\bigtoparrow}[9]{
+ \fill[x=1mm, y=1mm, color=#1] (#5:#2-#3) arc[start angle=#5, end angle=#4, radius=#2-#3] -- (#4+#6:#2+#3) arc[start angle=#4+#6, end angle=#5-#6, radius=#2+#3];
+
+ \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#7},text align=center, raise=-0.5ex}] (#5:#2) arc[start angle=#5, end angle=#4, radius=#2];
+ \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#8},text align=center, raise=-0.5ex}] (#4:#2) arc[start angle=#4, end angle=#5, radius=#2];
+ }
+ \newcommand{\bigbottomarrow}[9]{
+ \fill[x=1mm, y=1mm, color=#1] (#5-#6:#2-#3) arc[start angle=#5-#6, end angle=#4+#6, radius=#2-#3] -- (#4:#2+#3) arc[start angle=#4, end angle=#5, radius=#2+#3];
+
+ \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#7},text align=center, raise=-0.5ex}] (#5:#2) arc[start angle=#5, end angle=#4, radius=#2];
+ \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#8},text align=center, raise=-0.5ex}] (#4:#2) arc[start angle=#4, end angle=#5, radius=#2];
+ }
+
+ \tikzexternalenable
+ \begin{tikzpicture}
+ \small
+ %\node[x=1mm, y=1mm, anchor=center, minimum width=84mm,minimum height=12mm, inner sep=0,fill=black!10, outer sep=0]() at (14,0) {};
+ \node[x=1mm, y=1mm, anchor=west, text width=1.2cm]() at (30,0) {\textbf{Physical World}};
+ \node[x=1mm, y=1mm, anchor=west, text width=1.2cm]() at (30,10) {\textbf{Mind}};
+ \node[x=1mm, y=1mm, anchor=west, text width=1.2cm]() at (30,-10) {\textbf{Computation}};
+
+ \fill[x=1mm, y=1mm, color=black!10] (0,0) -- (45:30) arc[start angle=45, end angle=-45, radius=30] -- cycle;
+ \fill[x=1mm, y=1mm, color=black!10] (0,0) -- (135:30) arc[start angle=135, end angle=225, radius=30] -- cycle;
+
+ %\bigbottomarrow{cellblue}{12}{4}{180}{360}{30}{}{System}{white}
+ %\bigbottomarrow{cellred}{12}{4}{0}{180}{30}{User}{}{white}
+ %\bigtoparrow{black!30}{20}{4}{-90}{90}{30}{Haptic rendering pipeline}{}{white}
+ %\bigtoparrow{black!60}{20}{4}{90}{270}{30}{Input pipeline}{}{white}
+
+ \bigarrow{cellblue}{10}{4}{180}{360}{20}{}{System}{white}
+ \bigarrow{cellred}{10}{4}{0}{180}{20}{User}{}{white}
+ \bigarrow{black!40}{18}{4}{-90}{90}{20}{Input pipeline}{}{white}
+ \bigarrow{black!60}{18}{4}{90}{270}{20}{Haptic rendering pipeline}{}{white}
+ \end{tikzpicture}
+ \tikzexternaldisable
+ \caption[Full pipeline.]{Full pipeline.}
+ \label{fig:all}
+\end{figure}
%!TEX root = ../hdrmain.tex
-\chapter{Haptic interaction}\label{chap:loop}
+\chapter{The Sensorimotor loop}\label{chap:loop}
%\epigraph{The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.}{Edsger Dijkstra}
\epigraph{The most exciting phrase to hear in science, the one that heralds new discoveries, is not ‘Eureka!’ but ‘That’s funny…’.}{Isaac Asimov}
\loremipsum
\end{Abstract}
+
separation sometimes necessary, to isolate an input or output phenomenon.
-Animals such as humans explore their environment by probing them, and perceiving properties. Perception is a combination of actions, resulting sensations, and cognitions that mixes this with memory, experience, etc.
-Perception/action cycle~\cite{gibson79}
+The point of this chapter is saying that previous chapters should be part of this one.
-Sensorimotor loop~\cite{oregan01a}
+Humans and systems are the same kind of entity, interacting with the world in a similar way. Not because it has to be, but because we took inspiration from humans to design interactive systems.
+Orr this is the most efficient, most obvious, or only way to do this.
-Theory of action~\cite{norman88}
+\section{The limits}
-sensory substitution
-fast movements: feedback cannot be received?
+Haptic wristband for gestural interaction
-Human processor: perceptual system, motor system, cognitive system~\cite{card83}
+\subsection{Quantitative limitations}
-Abowd \& Beale's interaction framework\cite{abowd91}
+focus on feedback rather than interaction
-Direct manipulation~\cite{schneiderman83}
+ => Travaux direct manipulation
-Instrumental interaction~\cite{mbl00}
+ \subsection{Qualitative limitations}
-Curiosity~\cite{laversannefinot18}
+PAD \cite{mehrabian96} and presence \cite{witmer98}, significant difference in sensory and realism factors.
-Arch~\cite{arch92}, MVC~\cite{reenskaug79,reenskaug79a}, PAC~\cite{coutaz87}
+ => travaux embodiment
-Implementation depends on ethnographic background of programmers \cite{rode04}
+%Distal touch
-Software architecture reproduce the organization structure\cite{conway68}
+
+
+
+\section{Coupling}
+
+\subsection{Human side}
+
+Animals such as humans explore their environment by probing them, and perceiving properties. Perception is a combination of actions, resulting sensations, and cognitions that mixes this with memory, experience, etc.
Affordances \cite{gibson77}, then in HCI \cite{norman88} then signifiers \cite{norman02}
perceptible/hidden/false~\cite{gaver91}.
- => Towards computing affordance, a generalized notion of computability
+Perception/action cycle~\cite{gibson79}
-Control and automation: Moravec's paradox
+Sensorimotor loop~\cite{oregan01a}
+
+Theory of action~\cite{norman88}
+\input{figures/sevenstages.tex}
+
+sensory substitution\cite{bachyrita72,bachyrita03}
+fast movements: feedback cannot be received?
% Sensory substitution refers to situations in which sensations that are typically perceived with one sense are translated to another sense.
% Bach-y-Rita introduced this concept~\cite{backyrita72} and invented the Tactile Vision Sensory Substitution system (TVSS) \cite{collins73}.
%It is also used in other contexts like surgery, in which vision is required for a primary task, and haptics is used to replace vision at a different scale and point of view~\cite{robineau07}.
-The point of this chapter is saying that previous chapters should be part of this one.
+exploratory procedures \cite{lederman87}
-Humans and systems are the same kind of entity, interacting with the world in a similar way. Not because it has to be, but because we took inspiration from humans to design interactive systems.
+Human processor: perceptual system, motor system, cognitive system~\cite{card83}
-\begin{figure}[htb]
- \centering
- \definecolor{cellred}{rgb} {0.98,0.17,0.15}
- \newcommand{\stage}[2]{
- \node[minimum width=2.5cm, minimum height=.85cm,fill=cellred, text=white,text width=2cm, align=center, rounded corners=2ex, outer sep=0, execute at begin node=\setlength{\baselineskip}{0em}](#1) {#2};
- }
- \begin{tikzpicture}
- \small
- \matrix[row sep=3mm, column sep=2mm,inner sep=0, node distance=0, outer sep=5mm] (cells) {
- & \stage{goal}{Goal} & \\
- \stage{intention}{Intention} & & \stage{evaluation}{Evaluation} \\
- \stage{specification}{Specification actions} & & \stage{interpretation}{Interpretation} \\
- \stage{execution}{Execution actions} & & \stage{perception}{Perception} \\
- };
- \node[anchor=north, minimum width=8.6cm,minimum height=.8cm,fill=black!10](world) at (cells.south) {World};
- \draw [->, -stealth', thick]
- (perception) edge (interpretation)
- (interpretation) edge (evaluation)
- (evaluation) edge[out=90, in=0] (goal)
- (goal) edge[out=180, in=90] (intention)
- (intention) edge (specification)
- (specification) edge (execution);
- \draw [->, -stealth', thick, dashed, draw=black!50, fill=black!50]
- (perception|-world.north) edge (perception.south)
- (execution) to (execution|-world.north);
- \node[anchor=south, minimum width=2.6cm, rotate=90, outer sep=5mm](gulfexecution) at (specification.west) {Gulf of execution};
- \draw [->, -stealth', thick,transform canvas={xshift=1em}]
- (gulfexecution.east |- intention.north) to (gulfexecution.east |- execution.south);
- \node[anchor=south, minimum width=2.6cm, rotate=270, outer sep=5mm](gulfevaluation) at (interpretation.east) {Gulf of evaluation};
- \draw [->, -stealth', thick,transform canvas={xshift=-1em}]
- (gulfevaluation.west |- perception.south) to (gulfevaluation.west |- evaluation.north);
- % \node[anchor=south, minimum width=2.6cm, rotate=90, thick,draw=black!20,fill=black!20] at (n.north west) {Implementation};
- % \node[anchor=south, minimum height=0.6cm, minimum width=6cm, thick, draw=black!20,fill=black!20] at (nd.north east) {Computing affordance};
- \end{tikzpicture}
- \caption{Norman's seven stages of action~\protect\cite{norman02}. It describes how people interact with their environment.}
- \label{fig:sevenstages}
- \end{figure}
-
- \begin{figure}[htb]
- \centering
- \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
-
- \newcommand{\stage}[2]{
- \node[minimum width=2.5cm, minimum height=.85cm,fill=cellblue, text=white,text width=2cm, align=center, rounded corners=2ex, outer sep=0, execute at begin node=\setlength{\baselineskip}{0em}](#1) {#2};
- }
- \begin{tikzpicture}
- \small
- \matrix[row sep=3mm, column sep=2mm,inner sep=0, node distance=0, outer sep=5mm] (cells) {
- \stage{sensing}{Sensing} & & \stage{physical}{Physical effect} \\
- \stage{events}{Input Events} & & \stage{command}{Command} \\
- \stage{phrase}{Input phrase} & & \stage{encoding}{Encoding} \\
- & \stage{application}{Application} & \\
- };
- \node[anchor=south, minimum width=8.6cm,minimum height=.8cm,fill=black!10](world) at (cells.north) {World};
- \draw [->, -stealth', thick]
- (sensing) edge (events)
- (events) edge (phrase)
- (phrase) edge[out=270, in=180] (application)
- (application) edge[out=0, in=270] (encoding)
- (encoding) edge (command)
- (command) edge (physical);
- \draw [->, -stealth', thick, dashed, draw=black!50, fill=black!50]
- (sensing|-world.south) edge (sensing.north)
- (physical) to (physical|-world.south);
- \node[anchor=south, minimum width=2.6cm, rotate=90, outer sep=5mm](funnelevaluation) at (events.west) {Funnel of evaluation};
- \draw [->, -stealth', thick,transform canvas={xshift=1em}]
- (funnelevaluation.east |- sensing.north) to (funnelevaluation.east |- phrase.south);
- \node[anchor=south, minimum width=2.6cm, rotate=270, outer sep=5mm](funnelexecution) at (command.east) {Funnel of evaluation};
- \draw [->, -stealth', thick,transform canvas={xshift=-1em}]
- (funnelexecution.west |- encoding.south) to (funnelexecution.west |- physical.north);
- % \node[anchor=south, minimum width=2.6cm, rotate=90, thick,draw=black!20,fill=black!20] at (n.north west) {Implementation};
- % \node[anchor=south, minimum height=0.6cm, minimum width=6cm, thick, draw=black!20,fill=black!20] at (nd.north east) {Computing affordance};
- \end{tikzpicture}
- \caption[Seven stages of interactive computation]{The seven stages of interactive computation, adapted from Norman's seven stages of action. It describes how interactive systems interact with their environment.}
- \label{fig:mysevenstages}
- \end{figure}
-
-
-\begin{figure}[htb]
- \centering
- \definecolor{cellred}{rgb} {0.98,0.17,0.15}
- \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
-
- \newcommand{\labelcell}[2]{
- \node[minimum width=3.0cm, minimum height=.85cm,text width=1.7cm, align=center, outer sep=0](#1) {#2};
- }
- \newcommand{\bluecell}[2]{
- \node[minimum width=2.1cm, minimum height=.85cm,fill=cellblue, text=white,text width=2cm, align=center, rounded corners=2ex, outer sep=0](#1) {#2};
- }
- \newcommand{\redcell}[2]{
- \node[minimum width=2.1cm, minimum height=.85cm,fill=cellred, text=white,text width=2cm, align=center, rounded corners=2ex, outer sep=0](#1) {#2};
- }
- \begin{tikzpicture}
- \small
- \matrix[row sep=3mm, column sep=0,inner sep=0, node distance=0, outer sep=5mm] (cells) {
- & \labelcell{perception}{Perception} & \labelcell{output}{Output} & \\
- \redcell{user}{User} & \labelcell{sensorimotor}{Sensorimotor loop} & \labelcell{execution}{Execution loop} & \bluecell{system}{System}\\
- & \labelcell{action}{Action} & \labelcell{input}{Input} & \\
- };
- \draw [->, -stealth', thick]
- (sensorimotor.north east) edge[bend right] (user.north)
- (user.south) edge[bend right] (sensorimotor.south east)
- (execution.south west) edge[bend right] (system.south)
- (system.north) to[bend right] (execution.north west);
- \draw [ultra thick, draw=black!20, fill=black!50]
- (perception.north east) edge (action.south east);
- \end{tikzpicture}
- \caption{The similarity of a user and a system interacting with each other.}
- \label{fig:loops}
- \end{figure}
-
+\subsection{System side}
+
+Curiosity~\cite{laversannefinot18}
+Arch~\cite{arch92}, MVC~\cite{reenskaug79,reenskaug79a}, PAC~\cite{coutaz87}
-\begin{figure}[htb]
- \centering
- \definecolor{cellred}{rgb} {0.98,0.17,0.15}
- \definecolor{cellblue}{rgb} {0.17,0.60,0.99}
+Implementation depends on ethnographic background of programmers \cite{rode04}
- \def\inner{10}
- \def\innerw{5}
- \pgfmathsetmacro{\innera}{\inner+\innerw}
- \pgfmathsetmacro{\innerb}{\inner-\innerw}
- \def\innerp{15}
- \pgfmathsetmacro{\innerc}{90-\innerp}
- \pgfmathsetmacro{\innerd}{270-\innerp}
- \pgfmathsetmacro{\innere}{90+\innerp}
-
- \def\outer{20}
- \def\outerw{5}
- \pgfmathsetmacro{\outera}{\outer+\outerw}
- \pgfmathsetmacro{\outerb}{\outer-\outerw}
- \def\outerp{10}
- \pgfmathsetmacro{\outerc}{180-\outerp}
- \pgfmathsetmacro{\outerd}{360-\outerp}
- \pgfmathsetmacro{\outere}{180+\outerp}
-
- % #1: color
- % #2: r
- % #3: rd
- % #4: a1
- % #5: a2
- % #6: ad
- % #7 : text 1
- % #8 : text 2
- % #9 : text color
- \newcommand{\bigarrow}[9]{
- \fill[x=1mm, y=1mm, color=#1] (#5:#2) -- (#5-#6:#2-#3) arc[start angle=#5-#6, end angle=#4+#6, radius=#2-#3] -- (#4:#2) -- (#4+#6:#2+#3) arc[start angle=#4+#6, end angle=#5-#6, radius=#2+#3];
-
- \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#7},text align=center, raise=-0.5ex}] (#5:#2) arc[start angle=#5, end angle=#4, radius=#2];
- \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#8},text align=center, raise=-0.5ex}] (#4:#2) arc[start angle=#4, end angle=#5, radius=#2];
- }
- \newcommand{\bigtoparrow}[9]{
- \fill[x=1mm, y=1mm, color=#1] (#5:#2-#3) arc[start angle=#5, end angle=#4, radius=#2-#3] -- (#4+#6:#2+#3) arc[start angle=#4+#6, end angle=#5-#6, radius=#2+#3];
-
- \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#7},text align=center, raise=-0.5ex}] (#5:#2) arc[start angle=#5, end angle=#4, radius=#2];
- \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#8},text align=center, raise=-0.5ex}] (#4:#2) arc[start angle=#4, end angle=#5, radius=#2];
- }
- \newcommand{\bigbottomarrow}[9]{
- \fill[x=1mm, y=1mm, color=#1] (#5-#6:#2-#3) arc[start angle=#5-#6, end angle=#4+#6, radius=#2-#3] -- (#4:#2+#3) arc[start angle=#4, end angle=#5, radius=#2+#3];
-
- \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#7},text align=center, raise=-0.5ex}] (#5:#2) arc[start angle=#5, end angle=#4, radius=#2];
- \draw [x=1mm, y=1mm, decorate, decoration={text along path, text={|\color{#9}|#8},text align=center, raise=-0.5ex}] (#4:#2) arc[start angle=#4, end angle=#5, radius=#2];
- }
-
- \tikzexternalenable
- \begin{tikzpicture}
- \small
- %\node[x=1mm, y=1mm, anchor=center, minimum width=84mm,minimum height=12mm, inner sep=0,fill=black!10, outer sep=0]() at (14,0) {};
- \node[x=1mm, y=1mm, anchor=west, text width=1.2cm]() at (30,0) {\textbf{Physical World}};
- \node[x=1mm, y=1mm, anchor=west, text width=1.2cm]() at (30,10) {\textbf{Mind}};
- \node[x=1mm, y=1mm, anchor=west, text width=1.2cm]() at (30,-10) {\textbf{Computation}};
-
- \fill[x=1mm, y=1mm, color=black!10] (0,0) -- (45:30) arc[start angle=45, end angle=-45, radius=30] -- cycle;
- \fill[x=1mm, y=1mm, color=black!10] (0,0) -- (135:30) arc[start angle=135, end angle=225, radius=30] -- cycle;
-
- %\bigbottomarrow{cellblue}{12}{4}{180}{360}{30}{}{System}{white}
- %\bigbottomarrow{cellred}{12}{4}{0}{180}{30}{User}{}{white}
- %\bigtoparrow{black!30}{20}{4}{-90}{90}{30}{Haptic rendering pipeline}{}{white}
- %\bigtoparrow{black!60}{20}{4}{90}{270}{30}{Input pipeline}{}{white}
-
- \bigarrow{cellblue}{10}{4}{180}{360}{20}{}{System}{white}
- \bigarrow{cellred}{10}{4}{0}{180}{20}{User}{}{white}
- \bigarrow{black!40}{18}{4}{-90}{90}{20}{Input pipeline}{}{white}
- \bigarrow{black!60}{18}{4}{90}{270}{20}{Haptic rendering pipeline}{}{white}
- \end{tikzpicture}
- \tikzexternaldisable
- \caption[Full pipeline.]{Full pipeline.}
- \label{fig:all}
-\end{figure}
-
-\section{Something}
-
-
-\subsection{Direct Manipulation in tactile displays}
-\label{sec:hapticdm}
+Software architecture reproduce the organization structure\cite{conway68}
-Haptic wristband for gestural interaction
+\subsection{Human/System combination}
-=> Fail 1: Quantitative benefit
+Abowd \& Beale's interaction framework\cite{abowd91}
-focus on feedback rather than interaction
+Direct manipulation~\cite{schneiderman83}
- => Trravaux direct manipulation
+Instrumental interaction~\cite{mbl00}
-=> Fail 2: Qualitative benefit
-PAD \cite{mehrabian96} and presence \cite{witmer98}, significant difference in sensory and realism factors.
+=> Towards computing affordance, a generalized notion of computability
+
+Control and automation: Moravec's paradox
- => travaux embodiment
-Distal touch
+\section{Case studies}
+
+\subsection{Haptic interaction paradigms}
Direct Manipulation~\cite{gupta16,gupta16a}
+\label{sec:hapticdm}
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.
-\subsection{Summon interactions}
-\label{sec:summon}
-
Summon interactions~\cite{gupta17}
+\label{sec:summon}
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.
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.
+\subsection{Haptic and embodiment in Virtual Reality}
+
-\section{Contribution of haptic to sense of embodiment}
\label{sec:embodiment}
\cite{witmer98,slater99,slater09,kilteni12,roth20,peck21}
-\cite{richard20}
+\cite{richard20,richard22}
+
+\section{Rant}
+
+\input{figures/sevenstages2.tex}
+
+\input{figures/interactingloops.tex}
+
+\input{figures/wholeschema.tex}