Close
0%
0%

Mike's Robot Dog

Boston Dynamics' robot dog, Spot Mini is unavailable at any price. A Chinese copy is $30,000. Cut 99% of the cost and build one at home.

Similar projects worth following
Walking robot platforms can navigate buildings, climb stairs, enter cars, and traverse farmland. Potentially, they can become elder companions or herbicide free weed removers. Excessive cost for such a platform, tens of thousands to millions of dollars, discourages students, makers and startups from advancing the technology. My goal is to create an open, shared, walking platform that costs hundreds of dollars. The affordable accessibility this provides, coupled to the intellectual capabilities of people throughout the world, may spark a new industry.

Here's the contest entry video.

June 27--using an onboard power supply and Arduino, the dog can stand untethered.

The Plan

Increase torque of legs

Decrease weight of legs

Build a stiff, low weight body

Take steps

Add onboard power

Stand

Take steps 

I had to show this . . . Google's AIY Vision Kit can be used to detect human faces or smiles (and probably other things). This will allow my dog to "know" that someone is there and if they are smiling. More information can be found in log number 10, "Google AIY Vision."

Spot Mini is an amazing (perhaps scary) robot dog built by Boston Dynamics--not for sale.

If you want to purchase something similar, a company in China produces a research platform for around $30,000. Another legged platform, Anymal, can follow you into an elevator.

Using a 3d printer, off the shelf servo motors, an Arduino and a couple of ultracapacitors; I have started something along the same line--but the cost is more like $300. 

She's young and shaky, but my dog can now stand. The body is longer and the rear legs reversed--look to my log, "The Forces Are Not All With Me."

Here's where we "stand" on March 28.

This is where it started.


Here's where I am on March 16.

My first "shoulder connection" put all the "up/down" and "rotate" stress on the servo motor.

This looked like a bad idea, so I created a bearing block and heavy shaft to absorb the "up/down" load and let the servo motor's gearing handle the rotation only.

The bearings are snowmobile bearings available on Amazon.

I designed the servo motor mounts such that there is a sort of "back bearing" opposite the shaft so that it is easier to attach moving limbs.

The first foot was a wheel--but that rolled all over the place, so I created a movable flat pad for better traction.

I mounted a digital voltmeter up on the body--just to keep track of what was available for the servo motors.

So, there's a long way to go, but this walkable platform (when it works) will be useful for robotics on smooth or rough terrain.

On February 27, the first attempt at standing was made....

Read more »

leg_lift_direct1013.ino

final walking file

ino - 2.60 kB - 10/13/2018 at 19:44

Download

easter egga.stl

supercon badge

Standard Tesselated Geometry - 60.92 kB - 10/11/2018 at 18:30

Download

easter egg back.stl

supercon badge

Standard Tesselated Geometry - 2.23 kB - 10/11/2018 at 18:30

Download

f3d - 103.23 kB - 06/27/2018 at 19:20

Download

Standard Tesselated Geometry - 124.30 kB - 06/27/2018 at 19:20

Download

View all 59 files

