Introduction: Wendell the Robot


UPDATE: 12/21/2011 - Robot Zombie Dance, Smaller head (see below)

Born in dreams of 1980's,  realized today.

What follows is my proposed design for a robot. A robot with a simple design, that is easy to share and change.  A robot you can build with a hand saw or a laser cutter; from cardboard or karbonite.  A robot you can share; and change.  This is your robot. A for the people.  A robot born in the dreams of the 1980's and realized today.  A robot your children and your children's children will look back on and say 'that was THE ROBOT"

But I need your help.  I don't have all the answers.  I don't even have all the questions.  But maybe YOU do - so please post comments.  Leave your wishes and dreams; your 'why didn't you... s" and 'what if you... s'.  Tell me what to build, and I will build it;  then it will break; and then we will try again.  And maybe, just maybe we'll get it right.

To this end I humbly submit to you --- Wendell  --- Wendell the Robot.  

Wendell is like a baby, silly and small, with a big head,  tiny legs, and often, a funny smell.  It is not the end but the beginning.  An affirmation that says  'I can make that; I can make that BETTER!


(too much?)


Also - I'm submitting this to the shop-bot contest - I would us it to build robots  

- VOTE FOR ROBOTS -

-Also - If you want me to make you one or send you all the pieces - check out my kickstart project:
http://www.kickstarter.com/projects/marc-cryan/build-wendell-the-robot-simple-and-open-first-50-u


PROGRESS UPDATE: 12/21/2011
Working on a Robot Zombie Dance based on the "thriller dance".  A little tough without a waist, legs, or elbows.  Check out the video bellow.... but don't get to excited.

Also - built a version with a smaller head and some shoulders.



Step 1: Let's Begin

So - all rabble rousing aside.  Here are the basic parameters:
  1. Simple to build and easy to share.
    1. All designs created using freely available software
    2. Scallable Vector Graphics are preferred.
  2. Open source electronics and software
    1. Arduino based microelectronics
    2. Arduino and Processing development enviroment
  3. Simple motors and mechanics
  4. Simple sensors

Note: an alternate 'skinny, small head' version is attached to this step.  (next step has original files - big head, fat)

Step 2: Print Design and Stick to Plywood

-Print PDFs and glue to 1/4 in plywood using an adhesive spray.
Follow the directions for 'temporary' or 'low tack'
if you want to be able to remove the template
-a 4x4' sheet of luan is plenty

-This step has the PDFs and the SVG (inkscape) files 

Step 3: Cut Out the Parts

All the cuts are straight, so you should be able to use whatever saw you have around.

I am m using a small band saw with a thin blade.

Step 4: Drill the Holes

Drill out all holes
-I'm using a drill press but a hand drill would be fine.
Brad-tip bits make a nice cut and are easy to position.  For the 1"
holes
I am using a fostner bit - generally, good bits are worth buying.
-The small holes are denoted with stars.  Pre-drill these with a small
bit, this is 1/16th".  These are pilot holes for the brad nails, so make
sure your drill bit is smaller than the nail. Using a drill press you
can set the depth so it just touches the bottom of the hole; this leaves
a little wood to grab the tip of the nail as you are working.

Step 5: Note About Drill Presses

Speed and torque are changed by moving a belt.

Kepping everything in the middle is fine, but you will get better and faster cuts if you use the higher speed for small holes (belt is all the way up - big to little).  Lower speed for the big holes (little to big pulley)

Step 6: Cut Out the Slots and Big Areas

The slots and big cutouts are a pain to do by hand.  Hopefully we can get eliminate these from the design.

Drill out as much material as possible, then clean up the edges with knife or chisel.  Try not to get blood on the parts.

Step 7: Layout the Pieces

The pieces are labeled to help guide assembly.

I find it useful to lay all the pieces out, as if you where unfolding a box.

Step 8: Assemble the Body


-Assemble to pieces starting from the front (face) and work towards the
back.  By starting with the most visible part of the robot, you can move
any gaps are mistakes to the back.

Leave the back of the head and body open for now.

Step 9: Assemble Arms

-Each arm is made of two parts - for this version you can just tape them
together.  You could also put standoffs between the peices which would
leave a gap for motors and wires.

