Deprecated (8192): Creation of dynamic property Laminas\Diactoros\Uri::$base is deprecated [CORE/src/Http/ServerRequestFactory.php, line 254]
Deprecated (8192): Creation of dynamic property Laminas\Diactoros\Uri::$webroot is deprecated [CORE/src/Http/ServerRequestFactory.php, line 256]
Deprecated (8192): Creation of dynamic property App\Controller\PartsController::$RequestHandler is deprecated [CORE/src/Controller/Controller.php, line 354]
Deprecated (8192): Creation of dynamic property App\Controller\PartsController::$Flash is deprecated [CORE/src/Controller/Controller.php, line 354]
Deprecated (8192): Return type of Cake\Database\Query::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/Database/Query.php, line 1900]
Deprecated (8192): Creation of dynamic property App\Controller\PartsController::$Parts is deprecated [CORE/src/Controller/Controller.php, line 354]
Deprecated (8192): Return type of Cake\Database\Statement\StatementDecorator::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/Database/Statement/StatementDecorator.php, line 285]
Deprecated (8192): Return type of Cake\Chronos\Traits\FactoryTrait::createFromFormat($format, $time, $tz = null): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::createFromFormat(string $format, string $datetime, ?DateTimeZone $timezone = null): DateTimeImmutable|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FactoryTrait.php, line 233]
Deprecated (8192): Return type of Cake\Chronos\Traits\FrozenTimeTrait::setTime($hours, $minutes, $seconds = null, $microseconds = null): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::setTime(int $hour, int $minute, int $second = 0, int $microsecond = 0): DateTimeImmutable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php, line 78]
Deprecated (8192): Return type of Cake\Chronos\Traits\FrozenTimeTrait::add($interval): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::add(DateInterval $interval): DateTimeImmutable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php, line 91]
Deprecated (8192): Return type of Cake\Chronos\Traits\FrozenTimeTrait::sub($interval): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::sub(DateInterval $interval): DateTimeImmutable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php, line 104]
Deprecated (8192): Return type of Cake\Chronos\Traits\FrozenTimeTrait::setTimezone($value) should either be compatible with DateTimeImmutable::setTimezone(DateTimeZone $timezone): DateTimeImmutable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php, line 143]
Deprecated (8192): Return type of Cake\Chronos\Traits\FrozenTimeTrait::setTimestamp($value): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::setTimestamp(int $timestamp): DateTimeImmutable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php, line 157]
Deprecated (8192): Return type of Cake\Chronos\Traits\FrozenTimeTrait::modify($relative): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::modify(string $modifier): DateTimeImmutable|false, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/FrozenTimeTrait.php, line 171]
Deprecated (8192): Return type of Cake\Chronos\Traits\ModifierTrait::setDate($year, $month, $day): Cake\Chronos\ChronosInterface should either be compatible with DateTimeImmutable::setDate(int $year, int $month, int $day): DateTimeImmutable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [ROOT/vendor/cakephp/chronos/src/Traits/ModifierTrait.php, line 112]
Deprecated (8192): Return type of Cake\I18n\FrozenDate::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/I18n/DateFormatTrait.php, line 442]
Deprecated (8192): Return type of Cake\I18n\FrozenTime::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/I18n/DateFormatTrait.php, line 442]
Deprecated (8192): Return type of Cake\Database\Statement\BufferedStatement::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/Database/Statement/BufferedStatement.php, line 294]
Deprecated (8192): Return type of Cake\Database\Statement\BufferedStatement::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/Database/Statement/BufferedStatement.php, line 284]
Deprecated (8192): Return type of Cake\ORM\ResultSet::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/ORM/ResultSet.php, line 187]
Deprecated (8192): Cake\ORM\ResultSet implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) [CORE/src/ORM/ResultSet.php, line 33]
Deprecated (8192): Cake\Collection\Collection implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) [CORE/src/Collection/Collection.php, line 27]
Deprecated (8192): Cake\Collection\Iterator\FilterIterator implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) [CORE/src/Collection/Iterator/FilterIterator.php, line 31]
Deprecated (8192): Return type of & Cake\ORM\Entity::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice [CORE/src/Datasource/EntityTrait.php, line 604]
Deprecated (8192): Cake\View\ViewBuilder implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) [CORE/src/View/ViewBuilder.php, line 37]
Warning (512): Unable to emit headers. Headers sent in file=/home/wbdhgxnxye2r/domains/simplehaptics.se/html/vendor/cakephp/cakephp/src/Error/Debugger.php line=970 [CORE/src/Http/ResponseEmitter.php, line 71]
Warning (2): Cannot modify header information - headers already sent by (output started at /home/wbdhgxnxye2r/domains/simplehaptics.se/html/vendor/cakephp/cakephp/src/Error/Debugger.php:970) [CORE/src/Http/ResponseEmitter.php, line 164]
Warning (2): Cannot modify header information - headers already sent by (output started at /home/wbdhgxnxye2r/domains/simplehaptics.se/html/vendor/cakephp/cakephp/src/Error/Debugger.php:970) [CORE/src/Http/ResponseEmitter.php, line 197]
Warning (2): Cannot modify header information - headers already sent by (output started at /home/wbdhgxnxye2r/domains/simplehaptics.se/html/vendor/cakephp/cakephp/src/Error/Debugger.php:970) [CORE/src/Http/ResponseEmitter.php, line 235]
Simple Haptics | Ph.D. thesis of Camille Moussette


