All posts by James Essex

Furgie and Furgurt: Virtual Cuddling Pets



Meet the Furgs – Furgie and Furgurt!  The Furgs love to cuddle, and that is their main purpose – to allow partners to cuddle virtually.  By hugging one Furg, you create vibrations within your partner’s Furg.  When both partners hug their Furgs at the same time, the Furgs vibrate with greater intensity and purr.  In this way, hugging your new furry friend allows to you feel the vibrations of your loved one – from anywhere in the world.

Watch the video:



The Furgs are made with the following:

Sensors: Bend sensors are used to enable the detection of hugging.  If a sensor is bent past a pre-determined threshold, a hug gesture is detected and the actuators are triggered.

Actuators: Multiple vibration motors and a buzzer motor are sewn into the inner layers.  When Furg A is hugged, the first vibration motor of Furg A and Furg B vibrate, and the buzzer starts making a purring sound.  When Furg A and Furg B are hugged at the same time, all vibration motors on both Furgs vibrate – the Furgs vibrate with greater intensity.

Boards: Each Furg runs off of its own Arduino board and its own Lilypad board.  The reason that two boards are included in each Furg is to provide many pins for future functionality (described below).  The Arduino and Lilypad boards communicate across a Software Serial channel.

Connectivity: The Furg Arduino boards are linked via a Software Serial channel.  This was done for demonstration purposes only – future versions will include WIFI chips, so that two people, located in different locations, can hug via the Furgs.

Note, that initially Bluetooth chips were used, but the chips proved to be unreliable, often dropping pairings and/or running with inconsistent timing.  Sometimes the Furg communications would transmit simultaneously, while sometimes it would take several seconds.  As a result, Bluetooth was dropped.

Materials: The furgs are built around an egg shaped stuffed animal core.  Their custom outer layer is made of very soft, shaggy fake fur.  The ears are made of another type of fake fur that resembles cheetah fur, sewn together with the shaggy fur.  Fabrication of their shape was the most time consuming process over all others.  (Sewing is not one of my top skills, but it was great fun giving the Furgs their playful form).


Core Functionality Furgs_functionality_grid




Code for the project is available here:


Future Functionality

Although I believe that the ability to hug and cuddle virtually is awesome, I see a lot more potential in the Furgs and will be building out more features.  In addition to cuddling, multiple gestures will be added that enable virtual play fighting.

There will be no rules built into the pets, only a rich set of gestures.  Users can then make their own games out of the gestures.  For instance, ear tugging and belly poking will be enabled.  Imagine a girlfriend poking the belly of her boyfriend.  The boyfriend can poke back, or tug an ear, or send a playful sound or  playful gesture (by selecting one from  an LCD screen that will be added to the Furg bellies).  Users can create their own playful rituals around the Furgs, and can change and evolve those rituals as they please.

An initial set of features to add include:

  • Rich sound set
  • Head petting
  • Belly rubbing & poking
  • Nose touching & nose rubbing
  • Ear tugging
  • Jiggle and bounce
  • LCD screen – displays animations like heart bursts, and provides a menu that enables sending of messages, sounds, and animations












Daily Device: Tropicana Elevator

Elevators are “thinking” machines, determining which floor to move to next based on their previous movement (in simple form).



Basic movement steps:

  1. From Idle, wait for a button to be pressed
  2. Move in the direction of the first button pressed (if you’re on floor 1 and floor 2 is pressed, move up; if you’re on floor 10 and floor 9 is pressed, move down)
  3. After opening and closing doors, check to see if another button is pressed.  If not, return to idle state.
  4. Determine direction and move:  If you were previously going up and a button for a higher floor is pressed, keep moving up.  If you were previously going down and a button for a lower floor is pressed, keep moving down.  If a button is pressed from the opposite direction – and there are no other buttons pressed for the current direction – switch and move in the new direction.
  5. Repeat.


Tropicana Elevator

Implementation Notes:

  • Uses 2 power sources: (1) Arduino for monitoring switches and opening pins, (2) 9V battery to drive the motor
  • Uses an IC chip to reverse the polarity in the motor (cause it to move forward/reverse)
  • The elevator uses time to determine when to stop when moving
    • There are 3 floors: G, 2, 3
    • Total time = time it takes to go from  G -> 3 = (G -> 2) + (2 -> 3)
    • If moving one floor, run the motor for 1/2 time.  If moving two floors, run the motor for the total time.
  • A Potentiometer, an Up, and a Down button are included (in addition to the G, 2, 3 buttons) to aid in debugging/fine tuning.