-Attach the servo armature to the robot arm.  Using brad nails, attach the servo arms to the inside of the
robot arms.  Line up the holes.

Step 10: About Servo Motors

Hobby servo motors come in a variety of sizes.  
  • Small, medium, large
  • Continuous or 180deg rotation
  • Attachments
Wiring:
                 Hobby servos are easy to wire.
             
                Black/brown to ground
                Red to Vin
                Yellow/orange to a digital PWM pin

                You can tie together all the ground wires and all the Vins.
                But the PWM lines have to each go to a separate pin.

Step 11: Programming

The arduino servo library makes these motors simple to work
with.   You just tell the servo an angle and it does it.

Video






*********** ARDUINO CODE ***********


******####################

Step 12: Assemble Servos


-Start with the servos that will attach to the arms.  The come with
screws.  Using a small screw driver you can reach inside the body and
screw down the motors.  I used an awl to start the holes, I might add
pilot holes to the next version.

-You can leave this so it will fall off easily (this protects
the servo motor from any real damage and is good if you want to make
quick adjustments)
                -Or you can add a screw, feeding it through the hole in the

Step 13: Attach the Head Servo

-Use the same method to attach the head.

Step 14: Mount Wheels

Large continuous rotation servos are used for the wheels.

Tires are made from spleen (the cord that holds screens onto screen windows)

Brackets are made from plumbers strap.

Step 15: Foot

Unless you want to build a self balancing robot, we have to add a third support.

I've made a foot out of shape-lock and a bolt.  

Shape lock can be melted in hot water then molded by hand, once cool it is hard and slick.

Step 16: Build Perf Board for Servos

Build a simple board with headers for the servos.


Step 17: Wire Perfboard

Connect servo wires to perfboard
Connect perfobard to arduino
Connect motor power to perfboard

Pin Map:

Function            Pin (all PWM)
Right arm          ~11
Head                  ~10
Left Arm             ~9
Right wheel      ~6
Left wheel         ~5
Speaker            ~3


All black/brown go to the motor battery negative.
All red go to the motor battery positive

Speaker: Positive to pin ~3 - Negative to arduino ground

Arduino power supply:
   Arduino battery negative to Arduino ground
  Arduino battery positive to Arduino Vin

Step 18: Mount Electronics

2 battery packs
Arduino with perfoboard

Strapped together with velcro

Step 19: Program

Here is a program that runs all servos and a small speaker:



//////////////////////////  ARDUINO /////////////////////
//tests all servos and sound

#include <Servo.h>

Servo armRight;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position
Servo armLeft;
Servo head;
Servo wheelRight;
Servo wheelLeft;
int soundPin = 3;
int pitch;

void setup()
{
  armRight.attach(11);
  head.attach(10); 
  armLeft.attach(9);
  wheelRight.attach(6);
  wheelLeft.attach(5);
 
}

void loop()
{
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees
  {                                  // in steps of 1 degree
    armLeft.write(pos);
    armRight.write(pos);              // tell servo to go to position in variable 'pos'
    head.write(pos);
    wheelRight.write(pos);
    wheelLeft.write(pos);
    pitch = map(pos, 0 ,180, 31,4978); //map position to tone
    tone(soundPin, pitch, 200);    // pin, note, time?
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees
  {                               
    armLeft.write(pos);
    armRight.write(pos);              // tell servo to go to position in variable 'pos'
    head.write(pos);
    wheelRight.write(pos);
    wheelLeft.write(pos);
    pitch = map(pos, 0 ,180, 31,1000);
    tone(soundPin, pitch, 200);    // pin, note, time?
    delay(15);     
  }    // waits 15ms for the servo to reach the position
}

Step 20: Run Everything at Once



Here is a video - 





Step 21: What Next?

What to do next .....


                - microphone - hearing?
                -Range finder?
                -Add more joints?
                -Perform a specific task?
                -Obstacle avoidance
                -Remote control
                -Robot-to-Robot communication?
                -Light seeking?
                -Easier assembly?
                -Laser cut version?
                -Fold up like a transformer robot?
                -Add camera?