View all 7 components

  • Onboard Power

    Mike Rigsby06/27/2018 at 19:37 2 comments

    Let's start with a schematic of the power supply.

    This supply is built on a piece of 5 1/4" x 6 1/4" plywood (1/4" thick). The four 350 farad capacitors are soldered together in series, then placed in the 3d printed capacitor holder.

    A "three cell" D battery holder is added.

    The second toggle switch and digital voltmeter are added.

    The second "3 D cell battery holder" is added.

    Everything is connected and wired out to a plug that can attach to the dog's body.

    The 9 volt battery holder (with built in switch) and the battery/capacitor power supply are attached to the body using velcro.

    Because the dog was tired of being inside, I took her out for a little air.

  • Non Slip Joint

    Mike Rigsby06/22/2018 at 13:15 0 comments

    In the upper leg joint--in spite of all my best efforts at making the joint tight--I continue to have slipping. To correct this, I modified the joint, inserting machine screws to prevent slippage.

    I printed (4) axles with shorter threads, then attached the servo horns.

    I slide this piece ("axle shorter thread") through "bearing linearb."

    Thread "fat pieceb" onto this.

    Drill holes 25 mm deep using a 7/64 inch drill bit. Install (4) 20 mm M3 machine screws.

    Add the servo horn and back bearing piece, then install on all four legs.

    This is a significant operation requiring about 20 hours of print time and 8 hours of installation time.

  • Dog's Head

    Mike Rigsby06/03/2018 at 20:12 0 comments

    Here's the first version of a head--with flapping ears synchronized to barks.

    I don't have a dog, so we had to visit a friend and record their dog's bark. Of course, Juston (the dog) just stood silently for all the many things that normally trigger a bark (treat, knock on the door, promise of a car ride). Finally, he was induced to talk.

    This "Dog Head Module" is a 3d printed head with two servo motors that can be used to flap ears. It can be added to any dog robot (wheels or legs) and modified (the raw head files are available on this site).

    My wife, Annelle, made a clay head for scanning.

    The head is fairly large and was scanned on a Makerbot Digitizer.

    The resulting scan file (included) was too large to import into Tinkercad. I reduced the file size (included) then imported the head into Tinkercad and made holes for the servo motors and wires.

    I mounted the micro servo motors in their 3d printed brackets, then melted (using a soldering iron) the bracket into the head.

    I added a servo horn extender to the servo horn so that the ear would move a reasonable amount.

    Bearing brackets (3d printed) were melted onto the dog's head. They accommodate the 1 1/4 inch by 2-56 machine screws that allow the ear to move.

    A bearing adapter piece must be melted to each ear.

    A finished (not painted) ear looks like this.

    Back to the art shop (Annelle) for a paint job.

    Assembled, the head looks like this.

    I used an Adafruit sound module board and trigger the bark file (included on this site) with an Arduino. I coordinated the ear flapping servo motors with the bark sound. 

    You could put square 8x8 led modules in for the eyes. The mouth could be cut away and modified to move for the bark . . . this is just a starting place.

  • Tilt Module

    Mike Rigsby05/25/2018 at 20:27 0 comments

    This low cost module using four roller switches and a 3d printed bracket can be used to provide tilt information for a robot.

    The idea is to use four roller ball tilt switches (about $.50 each from Amazon) and a 3d printed bracket to detect tilt. I designed a four degree tilt to each of the four "arms" so that the balls would roll downhill when the robot is level.  By assigning the numbers "1" for north, "2" for east, "4" for south, and "7" for west it is possible to read each switch then add the numbers and know whether there is tilt and in what direction.

    The leds shown below are just for testing--not part of the finished sensor.

    I start with the tilt switch holder and insert the tilt switches. The "not active" end is pointed toward the center (longer wire, silver instead of brass). The "active" end--when lower than the other end--will result in continuity between the end wires.

    I use wire wrap wire (then solder it) to connect the pins. The center position I tie to ground on the Arduino. Direction one goes to A0, direction two goes to A1, direction four goes to A2 and direction seven goes to A3 (since I used 12 Arduino Uno pins for servo control, I'm running low on input/output pins).

    The final assembly, fastened to the dog using a wood screw, looks like this.

  • Wiring the Module for Power and Control

    Mike Rigsby05/24/2018 at 19:55 2 comments

    To make the module stand requires power and control. Here's a schematic of the power components.

    Let's look at the physical wiring. I connected the + and - power blocks using number 18 stranded wire.

    I added an Arduino Uno to control the servo motors.

    Pins 0 through 11 are connected as follows:

    A top view of the connected wiring is shown below.

    The starting position for the servo motors on the legs is shown below.

    Because each spline on a servo shaft/horn represents about 15 degrees, the servo motors must be operated until a satisfactory position is achieved and that value should be recorded.

    The .ino Arduino sketch for standing/sitting on this site as module test 0524.

    Here's the standing routine.

  • Leg Test With High Torque Servo Motors

    Mike Rigsby05/11/2018 at 19:42 0 comments

    Today I tested the more powerful leg.

    The original leg--using 20 kg-cm servos--could exert 1250 grams of "push" on a scale. The new leg--using 40 kg-cm servos--measured 3300 grams of "push" before the upper plywood test jig lifted. In other words, I'm getting nearly three times the lift with the new motors. The original leg used three $18. motors while the new leg uses one $18. motor and two $38. motors; so my cost per leg just went up $40. 

    The extra torque was too much for the upper axle piece and it sheared at the connection where it holds the leg.

    I reprinted the axle at 100% fill and it is now holding for test purposes. I'm in the process of redesigning the connection for more strength.

    An unexpected benefit of the new motors involves a stiff gear train that resists external movement. If I raise the leg in the air and remove power to the servo motors, the leg stays in place.

    This is a major benefit in that the motors draw virtually no current (thus no wasted heat and battery energy) unless they are moving.

    I'm working on stronger connections and I've ordered enough parts to complete four legs. 

  • Google AIY Vision

    Mike Rigsby04/22/2018 at 00:27 0 comments

    I assembled a Google AIY Vision Kit tonight (took about two hours). This will be great for the dog since it will allow the detection of humans and whether they are smiling. I am using the default mode--have not explored the many options at this time.

    When no face is detected, the light on top is not illuminated.

    When a face is detected (and it will easily detect a single face at a distance of 20 feet) the light turns blue.

    When there is a smile, the light turns yellow. A big smile will turn the light bright yellow and trigger a piezo buzzer.

  • Stronger Leg

    Mike Rigsby04/21/2018 at 18:59 0 comments

    I've completed the addition of two larger, more powerful motors (twice the torque of the original servo motors). The files for the changed parts are available on this site.

    First, I added the aluminum servo horn to the new shoulder axle.

    Next, I disconnected the existing elbow joint.

    Now, I set the new motor and bracket in a similar position to the old--so I wouldn't mix things up too much.

    I mounted the motor to the upper leg.

    I attached the aluminum servo horn and back bearing to the ankle servo connector.

    I attached this assembly to the lower leg.

    I attached the lower leg to the elbow assembly.

    I pushed the shoulder axle through the linear bearing and attached it to the upper leg motor bracket.

    I attached the servo horn to the servo motor and tightened the locking screw through the hole in the axle/shaft.

    I checked the total leg mass and it came in at 986 grams--which is 86 grams more than the original. 

  • Leg Removal and Upgrade--Part 1

    Mike Rigsby04/14/2018 at 00:11 0 comments

    The left rear leg has to come off for new motors (twice the torque) in the shoulder and elbow joints.  First, the wires have to be disconnected.

    Next, the leg is removed from the body.

    The total leg assembly will require design tweaking to keep the weight down and minimize some sharp edges (I don't want to get hurt--the motors are getting pretty powerful now).  A good leg assembly could be a "module" for the Robotics Module Challenge.

    I put the existing leg assembly on the scales and it came in at 900 grams.

    The shoulder motor and bearings (existing) are 351 grams.

    The new (larger and heavier motor) shoulder motor and printed bearing comes in at 280 grams.

    At least it's going in the right direction--I would love to have the new leg weigh the same or less as the old leg.

  • Testing the Large Servo Motor

    Mike Rigsby04/11/2018 at 19:12 0 comments

    Before changing the servo motors, I need to know something about the motion limits and power requirements of the large motors (FT 5335 M from Pololu).

    Using an Arduino, any commands lower than 30 degrees do not correspond to movement, thus 30 degrees represents the most clockwise position (viewed from the top).

    The 150 degree command is the last one that works in the counter clockwise position, thus I have about 120 degrees available for movement.

    At 7.4 volts, two amps minimum is needed to during unloaded motor travel. About .12 amps are required to stay in position with no force applied.

View all 16 project logs

  • 1
    Leg Module

    In one week, for less than $500., we can have a four leg module.

    To make the module stand and walk, power and control need to be provided and that will add about $100. more in cost (Arduino, battery, switches, voltmeter, wire, connectors).

    As shown in the Hackaday Prize Video, the dog costs less than $600.

    Here's what the module should look like:

    Let's start with a list of materials needed. First, there are the 3d printed parts (files available on this site).

    Bill of Materials

    (4) Super Servo Holder

    (4) Axle Shorter Thread

    (8) Back Bearinga

    (4) Fat Pieceb

    (4) Bearing Linear

    (4) Axle Nut

    (4) Upper LegA

    (4) Super Servo Combo

    (36) Axle Bolt

    (4) Ankle Servo Conn

    (4) Lower Leg

    (4) Foot Holdera

    (4) Axle

    (4) Foot

    (4) Wire Guide

    Other Parts:

    (32) m3 x 16mm bolts

    (32) flat washers for m3 bolts

    (48) m3 nuts

    (8) FT 5335M servo motors (Pololu.com)

    (8) aluminum horn for FT 5335M servo (pololu.com)

    (20) 2-56 x 7/16" bolts

    (28) 2-56 nuts

    (24) m3 x 8mm bolts

    (4) 20 kg-cm servo motor (amazon.com)

    (1) Arduino Uno

    (1) 8 volt 3.2 amp hr. sealed lead acid battery (amazon.com)

    (1) digital voltmeter (amazon.com)

    (2) heavy duty toggle switch (amazon.com)

    (16) m3 x 12 mm bolts

    (8) 2-56 x 3/4" bolts

    (8) lockwashers for 2-56 bolts

    (1) plywood body  1/2" plywood 28" x 10"

    (1) paint for plywood body

    (16) #6 x 1 1/4" wood screws

    (24) #6 x 3/4" wood screws

    (4) 5 position terminal blocks

    (4) number 4 x 1/2" wood screw

    (4) servo extension cable

    (1) aluminum duct tape (or any other tape)

    (4) small tie wrap

    (1) 8" diameter styrofoam ball

    oval styrofoam, glue, paint, google eyes, brown faux fur fabric, brown

    giant chenille stem

    For the body, I examined several materials and decided to go with 1/2" plywood. The body requires about 200 square inches of material. Below are some of the materials considered:

    1/4" plywood  2.15 grams per square inch

    1/2" plywood 4.3 grams per square inch

    1/4" acrylic  4 grams per square inch

    5 mm foam board  .59 grams per square inch

    1/4" plywood is too flexible--I had bending problems requiring support on the early dog versions.

    5 mm foam board looks great in theory, but I had doubts about the stiffness and my ability to connect things securely.

    1/4" acrylic would look "cool," but it's not so easy for me to work with.

    I examined carbon fiber sheets, but that looked like a project unto itself.

    I cut the plywood in a shape to reduce the weight.

    Then, I painted the plywood.

  • 2
    Assembling the Leg

    Here's the main pieces.

    Attach a servo motor to "Super Servo Holder" using (4) m3 x 16 mm bolts, nuts and flat washers.

    Set the left front shoulder servo to the ccw rotation maximum, 150 degrees.

    I printed (4) axles with shorter threads ("axle shorter thread"), then attached the servo horns.

    I slide this piece ("axle shorter thread") through "bearing linearb."

    Thread "fat pieceb" onto this.

    Drill holes 25 mm deep using a 7/64 inch drill bit. Install (4) 20 mm M3 machine screws.

    Add the servo horn and back bearing piece.

    Set Servo Twist Motor to 90 degrees. Attach "Servo Twist Holder" to "Upper Lega" using (4) m3 x 12 mm bolts and nuts.

    Install motor in "Super Servo Combo" using (4) m3 x 16 mm bolts, nuts and flat washers.

    Attach "Super Servo Combo" to "Upper Lega" using (4) 3d printed "axle bolts."

    Set "Super Servo Combo" motor to cw max--30 degrees.

    Attach "back bearinga" to "Ankle Servo Conn" using (3) m3 x 8 mm bolts.

    Attach aluminum servo horn to "Ankle Servo Conn" using (2) 2-56 x 3/4" bolts, nuts and lockwashers.

    Connect "Ankle Servo Conn" to "Lower Leg" using (1) "Axle Bolt."

    Connect "Foot Holdera" to "Lower Leg" using (2) "Axle Bolts."

    Place "Axle" in "Foot." It's a loose fit.

    Insert foot/axle into "Foot Holdera."

    Secure foot using (2) "Axle Bolts."

    Connect lower leg assembly to upper leg assembly by attaching "Ankle Servo Conn" to servo motor. Leg should be in sitting position. Insert servo horn screw and tighten.

    Adjust "fat pieceb" so that leg will be in sitting position. Insert servo horn screw and tighten.

    Place "Servo shoulder holder" and "Bearing Linearb" on plywood body. Assume sitting position for dog. Secure using (4) number 6 x 1 1/4" screws and (4) number 6 x 3/4" screws.

    Insert servo twist motor into "fat pieceb." Install and tighten servo horn screw.

    Install 5 position terminal block using (2) number 6 x 3/4" wood screws.

    Install wire guide. Use (1) number 4 x 1/2" wood screw.

    Connect servo extender cable to "Super Servo Combo" servo motor.

    Route cable and secure using duct tape. Secure servo wire to "Servo Twist Holder" using a tie wrap.

    Secure wires in terminal blocks. From outside looking in, position number 1 (left most) is upper servo control wire. Position 2 is "servo twist" control wire. Position 3 is lower ("super servo combo") control wire. Position 4 is positive. Position 5 is negative.

    Do this three more times. Left front and right rear legs are the same. 

    Right front and Left rear legs are set up with the "Servo shoulder motor" set to the maximum cw limit (30 degrees) instead of 150 degrees.

  • 3
    Control and Power

    To make the dog move, power and control must be provided. The legs are attached to an Arduino and battery as shown in the schematic diagram below.

    Connect the motor power terminal blocks using #18 AWG wire.

    Add the Arduino.

    Connect the left front leg to the Arduino.

    Add control to the right front leg from the Arduino.

    Add control to the right rear leg.

    Finally, connect the left rear leg.

    The power supply is a combination of an 8 volt lead acid battery (sealed), a voltmeter and two switches. Lugs slide onto the battery--they can be removed for recharging. The power supply is mounted on 1/4 inch plywood and the plywood is attached to the body using Velcro. A disconnect plug from the power supply enables the entire supply to be quickly removed or swapped.

    The voltmeter is not absolutely necessary, it's just handy so that the battery status can be easily monitored.

    The head and tail reduce the "uncanny valley" effect and increase the "doglike" look. The head was formed using an 8 inch diameter foam ball (carved for shape). The muzzle is a styrofoam oval--the nose a small circle. The neck was carved from a styrofoam oval. The ears are brown faux fur fabric (craft store) and the tongue is pink foam. Add google eyes, paint and glue for the head. A 1" x 2" rectangle of wood was inserted into the neck (square hole cut out first) and that is used to mount the head to the dog. The tail is a "brown giant chenille stem" (doubled).

View all 4 instructions

Enjoy this project?

Share

Discussions

John wrote 07/01/2018 at 20:24 point

Have you seen: https://hackaday.io/project/157812-3d-printed-robot-actuator? He has a system that trades motor speed for torque, all 3d printed (except the motors). It might help? His intention is to make something that can jump, via pure motor/actuator force. Most biological systems that jump (well), involve a spring-loaded joint that gets "instantly" released to generate much more force than the available muscles could. In humans, etc, that spring force comes from the "stretch" or "spring" which loaded tendons have. But for "instant" application of large force, springs work pretty well. Not sure if that would make things too complex for your system, though.

  Are you sure? yes | no

Mike Rigsby wrote 07/02/2018 at 12:47 point

Thanks for pointing me to that project! It's very interesting and I'll have to examine it closely and think about how it works.

  Are you sure? yes | no

Talal wrote 06/28/2018 at 22:23 point

is it possible to change where the knees are pointing? like i wanna try to have the knees pointing outwards

  Are you sure? yes | no

Mike Rigsby wrote 06/29/2018 at 12:48 point

The middle motor can be used to move the knees--I just haven't had the need to do that yet.

  Are you sure? yes | no

Keigomoriyama wrote 06/18/2018 at 06:02 point

Wow i was amazed from what i saw here and i would like to help as much as possible. I admit i'm really newbie but i have a 3d print so I can help trying different designs and even if small i want to give my contribution

  Are you sure? yes | no

Francisco Dominguez wrote 06/11/2018 at 18:17 point

Hello Mike

I love your work.

I am working on quadrupeds too.

I did this little dog named EasySpot:

https://www.youtube.com/watch?v=KH80MHLPnSM

This doen't need any custom made part just 12 servos, one arduino and a i2c servo driver module.

I am working on a bigger version with custom made parts, like your Mike, I will name it TranquiSpot.

If I can help you on this project please tell me.

 Paco from Spain

  Are you sure? yes | no

Mike Rigsby wrote 06/12/2018 at 21:23 point

I watched your video--it's very impressive! You should consider entering it in the Hackaday competition; you've already accomplished a great amount.

  Are you sure? yes | no

Stuart Longland wrote 05/12/2018 at 11:14 point

Looks like Boston Dynamics might be selling Spot Mini … although probably at eye-watering prices…

http://www.abc.net.au/news/2018-05-12/boston-dynamics-to-begin-selling-dog-like-spotmini-robots/9754536

Somehow, I think this project will deliver a cheaper and more open robot. :-)

  Are you sure? yes | no

Mike Rigsby wrote 05/12/2018 at 14:06 point

I'm glad to see that they will become available--it will be interesting to see their initial pricing and market strategy.

  Are you sure? yes | no

malvasio.christophe wrote 04/12/2018 at 14:29 point

for your new goals of onboard power & increased torque there is https://hackaday.io/project/47138-pure-mechanic-motor if you want ;)

  Are you sure? yes | no

Duke Circuit Co.,Ltd wrote 03/17/2018 at 04:14 point

Looks cool,wish you can have a good market.

  Are you sure? yes | no

malvasio.christophe wrote 02/28/2018 at 07:41 point

is this printed in full ?

missing legs rotation

  Are you sure? yes | no

Graham Toal wrote 02/26/2018 at 20:00 point

  Are you sure? yes | no

jorge wrote 02/24/2018 at 14:29 point

Hello, congratulations

Can you tell me which condenser you use (link)?
Thank you!

  Are you sure? yes | no

lion mclionhead wrote 02/23/2018 at 17:12 point

Boston makes a micro version out of servos.  Because of the limited torque & speed of servos, it's very slow & moves more like a toy.  The Ghost Robotics Minotaur has come the closest to replicating Boston, for a lot less money.

  Are you sure? yes | no

ActualDragon wrote 02/23/2018 at 17:21 point

+1, the ghost is super cool

  Are you sure? yes | no

John wrote 02/22/2018 at 00:06 point

As the shoulders  carry the loaded weight, I would consider using 2 bearings (with some distance between them) per the improved shoulder joint. It would take the weight torque off of the single bearing ... which would be coupled to the motor. Also, to reduce the weight of the legs, you might want to use cabling to connect the driver motors located on the "body", down to the joint. It is a little more complex, but reducing the inertia of the legs might help the motors "upstream". Usage would be similar to a bicycle's brake / shifting shielded cables. That would also allow you to gear the motors, IF you have enough motor speed to trade for reducing the power loads.

When I saw the Boston Dynamics "dogs", I wanted to build some, too! Glad to see someone doing it! I like your design! IIUC, they use Neural Networks to learn to walk, etc. What are you using (or going to use)?

A possible optional material to use MIGHT be PVC pipe, rather than 3D printing the "bones". The schedule 40 stuff is pretty tough. You'd still have to print the joints.

Just for fun, there is a linux voice interface called "Mycroft", just in case you ever want to call your dog, or give it vocal commands. I think it runs on a raspberry PI.

As a final thought Home Depot has 2 sizes of bearing, in drawers in the hardware section (where they keep nuts, bolts and washers). I know that that is not helpful if there is no such store where you live.

  Are you sure? yes | no

Mike Rigsby wrote 02/22/2018 at 00:48 point

John,

Thanks for your well thought out comments! I am using two bearings per leg--but no distance between them. That gives me 24 mm of bearing surface (which is better than the nothing I started with). 

Cabling the downstream joints would reduce the leg inertia--I'll have to see how much of a problem that is before I make changes there.

I'm not going to pretend that I have all the answers and "learning to walk" is a challenge to be addressed. If the legs have enough torque and speed to stand up with load and potentially walk, then I'll address the programming and feedback tasks. I can get double the torque if needed, but the motors cost $70. each instead of $18.

I didn't know that Home Depot had any bearings--I'll take a look next time I'm there.

I am interested in voice recognition and visual (camera) recognition, but I have to know how much weight I can carry before I go there.

Really, if I can get a self-contained (battery on board) platform up and walking, then it will be something that a lot of people can enhance with their skills.

  Are you sure? yes | no

John wrote 02/22/2018 at 02:12 point

I just recently stumbled across the HD bearings, myself!

Again, great project!

  Are you sure? yes | no

ActualDragon wrote 02/22/2018 at 02:50 point

two words: magnetic. bearings.

  Are you sure? yes | no

Stephen Tranovich wrote 02/14/2018 at 01:19 point

This looks really promising! Congrats for getting it to stand on its own! Can't wait to see it walk.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates