Let's Make Robots!

Doodle Bot Art Competition

Announcing the winners!!

I appologise to everyone for taking so long. It was just an unfortunate combination of Chinese holidays and lots of work. This was tough to judge because good code was just as important as the final image.

1st prize ($200) goes to Kariloy.
His code gave good accuracy resulting in a large image of a humanoid robot.

2nd prize ($150) goes to OrionBot.
His code was not as good but his "portrait of a broken android" had more "art" in it.  Very Picasso like.

3rd prize ($100) goes to Tnbit.
His code was very clever, pity he did not put more effort into the actual picture.


Contact Pome to claim your prizes.



Challenge Done!


Well despite a 1 month extension we did not get as many entries as we hoped but still It looks like we have some prize winners.

I'm not judging this contest, my boss will do that and at the end of the week I'll list the prize winners and we'll send out the prizes.

Thanks everyone who entered the competition. Even if you never finished I hope you had some fun along the way.

If you have an entry then please make sure you've posted it as a robot post with your code attached as a zip file and put a link to your robot post in the comment section of this post so everyone can find it easily.

Your robot post should include the words "Doodle" "Bot" "art" "challenge" as seperate tags to make it easier to find in the future.




Ok, we have no entries to date and several contestants have asked for a time extension. I will extend this challenge by 1 month.

There has been some complaint about the low encoder resolution. This challenge is about your programming skills, not the picture itself.

HINT: Write a calibration routine. Here is one possible method to increase resolution.

  1. Drive the robot forward and backward for 10 encoder pulses on each wheel. Ignore the first 2 pulses as the robot is still accelerating. The next 8 pulses are a complete revolution of the wheel. Your code should adjust the PWM of each motor with seperate values for forward and reverse and measure the time for 1 revolution. Store these values in the EEPROM for future use. 
  2. Using the time it takes for 1 revolution you can then time your movements for smaller steps with the encoder being used as just to correct error accumulation. You may also need to pulse the motor in reverse to stop quickly otherwise the robot may coast a small distance.



Well we are about half way through this challenge with about 5 weeks left. Aproximately 20 Doodle Bot kits were bought for the challenge so the big question is...

Who is still in the challenge and where are they up to?


This challenge is one for the programmers, unlike most challenges you do not have to design and build a robot from scratch. DAGU will supply all contestants with a Doodle Bot Kit (including shipping cost) for $38. Considering shipping from China to your door is normally about $20 we are actually loosing money on this deal.

Sample code is attached to this post, you can download the instruction manual here:

You must then program it to draw a picture of a robot.If you have no idea where to begin then check out the tutorial here:

The winner is judged by the quality and complexity of the artwork produced. You can modify the existing sample code or you can write all new code. Video of the robot creating the artwork must be posted on Youtube with the title "Doodle Bot Art Competition". The code used must be submitted!

First prize is $200 worth of DAGU products.

Second prize is $150 worth of DAGU products.

Third prize is $100 worth of DAGU products.


Contact Claudia to order your Doodle Bot Kit. Use "Doodle Bot Art Competition" as your email subject to get the cheap price.

If you want to connect your Doodle Bot to a PC for generating complex images then ask Claudia about including a Bluetooth module. This plugs directly into the Mini Driver without any additional wiring.



Technical note:
I forgot to mention. The newer versions of the Arduino IDE do not allow some single capital letters to be used for function names. If you are deleting the alphabet included in the sample code this will not be a problem otherwise use Arduino IDE 0022. it may work on 0023 as well but I have not tested it.





About Doodle Bot:
Doodle Bot is a simple robotic platform consisting of:

  • Arduino compatible "Mini Driver" robot controller with built in USB interface and dual motor drivers.
  • Two ball raced, geared motors.
  • One miniature servo rated at 2Kg.cm torque.
  • Two magnetic wheel encoders to measure speed / distance travelled.



Technical notes:

The motors are powered directly from the battery but the servo needs to be powered from the 5V regulator because the encoders share the same power rail. Do not change the power selection jumper from +5V to +Bat otherwise the ATmega8 digital inputs could be damaged.