Deprecated (8192): Creation of dynamic property App\View\AppView::$Html is deprecated [CORE/src/View/View.php, line 1090]
Deprecated (8192): Creation of dynamic property App\View\AppView::$Url is deprecated [CORE/src/View/View.php, line 1215]
Deprecated (8192): Creation of dynamic property Cake\View\Helper\HtmlHelper::$Url is deprecated [CORE/src/View/Helper.php, line 115]
 

In the first part of this book, the key pieces that make up the haptic design landscape have been introduced and discussed. By scrutinizing their origins and potential, and framing their role in this book’s inquiries, this new landscape is inevitably starting to reveal itself, becoming more approachable and comprehensible. While not everything is clear yet, the conditions are suitable enough to take my work to the next phase, that of designing haptics.

The second part of this thesis, titled Activities, presents the bulk of the haptic design activities that constitute the core part of this work. Design work, in this circumstance, means a number of practical, creative, construction-oriented, and making-related design research activities in the area of haptic interaction design, i.e. activities which previously have been discussed as research through design for design. The coming chapters will thus present a number of selected first-person experiences of the author of this work, engulfing designing haptics, under partly different conditions and within different environments, as a design researcher. These direct first-person experiences; the documentation in the form of notes and chronicles that remain; and the feedback that has been gathered from other participants throughout these processes all constitute essential elements of this research work. This is because, first, they come together to expose the practical work that has to be accomplished in designing and developing haptic interfaces. As with any design project, this design work must be analyzed, dissected, and valued in relation to its original design mandate.

Second, the documentation that remains from these activities is more than project descriptions; they are stories and narratives of a journey into haptic design, enriched with comments and impressions of the author’s experiences using a direct first-person perspective. In many instances, I explicitly comment and reflect on my own work, sharing my impression of what I did, why this was done, and try to detail how a particular haptic stimulus felt. It is one way of inviting the reader into some kind of disembodied haptic experience. Short of having the reader holding a haptic device and trying it out, it is the best that can be achieved within the limits of academic text and the book format. The activities presented are hopefully rich and nuanced enough so that one can get a feeling of the particular design situation and the experiences that took place during these activities.

This second part of the book is divided into four chapters, each one dissecting a significant practical, real-world activity of my research. Chapter 2.1 presents an early workshop activity, the so-called eNTERFACE workshop, which was the author’s first real encounter with haptic research and as such became a prototype study for the whole work. This experience proved crucial in my understanding of haptics and left a strong desire to approach and explore haptic design differently. Chapter 2.2 gives an account of the first of two internships at Microsoft Research, where I was able to act on my new design-led ideal of haptic design and put it to the test via a series of hardware sketches. It is through this work that my research started to materialize and where it gradually became more articulated and coherent. Chapter 2.3 introduces the second Microsoft Research internship, where the role and potential of haptics was specifically scrutinized in relation to an existing interaction platform, the Microsoft Kinect system. Chapter 2.4 summarizes the activities, the lessons learnt, and the insights gained from a series of five workshops that were conducted over a two-year-period with different groups of students, professional designers, and professionals from other domains. These workshops were carried out in an empirical vein, i.e. to intentionally share the author’s haptic design work with others and to actively seek out feedback, reaction, and further inspiration, that in turn could feed back into my design work. Such a collective testing ground has allowed me to significantly refine my ideas of what haptic interaction design is and can be.

Hence, the design research journey described in this part builds on a diverse set of experiences and concrete realizations. It has been full of tentative, exploratory, and idea-testing design activities, allowing me to acquire new knowledge, new skills, and constantly readjust my course of action. Little by little, the process has come to correct my assumptions, develop new ones, and I have invariably come to gain a clearer understanding of the haptic interaction design territory and how to best navigate it.

2.1 The Prototype Study

2.2 Sketching Haptic Interactions

2.3 Designing Haptic Interactions for Kinect

2.4 Sketching Haptics Workshops