No soldering is required and it is Arduino compatible for easy programming.
The kit with all parts except batteries is now being sold!
The controller comes with an ATmega8 but this is easily upgradeable if required.
The sample code provided allows the puppy to sit, shake hands, lie down, beg and walk on it's hind legs.
This robot is fully interactive and is controlled by hand gestures.
- #1 Phillips screwdriver.
- Small (2.4mm or 3/32 inch) flat head screwdriver.
- Long nose pliers
(Available around the world from online stores that sell DAGU products)
- QuadBot chassis kit.
- Pan / tilt kit.
- IR compound eye.
- Magician robot controller.
- Pack of jumper wires (male to male and female to female).
- 1x 1N5400 3A rectifier diode
- 4x small servo extension cables 100mm (4 inch).
- 2x 25mm (1 inch) brass hex spacers with suitable mounting screws.
- Small cable ties and two larger cable ties to hold the battery holder.
NOTE: The robot works best with a 7.4V 2300mAH battery as shown in the videos but it can also work with 6x NiMh AA batteries in a 3x2 battery holder. There are two variations of the sample code depending on which battery you use. The only difference is that the NiMh batteries are heavier so that the robot needs different code to balance on it's hind legs.
Step 1: Center your servos
When the servo is centered it can physically turn the same amount in each direction (approximately 90 degrees). Before you begin assembly check that all 10 of your servos are centered. This will save you time in later steps. Once the robot is assembled, the center position of each servo can be refined in the software if required.
Step 2: Attach the foam rubber feet
There are 8 identical leg segments included in the kit. Select 4 of them and attach foam rubber feet using the 3 x 12mm panhead screws. There are only 4 of these screws and they are the largest so they are easy to find.
Self tapping screws have a course thread and tapered tip that can drill into soft materials like plastic and wood.
Pan head screws have an extra large head. This is the equivalent of using a seperate washer and screw. The pan head screws in this kit are also self tapping screws.
Machine screws have a fine thread and are designed to screw into machined parts where a thread is already present.
Step 3: Mount knee servos to legs
Make sure the output shaft is away from the foot as shown in the photo.
Step 4: Mount servo horns on the thigh segments
A servo horn is a piece of plastic that fits onto the output shaft of the servo and allows you to attach control rods or other devices using self tapping screws.
Take the 4 unused leg segments and fit servo horns as shown in the photo below using 2 x 6mm self tapping screws. There are are only 8 of these. Use two for each servo horn.
Step 5: Attach your thigh segment to your legs
Step 6: Left and Right legs
Mount you thigh servos as shown in the photo using the 2 x 8mm self tapping screws. Note the difference in the position of the output shaft in the left leg thigh servos compared to the right leg thigh servos. They are mirror imaged.
Step 7: Attach your legs to the mounting plate
NOTE: the rounded end is the rear of your robot. The hole in the center of the rear is where you will mount your tail.
Step 8: Fit mounting spacers to pan servo.
Since the hole only needs to be opened by a small amount I found it was easier and safer to use my phillips head screwdriver to ream out the holes on each side. Do not press to hard, you only need to ream out each side of the hole by a small amount so that the 3mm screw can be inserted without too much force.
Once you have the 3mm screw in all the way, continue turning the screw a few times so that the screw thread can drill out the hole a bit more. You can now easily fit your 25mm (1 inch) brass hex spacers. Use your pliers if necessary to hold the brass spacers when tightening the screws. Do not overtighten otherwise you will crack the servo mounts.
Step 9: Attach the pan servo to the pan bracket
The assembly instructions for the pan / tilt kit are included in the kit. They can also be downloaded from my product support site . Use 2 x 6mm pan head servos to mount the bracket to the round servo horn and another 2 x 6mm pan head to mount the servo horn onto the pan servo as shown.
Step 10: Attach the tilt servo locating bracket
This bracket is mounted using two 3 x 6mm machine thread screws and two 3mm nuts. Leave these nuts slightly loose at this stage so that the bracket can move forwards and backwards slightly. We will tighten them once the servo is aligned.
Step 11: Attach the servo horn to the tilt bracket
Step 12: Align the tilt servo
Step 13: Inserting the spacer washers
Stack your spacer washers neatly and insert them as best you can with your hand or long nose pliers as shown in the second photo.
Use a plastic cable tie to gently push the washers into position as shown in the third photo. Once the holes line up it's easy to insert your 2.3 x 10mm screw through the brackets and washers into the servo output shaft.
Tighten all the way being careful not to overtighten and then back off 1/4 of a turn. The tilt bracket should be able to tilt up and down fairly easily. Loosen the screw a little more if required.
Do the same on the other side with the 3 x 10mm machine screw and nylon nut on the other side.
NOTE: The nylon nut should be slightly loose so that the tilt assembly can move easily.
Step 14: Mount the eye
Attach the four mounting spacers on the tilt bracket as shown in the first photo. Make sure the 3mm nuts are tight.
Connect 80mm female to female jumper wires to the eye as shown in the second photo. I've used red for Vcc (+5V), black for ground (0V), orange for the enable pin and white for the 4 analog outputs.
Because 80mm is not long enough I have then attached 80mm male to male jumper wires. This gives me 160mm female to male jumper wires as shown in the third photo.
By runing the wires under the tilt bracket and then over the tilt servo as shown I find the head can move freely in any direction without pulling on the wires.
Step 15: Mount the head onto the body
Step 16: Mount your batteries
2 x 3 cell battery holders are fairly common and are small enough to fit between the legs of the robot. Place some tape on the ends of the wires before you starts so that they can't short out before you are ready to connect them and then install 6x fully charged batteries.
Cable tie your battery holder to the center of the mounting plate with your wires on the right hand side. Make sure all legs can move inward about 45 degrees without hitting it. Do not make the cable ties too tight ! You should be able to just slide the battery holder sideways out of the cable ties when it is time to recharge the batteries.
Step 17: Mount the Magician robot controller
Step 18: Wire up the head
Fit small black and red female to female jumper wires to Vcc and ground as shown in the photo. These will provide power for the infrared compound eye. Check the third photo if your not certain where to connect something or download the manual from my support site . Connect the red and black power wires from the eye.
The motor control circuitry connects to the processor via 4 jumpers. remove the jumpers on D8 and D10. Leave the jumpers on D7 and D9. This allows us to use D8 to control the IR LEDs on the eye. D10 might be used to control a small speaker or LED. The left motor control circuit is still connected and can be used to drive a small shaker motor to make the tail wag.
Connect your orange jumper wire to D8 and connect your 4 analog outputs from your eye.
A0 is up.
A1 is left.
A2 is down.
A3 is right.
Step 19: Power configuration
10 miniature servos combined can draw more than 3amps when the robot is running around. This is far more than the Magician's regulator can handle. The magician board does allow you to power up to 8 servos directly from the battery but the servos are rated at 6V and the battery is 7.2V!
To solve these problems, the pan and tilt servos which are not heavily loaded are run from analog pins 4 and 5. These pins have been converted to servo outputs in the software and have power supplied by the 5V regulator (normally used for sensors). This leaves the 8 leg servos to be powered directly from the battery.
What we do here is to use diodes to drop the voltage to a safe level. Most silicon diodes have a forward voltage drop of about 0.6V regardless of the current. The Magician controller already has a 3A diode in series with the battery to protect against accidently connecting the power around the wrong way.
This diode will drop the voltage by about 0.6V. By adding a second diode in place of the jumper that selects the servo power we effectively have two 3A diodes in series with the battery that is reducing the voltage to the servos by a total of 1.2V. Our leg servos are now getting the 6V they are rated for.
The leads on a 3A diode are slightly thicker that a male header pin. bend the leads close to the body of the diode as shown and fit two small female to female jimper wires. they will be a tight fit but this is good as it ensures a good electrical connection. Fit a red wire to the anode and a black wire to the cathode.
Now remove the servo power selection jumper and fit the diode instead. Attach the red wire to VBAT and the black wire to the center pin. The servos will now receive power through this diode. If you accidentally connect the diode the wrong way around then the servos will not get power but no damage will be done.
NOTE: If you want your robot to stand on it's hind legs with NiMh batteries then you may need to leave the diode out and use the original jumper. This will give your servos 6.6V and more power. You will increase your risk of damaging the servos slightly if you do this.
Step 20: Connect the leg servos
D2 - Rear left hip
D3 - Rear left knee
D4 - Front left hip
D5 - Front left knee
D6 - Front right knee
D11 - Front right hip
D12 - Rear right knee
D13 - Rear right hip
Make sure your white / orange control wire is closest to the female header.
Step 21: Connect your batteries.
Step 22: Add a tail
Plug one end with some hotglue or putty. Then use a self tapping screw to mount it at the back of the chassis as shown in the second photo. If you can get hold of a small shaker motor from an old mobile phone then mount it on the tail and connect it to the left motor output. The sample code will shake the tail harder as your hand gets closer.
Step 23: Installing the software
The Magician controller uses the CP2102 interface IC. Depending on your OS you may need to install drivers. You can download the USB drivers as well as the QuadBot Puppy program from my support site .
Once you have the Arduino IDE running, you can open the program. Make sure you have the version suited to the batteries you are using so that the robot will be able to stand on it's hind legs. You will see that the code has a constants tab and an IO pins tab.
The constants tab stores values such as the center positions of servos. This makes it quick and easy to fine tune your code. The IOpins tab is like a map for your wiring. It tells you which device is connected to what pin.
Go to the tools menu and select your board type. The Magician controller is compatible with "Arduino NG or older /w ATmega8"
Now plug in your USB cable. After a few seconds your computer should detect the USB interface of the Magician controller. Go back to the tools menu and select your USB virtual serial port.
Press the reset button on the controller and upload the program.
Step 24: Controlling your robot
If you slowly bring your hand within range and move your hand to a paw then the robot will lift that paw for you to shake hands. If you bring your hand between the paws it will lie down.
Once sitting you must excite the robot to get it to stand back on it's feet. taking your hand to one side or above the robot so it can no longer see your hand will do this.
When the robot is standing it will try and maintain a set distance from your hand. It will walk forward, move backward or turn in order to keep your hand in range. Do not move your hand too quick or it may loose sight of your hand.
If you move your hand directly over it's head while the robot is standing then it will try to jump on it's rear legs. If your hand stays in range of the eye the robot will try and walk on it's back legs to follow your hand. This trick might not work with the NiMh batteries as they are heavier than the LiPo battery used in the demo video.
Step 25: Trouble shooting
You can now adjust the servo center positions in the constants tab until the rear hips are at 90 degrees to the body and the front hips are slightly forward. All knees should bend inward slightly. If any of your servos are drastically out of alignment then you may need to reseat the servo horn.
Your head should look straight forward with the head looking up at about a 30 - 40 degree angle. Once your robots servos are set correctly you can remove the "return;" line from your main loop.
If the head does not track your hand then check your eye connections. If the head turns away from your hand then you may have accidently swapped your wires or mounted the eye upside down (the wires should come out at the bottom). Double check everything in steps 14 and 18. Are your servos plugged in corectly?
If the robot frequently resets then you may have a bad battery or battery connection. Check your batteries have a good charge and are making a good connection with the battery holder terminals. Are the battery terminal screws tight? Some cheap batteries may not be able to deliver enough current.
If the head does not follow at all then check your eye has power (5V) and that the orange wire is connected to D8. Double check everything in steps 14 and 18.
If the head works but the legs don't move then your diode that replaced the servo power jumper in step 19 may be around the wrong way or not plugged into the correct pins. Check step 20 to make sure you have the servos plugged in correctly with the signal wire closest to the female header.
If the robot walks funny then you may have accidently swapped hip and knee servos. The hip servo allows the leg to move forward and backward. The knee servo allows the leg to move up and down.
If the robot cannot stand on it's hind legs then check you have the correct version of the code. NiMh batteries are heavier than LiPo batteries. This affects the robots ballance. You may need to play with the code or adjust the position of your batteries a bit.
If you are Using NiMh then you will probably need to remove the voltage drop diode and re-install the voltage selection jumper for the servo power. This will run your servos at 6.6V giving them more power but there is a greater chance of the servo stripping a gear or overheating.
Step 26: Give your puppy some personality!
Moods such as happy and bored are easily programmed into the robot. Use a counter to determine happiness by how much a person plays with it. When they stop playing then the counter counts down.
Boredom sets in when you don't play with it for a short while. Perhaps your robot will be naughty if it becomes too bored?