Ever since Jim Demello (demejOO) posted videos of his DuckBot in operation I have been obsessed with building one. The creativity, simplicity and construction techniquesmake his machine rate an A+ in my book. Jim has also expressed an interest in applying machine learning to solve the problem of getting the DckBot upright after a fall.
I do not possess Jim's imagine and built my using 3D modeling tools and a home-brew CPU board. My construction technique was to create and model the design in openscad. With it I was able to draw draw the components that need to be fabricated along with 3d models of the purchased components such as servo motors. Jim supplied basic dimensions for legs, neck, and body.
Openscad has a primitive animation mode by which the motion of the legs and neck can be observed at about 5 frames per second. This allowed me to view DuckBit under "ideal" conditions.
After the design looked good I used the openscad "projection" function to generate a 2D image of the part to be fabricated. The initial plan was to utilize a local Graphics Design shop to cut the parts on a laser cutter. It took multiple weeks to get the 2D image built to scale. I exported the image as a "svg" file and then used inkscape to print on inkjet printer. Inkscape apparently wants to use pixels and assumes something (I don't know what) about the printer resolution and paper size.
Sent design to two friends who routinely use CAD tools and they were able to measure pieces of the design and they looked good. Just not on my system. Eventually started using GIMP which at least scaled the X and Y the same. I then found the openscad scale function and scaled the design by 3.55 which converted mm to pixels on my printer.
This is a pdf DuckBot as seen in openscad.
During this time I found out that the 2.25mm Polysytrene that I purchased at the local hobby store was actually ABS. I also became the owner of a power scroll saw. Instaead of laser cutting I printed the parts on a single sheet of sticky back paper and attached to top of the ABS plastic sheet. 30 minutes scroll saw, sanding, and drilling the mounting holes produced quite reasonable parts. I will do the laser cut when the design is proven.
The CPU board is a rework of a prior design modified to support 4 servos and 6 I2C ports. One logic error (connected an analog signal to a non analog I/O pin) and one layout error (pads to close) but otherwise working. Both errors have workable solutions.
- Microchip PIC24HJ64GP202 CPU
- NRF24L01 radio
- 6 I2C Ports
- 4 GPIO Pins
- 5 AAA batteries
This cpu has lots of hardware features making it ideal for small robots. Being a 16-bit CPU running at 40MHz it is less than 1 percent busy while controlling DuckBot.
Picture of PCB.
Programming the servos to move the neck and legs was fairly easy. The CPU supports hardware PWM. The NRF24L01 code came intact from a prior project. I have not started on a GUI for the remote control. Right now, hitting any key on the remote console starts the motion sequence.
It can swing the neck, rotate a leg, and bend over but walking is a disaster. Falling over backwards seems to be its best behavior.
- I think my weight distribution is wrong.
- The spacing between the legs is too wide.
- The servos have plenty of power. Perhaps too much.
- The feet need non slip bottoms.
- The head needs some weight to cause the tilting action.
- The legs are not sturdy enough.
- The feet need to angle up. I used 5 degrees. Need more.
- Add 2 accereramoters to detect falling.
- Adding some leg and foot braces for additional support.
- Paint the face.
I can equivalently state that Jim's DuckBot works better than mine but the DuckBot Clone War has just started.
Finally found a good weight distribution setup that supports both balance on one leg and forward bows. Added a 18350 3.7V LiPo battery, battery case, and DC-DC boost converter to the head area. Have yet to wire it together but hopeful.
Well that was a bust. The "quality" 3amp boost regulator from China barely supports 2 9g servo motors at the same time, 3 is a total flop. The same operations with bench supply show a power consumption of about 350mamp.