The Sample code does not use the servo library but instead sends a single pulse to the servo to change the position from pen up to pen down. As the servo is not supporting any weight there is no need to continue sending pulses every 20mS. Once the servo stops receiving pulses it stops trying to drive the motor which saves battery power.

Using encoders to measure distance can be a bit tricky because even when you cut power to the motors the robot's momentum will carry it forward a bit leading to overshoot. This problem can be made worse if one gearbox has a bit more friction than the other as it can also cause the robot to turn a bit.

The sample code provided makes some attempt to control the amount of overshoot by controlling the speed of the motors. The battery voltage is measured on A7 and a variable called "dspeed" is calculated based on power (Power = Volts x Amps) to try and regulate the motor speed.

As the motors often turn at different speeds the sample code uses a very simple method of correction where the fater motor stops at each step and waits for the other motor to catch up. If there is a big speed difference between the two motors this can cause the robot to draw wobbly lines. Quite often this reduces after the robot has been running for a while and the motors wear in a bit.

For the purpose of this challenge it may be necessary to include a callibration sequence at the start of you program where the robot goes forward at least 8 steps (1 full revolution of the wheels) and then back 8 steps. By measuring the time take for each motor it should be possible to fine tune the PWM values for forward and backward for each motor.

The sample code is accurate enough for writing simple messages but you will need to improve it to get good accuracy for drawing pictures. This is part of the challenge.


Doodle_Bot_Text_Demo_With_Music.zip8.04 KB

Comment viewing options

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

Thanks to OddBot and Dagu for creating and sponsoring the DoodleBot challenge. I had a lot of fun working on it and learned a lot. My kids had fun too. They watched it draw and cheered it on each time. They asked a lot of questions about how it worked so I think they got something out of it too. Finally, thanks for the prize! I'm already scheming on what to spend it on...

Any updates? 

Unfortunately the boss has done nothing about this so it seems it it up to his lackey (me) to finish this. Although I was impressed with how well some entries had calibrated their robots I admit even I was a bit disappointed at the results especially after extending the deadline another month.

I'll anounce the winners tonight.


Understandable.  I had high hopes when I started.  Is there also an issue with the number of kits sold not justifying the expense of  the prizes. From a business POV I can understand that too. 

No, kits sold has nothing to do with it. We sold the kits at a loss anyway.

Now is actually a bit of a bad time, currently we are on a Chinese holiday and previously I've been very busy trying to get projects like the T'REX finished.

For the controller I've had to write the sample software as well as design the PCB and now I'm working on the testing of the PCBs, artwork for the box etc.

I've also got the Service Droid and another project in the works so I had hoped the boss would judge this contest as it was his idea.

For being so late. I am uploading the video right now. As soon as that ends I'll upload the code. yipppppiiiiieeeee for Sunday. Doodle bot has made me awake whole night..

here is a link to the video,here the pwm was set low,so it took much time -http://youtu.be/-n2X_ydZJwQ

more videos are coming...

Here's another one,this one is a little faster http://www.youtube.com/watch?v=1y72a9caAGs&feature=youtu.be

And another one..here is something different http://youtu.be/treAqjdst78



And here the robot page http://letsmakerobots.com/node/38320

          ...thanks .....zzzz.....zzz

I'll show the videos to the Boss on Monday so you've got an extra day or so.

...and he wasn't overly impressed, I reckon? :x

Yeah, I think he was hoping for more but I was impressed with how well some people did with overcoming the limitations of the simple wheel encoders.

Sorry a winner hasn't been announced yet. The Boss is only just back from Taiwan and I've been snowed under in work.

Not very happy with the results but it was a struggle to get this far. I'll call it the "Portrait of a Broken Android." It was supposed to be the Android symbol from my Android phone, but the head came out lopsided. No time left to improve it.  I attempted this challenge as a way to trying Arduino for the first time. I learned a lot along the way so it's not a total loss.  Here is the video: http://youtu.be/0DmlpdHgLJU

Can also check out my robot progress page: http://letsmakerobots.com/node/37649