Wendell the Robot

by marc.cryan in Circuits > Robots

12568 Views, 41 Favorites, 0 Comments

Wendell the Robot

IMG_1637.JPG
IMG_1643-1.JPG
DSCF5378.JPG
IMG_1572.JPG

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.



Let's Begin

inkscape_pasted_image_20111210_191308-1.jpg
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)

Print Design and Stick to Plywood

DSCF5252.JPG
DSCF5258.JPG
-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 

Cut Out the Parts

DSCF5256.JPG
DSCF5255.JPG
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.

Drill the Holes

DSCF5294.JPG
DSCF5291.JPG
DSCF5284.JPG
DSCF5285.JPG
DSCF5281.JPG
DSCF5276.JPG
DSCF5292.JPG
DSCF5280.JPG
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.

Note About Drill Presses

IMG_1531-1.JPG
IMG_1533-1.JPG
IMG_1534-1.JPG
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)

Cut Out the Slots and Big Areas

DSCF5288.JPG
IMG_1527-1.JPG
IMG_1526-1.JPG
IMG_1525-1.JPG
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.

Layout the Pieces

DSCF5262.JPG
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.

Assemble the Body

IMG_1536-1.JPG
IMG_1535-1.JPG
IMG_1537-1.JPG
IMG_1539-1.JPG

-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.

Assemble Arms

DSCF5300.JPG
DSCF5301.JPG
-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.

About Servo Motors

DSCF5322.JPG
DSCF5326.JPG
DSCF5321-1.JPG
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.

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 ***********


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

Assemble Servos

DSCF5315-1.JPG
DSCF5311.JPG
DSCF5307.JPG

-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

Attach the Head Servo

DSCF5312.JPG
-Use the same method to attach the head.

Mount Wheels

DSCF5329.JPG
DSCF5328.JPG
DSCF5330.JPG
DSCF5334.JPG
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.

Foot

DSCF5332.JPG
DSCF5335.JPG
DSCF5338.JPG
DSCF5340.JPG
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.

Build Perf Board for Servos

DSCF5341.JPG
DSCF5342.JPG
DSCF5343.JPG
DSCF5344.JPG
DSCF5345.JPG
DSCF5346.JPG
DSCF5350.JPG
Build a simple board with headers for the servos.


Wire Perfboard

DSCF5351.JPG
DSCF5352.JPG
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

Mount Electronics

DSCF5358.JPG
DSCF5359.JPG
2 battery packs
Arduino with perfoboard

Strapped together with velcro

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
}

Run Everything at Once



Here is a video - 





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?