Let's Make Robots!

MURtle - Drawing Robot

Draws pictures

This is MURtle my drawing robot. Inspired by Oddbots Doodle Bot competition, I decided to build my own drawing bot. MURtle is a combination of MURCS and Turtle. MURCS is my multi use robot construction system using laser cutted acrylic plastic parts.

The Dagu Micro Magician Controller has been used, because it has everything onboard needed and runs from 4 AA cells. A micro servo has been used as pen holder. 2 Pololu ICS01A IR sensors as odometry sensors. Solarbotics wheel with self made 48 segments wheel encodcers are mounted on the Solarbotics GM3 143:1 geared DC motors.

Wheel encoders:

The IRS01A IR Sensors are connected to 2 analog input pins of the controller board. No additional hardware like Schmitt-Triggers has been used. 

The 48 segment encoder wheels gives a resolution of 4.5mm for each tick. Not very good. Next time I will try a 96 segment encoder wheels. I got an idea about getting better resolution using more intermidiate steps from the analog readings opf the sensors. Not sure if that will work.

 

Pen holder:

As pen holder a micro servo has been used. The pen is attached to the servo horn with a paper clip. The pen is exactly beetween the wheels. So there is no need to lift up the pen and make corrections when the robot makes a turn. But it is a challenge to get the pen on the right position. Sometimes during the drawing the pen moves to the side. Better fixation is needed. 


Programming:

Drawing is done by a preset of hard coded functions. A Sony IR remote can be used to recall the presets. Later on a Bluetooth and a skripting language like Logo will be used to load drawing sequences from a PC. All drawing sequnces are based on 3 basic functions: Pen(uop,down), Go(distance) and Turn(angle).

Some examples. 1. Draw a square:

void Square(int width)

{
  Pen(down);
  for(int i=0; i<4; i++)
  {
    Go(width);
    Turn(90);
  }
  Pen(up);
}

2. Draw a spiral:

void Spiral(int limit, int steps, int angle)

{
  Pen(down);
  for(int i=steps; i<=limit; i+=steps)
  {
    Go(i);
    Turn(angle);
    Go(i);
    Turn(angle);
  } 
  Pen(up);
}


More Links:

http://letsmakerobots.com/node/37126

http://www.instructables.com/id/Arduino-Audio-Input/#step1

http://www.instructables.com/id/Arduino-Timer-Interrupts/#step1

http://en.wikipedia.org/wiki/Turtle_(robot)

http://el.media.mit.edu/logo-foundation/logo/turtle.html

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Nice! I like the hemisphere shell! :D