Hello… Yes This is Dog.

I often video call my family and their dogs. But does my dog also want to video call me or other people/dogs?

Whenever my dog heard my family over the laptop or phone, or their dogs, he would wag furiously picking up a toy and run to either myself talking/purring happily away, or to the door to wait patiently to greet them when they come in. However, they weren’t there; I live in Finland and they live in England.

With my PhD being in making screens and methods for dog technology, and my recent work looking at an animal internet and building what I term ‘dog-driven’ systems I began to wonder: Would my dog ring me? What would a dog phone look like? How can I let my dog choose to ring me?

With lots of dogs being left home alone and in shelters I thought I cant have been the first to wonder this. I started to google ‘Dogs and Skype’ and saw people writing about voice frequency issues and dogs not having a Theory of Mind (ToM) to understand the interaction. However, when I design technologies for dogs, I tend to take the belief that rather than limit the possibilities to known instances, we should design for the unknown, expanding not only what a dog can do but giving possibilities for what a dog could be able to do. I had previously seen Rossi et al.’s talk about his work at the Animal-Computer Interaction conference where they Skyped to their dog; but this communication was only one way; what if his dog also wanted to Skype him back? What if he did not want to pick up the call? Should this communication not be a two-way street?

So I started to think about this and I had these general questions. At first around the physicality of this:

  • How can my dog start/end the video call (the interaction)? e.g. do I go with training him to push a buttons or automatic with an Infrared (IR) etc.
  • Does he need to stay in front of the ‘phone call device’ for it to keep ringing? Or am I the one to drop the call?

But the more I thought about it the more I reflected upon issues such as:

  • Do I need to pick up every phone call for him to understand the interaction? Will he understand if I am busy and just quickly pick up to say ‘Hi and bye’?
  • Can he understand the interaction or will he just go to the door to look for me? How can I quantify or measure what he does?
  • How do I prevent him getting confused and distressed by seeing and hearing me, but me not being there?
  • How can I tell if he rang me by accident? Does he need to be looking at the camera to be in the video call? As with humans, this is not always the case.
  • Who hangs up the call? How can he hang up? What if he walks away but just to bring me a toy?
  • What ‘rules’ do I set up for our interaction, or do I need rules or structure for this?

With these issues in mind I edited my prior IR application from my DoggyVision project towards Skype keyboard commands (full code can be found at the bottom of this page). This allowed whenever something was detected within 1 meter in front of my system (such as a dog) to video call whatever contact was selected. If you are interested in dog detection systems using Arduino I narrate this further in a previous blog post. I chose IR as the dog did not need to be trained to use this, and I have seen this previously work in my prior systems (including my own dog). I choose a video call (although I would have preferred a smell-a-vision type device that does not yet exist) so that my dog could both see and hear me to try and motivate his understanding that I am on the screen and not actually there.

Arduino Leonardo with Sharp 2Y0A02F IR Sensor and Led. Arduino code can be found at the bottom.

I then sat back and Skyped myself testing what I had built and thought about this for a while. I told my friends this project that I had worked on for a few hours, and the conversations I had surprised me.

Firstly it seemed unanimous that everyone thought my dog would ring me constantly, and I myself had even thought how would I deal with constant phone calls. But this might be a cognitive bias that we presume that our dogs will constantly be wanting to talk to us. Abet I suspect with my dog probably in the aim for food.

Secondly, I had only built something that allowed him to ring me – what if he then felt that he was too needy and wanted me also to ring him from time-to-time? One person upon commented that I should ring him back the next day at the same time he rang me so that this felt more like a joint effort. I realised I was guilty of just thinking of him as a separate entity from the discourse and not with both of us as part of the system inherently. We both play together, go on walks together and so it makes sense that the systems that we use should also be allowed to be used together by both of us.

Understanding what is being ‘said’ by the dog to the technology and
understanding the relationship between the dog and a human actor is core to being aware that this is a system rather than to consider each part separately.

Ilyena Hirskyj-Douglas, 2018, Dog Computer Interaction – Methods and Findings for Understanding how Dogs’ Interact with Screens and Media. P41

Thirdly, and most importantly, after showing people my project in action, I realised that the system that I had designed (whilst workable) took rather a lot of conditioning to learn to use (i.e., standing-in-front-of-somewhere-turns-on-something). One of the biggest criticism my DoggyVision system faced was that I did not train the dog to use the system like in normal Human-Computer Interaction scenarios.

So maybe instead I should build a system that augments his toys, or his usual daily interactions. I found myself this morning eyeing up his toys, wondering which one would fit an Arduino inside, and how I can dog-proof this and differentiate this toy as a video call mechanism rather than a chew or carry-around toy.

Video call your dog, or call with your dog? I would love to hear from your experiences and how you think I can design technology. Get in contact with me at ilyena.hirskyj-douglas[at]aalto.fi.

/* 
 * /////////////////////////////////////////////////////////////////
 * //                 Dog Skype Test                          //////
 * //        Written by Ilyena Hirskyj-Douglas                //////
 * //      from ilyenahirskyjdouglas.wordpress.com           //////
 * ////////////////////////////////////////////////////////////////
 */

 // For Skype video call, I used the old version which required you to ring first and then activate video
 // For new Skype versions you can comment out the ringing loop and skip straight to video part


#include <SharpIR.h> // Sharp Libary
#include <Keyboard.h> // Keyboard

#define ir A0
#define model 20150
#define LEDPin 13 // Onboard LED
#define ir1 A1

//unsigned long  minSample, maxSample;

const int maximumRange = 100; // Maximum range needed in cm
const int minimumRange = 0;   // Minimum range needed in cm

const unsigned long CertainPeriod = 100UL;  // Must be in range 100 miliseconds or more

boolean shouldPress;

SharpIR sensor( SharpIR::GP2Y0A02YK0F, A0 );

//(working distance range according to the datasheets)

void setup()
{
    Serial.begin(9600);
    pinMode (ir, INPUT);
    pinMode (ir1, INPUT);
    pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
   
}

void loop()
{
    static unsigned long t_start = millis(); // get the time before sensor data is in range
    
    unsigned long pepe1 = millis(); // takes the time before the loop on the library begins
    int distance = sensor.getDistance();

    Serial.print("Mean distance sensor 1: ");  // returns it to the serial monitor
    Serial.println(distance);

    unsigned long pepe2 = millis() - pepe1; // the following gives you the time taken to get the measurement
    Serial.print("Time taken (ms): ");
    Serial.println(pepe2);

bool in_range = (distance <= maximumRange && distance >= minimumRange) ;

if (in_range)
{
if ((millis()-t_start) > CertainPeriod){
        Serial.println("Dog in range for CertainPeriod");
        Serial.println("Dog detected in range");
        if(shouldPress == true)     // checks if keypress or LED needs to happen
        {
          
            digitalWrite(LEDPin, HIGH);
           Keyboard.press(KEY_LEFT_GUI);
           Keyboard.press(KEY_LEFT_SHIFT);
           Keyboard.press('R'); // Rings the Skype call
           Keyboard.releaseAll();
           shouldPress = false;    // sets to false so that it has happened
        } 
        delay (1500);
         Keyboard.press(KEY_LEFT_GUI);
         Keyboard.press(KEY_LEFT_SHIFT);
         Keyboard.press('V'); // Starts the video in the call
         Keyboard.releaseAll(); 
        }
        
}
else {
        Serial.println("out of range");
        digitalWrite(LEDPin, LOW);
        Keyboard.releaseAll();
        shouldPress = true;
        t_start = millis();
      }
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s