Little Kinematic Owl

Here is a little kinematic owl with 2 degrees of freedom, neck and eyelids.

For a good while now, I’ve been wanting to experiment on using rubber bands attached to servomotors as a method of creating soft and compliant actuation systems, and this assignment was a very good opportunity to test this idea.

While I did not draw any two dimensional paper sketches, I did create a comprehensive three dimensional sketch in Rhinoceros (its easier for me to think in 3D when building robots.)

owlcad2

When everything looked good, I then proceeded to 3D print all the parts (9 hours for 13 pieces:)

owl (1)

Assembly took the longest.  While the majority of pieces fit nice and snug, I overlooked some screw hole sizes and had to improvise with a hand drill and hot glue:

owl (2) owl (3)

Here is the owl fully assembled:

owl (4)

The eyelids worked very well, and the neck worked fairly well (I had expected a slightly higher range of motion.)  Overall, I think this project was a success as I had learned that rubber bands attached to servo motors can indeed be used to generate compliant actuation.  This project was also a success because I now have a cute kinematic owl sitting on my desk :)

Here is a Fritzing diagram:

OwlBot_Wiring

The code is very simple and makes the owl randomly blink and tilt its head.  When the code is loaded onto the Arduino, the result is a very energetically tired and sleepy-looking owl that is both curious and oblivious to its surroundings.

/* --- PRE SETUP --- */
#include  

Servo eyes;
Servo neck;
int neckAction = 0;
int eyeAction = 0;

/* ----- SETUP ----- */
void setup() {
  eyes.attach(31);
  neck.attach(33);  
}

/* --- MAIN LOOP --- */
void loop() {
  
  //control neck
  neckAction = random(6);
  //neck.write(90);
  
  switch(neckAction) {
    case 0:
      neck.write(90);
      break;
    case 1:
      neck.write(0);
      break;
    case 2:
      neck.write(180);
      break;
  }
  
  //control eyes
  eyeAction = random(10);
  //eyes.write(45);
  
  switch (eyeAction) {
    case 0:
      eyes.write(0);
      break;
    case 1:
      eyes.write(45);
      break;
    case 2:
      eyes.write(22);
      break;
    case 3:
      eyes.write(0);
      delay(100);
      eyes.write(45);  
      break;
  }
  
  delay(1000);
  
}

A good thing to note:  This project was heavily inspired by this USB Owl  created by an unknown Japanese company: https://www.youtube.com/watch?v=xDy2vm5XvZc

Despite the fact that I have never actually seen any of these in person or their internal mechanisms, I thought about how they worked and built everything myself from scratch.

Comments are closed.