The Haptic Creature

The Robot: Hardware

The robot weighs 2.5kg (5.5lbs). Its body is 33cm (13in) long — 13cm (5in) from snout to back, 20cm (8in) from back to rump — and its tail (which masks the communication and power cables) is 100cm (39in) in length. The robot is 10cm (4in) wide at its snout and 20cm (8in) wide at the broadest part of its back.

The Haptic Creature’s exterior is constructed of a synthetic faux fur. The thread length for the majority of the fur is approximately 2cm (.8in) nap, with a much shorter nap for the underbelly to provide a contrast in texture. Directly beneath the fur is a hand-moulded fiberglass shell (Figure 1). This shell serves both as a stable structure with which to affix the touch sensors as well as to protect the electronics and mechatronics mounted to a removable acrylic chassis within (Figure 2).

Figure 1: The Haptic Creature without exterior fur. Visible are the fiberglass shell; touch sensor mesh; the two ear bulbs [E]; and the rib cage [R].

The Haptic Creature has three degrees of freedom through which it communicates its emotional state: a pair of ears, which vary in stiffness; lungs, which simulate breathing; and a purr box, which renders a vibrotactile “purr”. The robot has an array of force sensors across its body to sense touch and an accelerometer to sense movement. These features are all controlled by means of a microcontroller that communicates with a host computer. Each of these will be described in the following sections.

Figure 2: The Haptic Creature mechatronics. Visible, from left to right, are the motor control board [M] and the mechanisms for the ears [E], purr box [P], accelerometer [A], and lungs [L]. Not visible, underneath chassis, is the FSR board, which houses the microcontroller.

Two features were initially developed for the Haptic Creature but not utilized in the current version. First, in an attempt to provide a more flesh-like feel, a prototype skin was fabricated from silicon rubber (Smooth-On “Dragon Skin”). This skin was to layer between the fur and the fiberglass shell; however, it interfered with the touch sensors and was cumbersome to integrate into the system. Second, to give a sense of warmth, I designed for the use of heating elements but found the Haptic Creature’s mechatronics generated adequate heat.


The Haptic Creature has two ears, each capable of changing stiffness independent of the other. The ears do not change position or move in any way; rather, they must be physically squeezed to sense their level of stiffness.

Each ear (Figure 1 [E]) is a self-inflating rubber bulb with a one-way valve at its tip (AMG model 106-792). The bulb’s opposing end is connected via a silicon tube to an air outtake valve driven by a Hitec HS-645MG analog servo (Figure 2 [E]). A servo was chosen for the ear mechanism because it provided a low cost, off-the-shelf solution for simple yet accurate position control.

When the valve is fully closed, squeezing the bulb allows no air to be released, so the ear is at maximum stiffness. Conversely, when the valve is fully opened, then air is allowed to freely escape when the bulb is squeezed, so the ear is at minimum stiffness. The servo’s full range of motion to adjust the valve from open to closed is 45 steps; however, as determined through informal pilot tests, at most five different levels of stiffness are observable throughout this range.


The lungs comprise the mechanism that simulate breathing within the Haptic Creature. It is comprised of a Hitec HSR-5980SG digital servo that drives a cantilevered jack (Figure 2 [L]) to which is attached the robot’s rib cage (Figure 1 [R]).

Like the ear mechanism described above, a servo was chosen for its ease of position control. Furthermore, the particular servo model here was selected for its speed and high torque necessary for the lung actuation. A trade-off for utilizing a servo, however, was that its discrete steps could at times could be felt. While efforts were undertaken to dampen the effects, the movement was not as smooth as I would have preferred.

The mechanism’s full range of motion, from fully exhaled (minimum volume) to fully inhaled (maximum volume), is 3 cm (1.2 in) laterally and 3 cm (1.2 in) vertically, which corresponds to 100 steps of the servo. However, this far exceeds natural, realistic breathing, so the range is limited to 1.4 cm (0.5 in) laterally and 1.4 cm (0.5 in) vertically, which corresponds to 45 steps of the servo.

Purr Box

The purr box is the mechanism within the Haptic Creature that generates the vibrotactile purr. It is comprised of a motor with an eccentric mass attached to its shaft (Figure 2 [P]).

The DC motor is a 20 watt Maxon RE 25 (model 118752) 25mm in diameter with graphite brushes. The eccentric mass is fabricated from a C1018 steel disk and weighs 12g. It is 10mm thick with an 18mm outer diameter and 9mm of material remaining.

I tested several less expensive motors; however, all generated unwanted audible artifacts, and, after extended use, many degraded in performance. The Maxon RE 25, while more costly, was both silent and robust.

Touch and Movement Sensing

Touch sensing is achieved through a mesh of 56 Interlink force sensing resistors (FSR) — 47 round (1.3cm / 0.5in), 9 square (3.8cm / 1.5in) — mounted to the Haptic Creature’s fiberglass shell (Figure 1). Covering the extent of the robot’s body, the sensors are placed at approximately 5cm (2in) intervals on-center, front to back and left to right. Each ear has a sensor on its front and outer side.  Figure 3 diagrams a two-dimensional representation of the touch sensor layout.


Figure 3: Touch sensor layout, flattened.   = Snout;  = Front;  = Front (Side);  = Front (Ear);  = Back;  = Back (Side);  = Rump;  = Underbelly.


Movement is sensed via a Freescale XYZ-axis accelerometer (model MMA7260QT), set to 6g sensitivity, and mounted on a Pololu breakout board (model 766).

Communication and Control

Communication with the Haptic Creature for low-level control of its mechatronics are managed by a Microchip PIC18F87J50 microcontroller as part of the Microchip Full Speed USB Demonstration Board (model MA180021). Control commands are sent by the host software to the microcontroller via USB 2.0 in order to set servo positions or motor speeds as well as query touch or accelerometer values.

Figure 4: FSR linearization circuit.

The overall system includes a motor control board (Figure 2 [M]) and a FSR board (Figure 2 underneath chassis). The motor board comprises the basic electronics that drive all the motors — two ear servos, the lungs servo, and the purr box motor — as well as the (unused) heating elements. The FSR board comprises the touch sensing circuitry in addition to housing the microcontroller. This board is capable of connecting 60 sensors, each of which is addressable via one of four multiplexers (MUX). The FSR board also provides simple circuitry to linearize sensor response (Figure 4).