DIY Spot Like Quadruped Robot

by robolab19 in Circuits > Robots

18443 Views, 57 Favorites, 0 Comments

DIY Spot Like Quadruped Robot

FirstUpgrade.jpg
RoboDog: First Upgrade
RoboDog: I like to move it move it
DIY Remote Control for RoboDog (part 2)

This is a Spot like quadruped robot based on LX-16a smart servos (12 DOF).

This robot about 2 times smaller than Spot and about 250 times cheaper :)
All materials and parts required to build this robot cost about $300. It uses cheap smart servos LX-16A (~$15 each) that are power enough to move this robot, but not enough for jumps :)

NB! The latest version is available there:

https://www.thingiverse.com/thing:4932180

Supplies

  • 12x LX-16A smart servos (3 per leg)
  • Bearings per each leg:

2x 693ZZ (3x8x4mm), 3x 6704ZZ (20x27x4mm), 1x 6705ZZ (25x32x4mm)

  • Bearings per each leg's hip:

2x 693ZZ, 2x 6704ZZ

  • Phillips self tapping screws M1.7x8mm
  • 2x M3 self tapping screws for leg gears
  • 2x washers per leg, between leg gear and bearings (693ZZ)

STL Files and Robot Overview

front.JPG
DSC01986.JPG

STL files for 3D printing:

https://www.thingiverse.com/thing:4557938

Robot contains 4 legs, each leg has 3 servos.

Servos drives the 3d printed gears, the gear ratio is 1:2.

Assembly the Leg

DSC02015_.jpg
DSC02018_.jpg
DSC02002.JPG
bearings.jpg
DSC02003.JPG
DSC02001.JPG
DSC02007.JPG

The robot is too complex, so it is better to start with one leg.

3D print the leg's parts and check the bearing holes. Depends on 3D printer settings the holes could be too small and may requires a little extension using knife or other tools.

But in general, the bearings should be inserted tightly, without gap.

Here the 3D model of one leg:

https://github.com/RoboLabHub/RoboDog_v2/blob/mast...

Then assembly the opposite leg and joint their hips with two M3 bolts.

The Tune Up of Leg's Servos

DSC01990.JPG

Before completion with leg make sure that in the servos middle positions (500) the leg's joints positions are according to picture.

Use the following link to set the servos positions:

https://www.instructables.com/id/How-to-Configure-...

Here the example command to move the servo with ID 1 to position 500:

> python lx_setup.py set_pos 1 500

Assembly the Body

front.JPG
back.JPG

3D print the body parts. The body consists of middle tube inside the frame.

The frame consist of:

4x body_plane_L.stl

4x body_plane_R.stl

3x body_frame.stl

And the middle tube (optional):

body_center_tube.stl

STL files:

https://github.com/RoboLabHub/RoboDog_v1.0/tree/ma...

https://www.thingiverse.com/thing:4445119

All 3D printed items are jointed with small Phillips screws.

The body joints together the two pairs of legs, front and back.

Servos Setup

DSC01986_.jpg
front_.jpg
back_.jpg

Now it is time to setup the servo IDs according to the provided pictures.

Attach one servo per time to smart servo controller and use the following link with instruction how to setup the servo ID:

https://www.instructables.com/id/How-to-Configure-...


G-Code Controller

tune_1.JPG
tune_pos_1.JPG
DSC01994.JPG
Inverse Kinematics demo without squeaking (almost :))

For this robot I wrote the native G-Code controller that is available on GitHub:

You will find all required instruction how to compile it in this link:

https://github.com/RoboLabHub/RoboDog_v2

If you will compile and run this controller without code modification then it will move the robot to its first tune-up position according to the pictures.

The G-Code controller contains 2 tune up positions and example of G-Code file with different robots positions and walking styles. The more details description of G-Code controller and all its features is out of this instruction scope and requires separate instruction.

You can look at the demo video that shows some very complex movements that this G-Code controller supports.

Final Tune Up

DSC01990_.jpg
tune_pos_2.JPG
DSC01995.JPG
snip2.JPG

Here the second tune up position that can be activated in G-Code controller by un-commenting the corresponding line.

The leg's joints angels between body and floor should be 90 degree when robot is not loaded.

You can fine tune the servo's offset (from -120 to 120 points) in G-Code controller as shown in code snippet.

Related Links and Videos