Professional Documents
Culture Documents
GoodBoy 3D Printed Arduino Robot Dog
GoodBoy 3D Printed Arduino Robot Dog
by Daniel Hingston
This instructable details how to make a small quadruped robot using 3D printed parts. It is designed to be
compact, simple, and inexpensive to build. This project uses an Arduino Uno as the microcontroller. In this
instructable you will nd complete 3D model les, Arduino programs, and instructions needed to replicate (and
hopefully improve upon) this project for yourself!
For a few years I've wanted to make a quadruped robot, having been very much inspired by the extraordinary
robots of Boston Dynamics (in particular the 'Spot'). Being in lockdown, I'm lucky to have some time on my hands,
and so when less than four weeks ago a friend mentioned to me that there was a 3D-Printing contest, I thought
this was a great excuse to try and design a robo-dog for myself!
I hope you enjoy reading this instructable, and I look forward to seeing any comments you may have, and possibly
even some others attempting this build for themselves. Thank you.
Ed it po st c o n t e st : Thank you so much for all the interest and enthusiasm you've shown for the project! To help you
build one for yourself, I'll be uploading some more YouTube videos with extra assembly instructions. I'll also be editing this
instructable to build in some of the really good suggestions that have come from your comments so that others can bene t
from these.
ht t ps://www.yout ube.com/embed/uE5hZhkQkwI
Please note:
There are several unique techniques you'll need to use to make this robot for yourself, for me, it was my rst time
trying some of these so it was an interesting set of prints to do!
M a in co m po ne nt s :
M ino r co m po ne nt s :
To o ls a nd e quipm e nt :
3D Printer, print bed at least 210 x 210mm - see below for what 3D printer.
Soldering iron and solder
Superglue
Vaseline (for lubricating printed joints in the robot's legs)
Side cutters (useful)
Scalpel/craft knife (vital for fettling prints and more)
Sandpaper/ le (for fettling prints)
Micro USB charger (I used my Raspberry Pi charger, a phone charger would be ne too)
Arduino USB cable
PC/Laptop for programming robot, preparing prints, etc.
S o f t w a re :
The screenshots above show the rst concept I Although I didn't design the robot using Tinkercad, I
created nearly four weeks ago.This quickly changed thought it would be fun to embed this 3D view so you
into the more recent shape, as I attempted to make it can examine the latest design for yourself (please give
smaller and lighter. I knew that with the cheap 9g it a few seconds to load, it's a large le!):
servo motors there would not be a huge amount of
excess torque, so I shrank the dog design as far as
ht t ps://www.t inkercad.com/embed/d2oIn3KXFUW?edit bt n=1
possible. The rst design also looked a bit murdery, if
you have seen that particular Black Mirror episode
you'll know what I mean ...
The rst two images show meshmixer type supports, Cura /Yo ur Slice r o f Cho ice
which I used when printing the 'thigh' and 'wrist'
pieces, as they worked much better for me than basic
type supports on these di cult shapes. The third I use Cura for creating my print les, just because I'm
image shows the Overhang settings I used in most familiar with it, but it doesn't matter what you
Meshmixer to create these supports, I thought I'd use, they're all very similar. I've added some
show you these as there's a lot of settings and it can screenshots of the print settings I used for all the
be di cult to use. GoodBoy parts, so you can see, but depending on the
quality of your 3D printer you may be able to print
When you open Meshmixer, press Import, and select better/faster - you'll know this best! To maximise
your .stl le of the part you need. Then select Edit quality, I printed very slowly for everything, and used
from the taskbar on the left, and Transform. Use this a relatively small layer height. The most critical parts
to alter the orientation of your le, and press Accept. for quality are of course those concerning the leg
Then select Align, and Accept. This should joints - the 3D printed parts serve as hubs and axles, it
automatically lay your part on the print bed. Don't is key that they are as smooth and dimensionally
worry that the print bed may not match your 3D accurate as possible!
printer, I think Makerbot Replicator 2 is the default,
we're just going to edit the .stl le, and export it For parts like the leg joints, I printed several iterations
again, so it makes no di erence. Now select Analysis of them, altering the clearance or tolerance I had
from the taskbar, and Overhangs. In here, change the allowed between the interfacing parts a little each
settings to match those I've pictured above. Press [1] time (in my CAD software). I needed to experiment a
Generate Support, then Done if satis ed. Now all you little to see what the tightest (but still freely running)
have to do is File and Export, and choose where to t I could achieve was, and you should do the same if
save your new .stl le which will now contain these you like.
supports. Next you'll import this into your chosen
slicing software (and remember to set supports to 'o '
Apologies for the many photos! This is quite a di cult step, so I have tried to illustrate it as much as possible. The
steps below relate to the photos in the order you see them, so just follow them one by one.
This schematic (made in PowerPoint, as there weren't all the components I needed on Tinkercad), should show you
the layout as clearly as possible. Of course, you have freedom to modify as you like, but I'm sure it's helpful to be
able to see exactly how I'd done it.
* * * [NO T E O F C AUT IO N] * * *
Powering the Arduino via the 5V pin in this way is not an o cially recommended method of powering the board, as
it bypasses some of the power regulation circuitry. I powered the Arduino in this way, because the Powerboost
1000C outputs 5V, and I did not have a suitable alternative. Using the 5V pin in this way is the only way to run the
Arduino on 5V without using the USB, and I wished to leave this unused and orientated through the outer shell of
the robot's body so I could upload programs easily. Using the 5V pin in this way is ne provided that you observe
the following precautions:
Step 9: Wiring
The nal part I printed was a battery holder for the Upd a t e : Ne w Wirin g Tut o ria l:
18650 cell. I used a couple of pieces of metal strip to
make contact within this, and soldered on cables to
that to connect it to the Powerboost 1000C. This works
well, but it might be easier just to buy a battery
holder and glue this into the body!
https: //www. yo utub e . co m /e m b e d /rWcvLyyO MMY
Ho w t o us e y o ur m ult im e t e r!
As soon as I started to program walking movements, I found the smooth plastic feet lacking su cient friction.
These small spiked pieces were a quick x solution to this, printed quickly and super-glued onto the soles of the
robot's feet. They work well, although I felt a bit daft for not thinking of this sooner!
Download
https://www.instructables.com/ORIG/FQD/XQZC/KAMI5ZU8/FQDXQZCKAMI5ZU8.ino
…
With the experience I've gained building this robot, I'm keen to build another using the things I've learned. There
are several main improvements I would make, but you may wish to include these in your build from the beginning.
GoodBoy - 3D Printed Arduino Robot Dog: Page 21
In no particular order, here are some things I'd recommend:
S e rv o m o t o r cho ice - the motors I use in this project are low quality - imitation TowerPro SG90
servos with plastic gears. I do not know if they produce the rated torque they claim, and the plastic
gears result in uncessary backlash in the legs. They cost me only a little more than £1 each, but for
about £6 you could purchase a genuine quality servo with metal gears, and a higher rated torque. If
you're able to invest that little more, it would be bene cial as the minimal torque and relatively large
amount of backlash in my robot caused some di culty. Most 9g servos have similar dimensions, so
the CAD for the 3D printed parts should not require much modi cation.
Fo o t g rip - My initial foot design did not have su cient grip as you'll have read in this instructable.
The spiked additions I retro- tted improved it considerably, but perhaps you could consider adding
rubber pieces to the feet to act as grippy soles, or design di erent spikes or textures on the 3D
printed part.
B a la nce a nd f o o t s pa cing - The width between the feet in my initial design is adequate, but
minimal. For improved balance, I would recommend slightly increasing the distance between the
legs, by modifying the wrist pieces for instance. Additionally, the feet are currently 15mm (about 0.6")
wide each, but they would provide better balance if wider, 25mm for example (about 1"). If you're
able to make this change to the CAD, it would be worth investigating.
Po w e rbo o s t 10 0 0 C - The choice of this power board in the robot was based on what I had
available. It is a good choice however, being compact and powerful. However, absolute maximum
current that it can provide at 5V is about 2A. A single 9g servo can draw as much as 0.5A or even
more at maximum torque, so clearly 2A is not adequate to run all motors at full power. If you have a
suitable alternative to the PowerBoost 1000C, this could be considered, although only if you are
competent with electronics and understand the changes you will be making.
B a ckla s h - Backlash or 'slack' is the lost motion in a mechanism caused by gaps and excessively
large mechanical tolerances. This is relevant in the joints of the legs in this robot. If your 3D printer
can print to a very good quality, then consider reducing the gaps between the rotating/running
parts in the shoulder and knee joints - the better and tighter (but still able to run freely) you can
make these joints the better leg motion you will be able to achieve.
This is incredibly well made and documented. Congrats on the grand prize! I plan to refer to this
next year in my Arduino class.
Thank you very much, I enjoyed your guitar build a lot! Great to hear that your school has an
Arduino class, they're lucky to have that and your enthusiasm for sure.
I love this project! Has anybody found a good body orientation to print on a 200X200X200 bed
aside from printing up at an angle?
Hi there, glad you like it! I hope you can manage to get it to fit rotated, but if you have access to
CAD software perhaps consider shortening the body by 10mm? It should be quite easy to do in the
model and shouldn't make a great deal of difference I think to do this. Cheers!
I printed mine at 45 degrees diagonal on my bed, and it fit nicely. The legs I used rafts and bridges
to support those unsupported areas.
Yep, it did fit rotated. Repeiter said it was outside the printable area but I just printed it anyway with
no problems.
This is a snapshot of my repeiter file
hi arthurDent, thank you for introducing your super cool project, for which you put a lot of effort and
love for detail. This dog is absolutely awesome. I really like the design.
When I have some free time in the near future, I will definitely copy him ! Thanks again for this
extraordinary achievement.
P.S. to all of you who are begging for STL files .... read the damn project text, learn to appreciate
people and their performance and ... please - don't just suck off knowledge, appreciate the makers
!!!!
Thanks Arthur
Hi Olly, thank you very much for your kind words and enthusiasm, I'm glad you like it! I'm busy
working on incorporating improvements that I thought of and other people suggested, so look out
for a GoodBoy V2 in the future.
It's ok, I'll be editing the instructable as soon as the contest is closed to make a clearer link to the
files, save confusion.
No one is forcing you to read them - it's not exactly a surprise when “3D Printed” is in the title. In
any event, you can buy a 3D printer for a few hundred bucks, less than the cost of sufficient tools
to build a lot of projects. Heck, you need to have a laptop to program the Arduino anyway, and that
will cost more than a low end 3D Printer.
The internet and this site does not exist to service only you. Instead of having unreasonable
expectations you may wish to:
A: Pass over projects that use a 3d printer
B: Ask your parents to buy you a 3d printer
C: Get a job and save mooney to buy your own
D: Change your expectations of the rest of the world to conform to your demands
E: Learn a better method of trolling
F: [insert your own better life choice here]
G: Substitute the 3d printed parts for something you have access to
H: Order the 3d printed parts from an online 3d printing service
I for one think this is awesome and has a lot of potential to be even better with some programming
changes. The base concept is cool.
Hundreds of thousands of people own 3D Printers. They are becoming very common because they
are, now, relatively inexpensive. Just because you don't know many people that own a 3D printer,
does NOT mean that "Not many" people "have got" a 3D printer.
Understandably, not everyone can afford to purchase the "best" 3D printer available on the
consumer market, but as others have stated, even a "cheap" 3D printer can produce excellent
results, and with minor upgrades may even outperform more expensive printers.
If you are interested in tackling this project, I'm certain there are people willing to print the required
components for you if you ask respectfully.
Dude, there are some really cheap 3d printers out there. Honestly I wouldn't expect a scrappy robot
made of hand crafted cardboard and plywood to be functional, so if you want a robot, a 3d printer is
the way to go(or perhaps a laser cutter).
Maybe before you make this try to make a 3d printer I'm currently building my own 3d printer so i
can make things like this it's not that hard to make 5 stepper motors, stepper motor drivers and a
arduino mega 3d printer kit will be the most expensive part with cost me around £70 if you shop
around the build and the coding is quite simple and there are lots of you tube videos showing how
to do this...
The solution is simple, either get one or surf elsewhere?
It is true that 3D printers can be very expensive, but in my case this project was printed on a 3 year
old printer costing about £120, so it's not necessarily a huuuge investment. I bought this as I was a
student at the time and it was all I could spend, but with upgrades it has worked well for me despite
the low cost. Perhaps there's a model within your budget?
Imagine this as a vehicle :), it would be cool ! Nice project
Hi there, glad you like it! I've now uploaded the STL files to the GrabCad library, please follow the
link in Step 4. Thanks!
Nice project, one I've wanted to tackle for ages. I like the aesthetics of your robot. Can he turn? Is
he statically stable when he lifts one leg since you can't lean to the side or do you just move it
quickly before he tips?
Hi there, thanks for your comment. I'm glad you like the aesthetics, that was an important part of
the design for me. Good questions - I haven't experimented with programming a turn yet, although I
think it should be possible. As for the stability, it can be stable on 3 legs, for instance during the
paw trick I shift the CoG backwards so that it can lift the front leg without tipping. The gait I have
programmed here for walking forwards is not in fact stable on 3 legs, the balance point was a
compromise between stability when a front leg is lifted and then when a back leg is lifted. It relies
on a quick step to avoid a topple. I imagine a better-programmed walk code could improve this, but
I am also looking (in an upcoming V2 design) to increase the leg spacing for better stability. Cheers
I thought that was what I saw on the video, that he kind of "falls" forward in a step (which is not a
I've just uploaded a folder with them to the GrabCad library, please follow the link in my recent
comment about the stls or the link from Step 4. Thanks!
Thank you.
Honestly I would have loved that to be a feature - one for the GoodBot Mk. II I think!
Stl's please
Just uploaded! Please see the link to the GrabCad library in my recent comment or under step 4.
Cheers
I agree something like the adafruit 16 servo controller would lead to smoother and faster walking.
The one modification I will make when I get around to this project is to add a second servo at the
shoulder. Another degree of freedom will give you turning ability and a more versitile gate. This is a
great project, love to see the .stl files.
Looks like a great build. May do so...although I've got 3-4 robotic things I have to work on before
that. Good detail too. About STLs...I think they are editable, using Auitodesk's (free)Tinkercad.
Thank you very much! Yes, there's never a shortage of projects is there! Thanks for the Tinkercad
tip, that's good to know.
Hi. Very interesting Project and a clean work - respect.
For the 'no grip problem' I figured out that the material of 'Thera-Bands' (used for gymnastics), is an
excellent joyce. You may get them cheap in various colours (each colour another strength and
material thickness). I use them to prevent parts slipping away when building things up.
Hi there, thanks for your comment I'm glad you liked it.
Thank you very much for the grip idea, I might edit the Grip step of the Instructable to add your
suggestion there so people are more likely to see it. That would be ideal, as the spikes I use suit
carpet ok but wouldn't be good on a smooth floor.
It's a Nice proyect. Will ve good if he can turn went found one obstacle