DIY Spot Like Quadruped Robot

16K5564



Intro: DIY Spot Like Quadruped Robot

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

STEP 1: STL Files and Robot Overview

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.

STEP 2: Assembly the Leg

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.

STEP 3: The Tune Up of Leg's Servos

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

STEP 4: Assembly the Body

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.

STEP 5: Servos Setup

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-...


STEP 6: G-Code Controller


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.

STEP 7: Final Tune Up

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.

STEP 8: Related Links and Videos

49 Comments

Could you tell me how to use a ps4 controller with my robodog?
That image worked out well. Thank you. I've done the fine tuning and run the test g code. How do I get it to run whith the controler. Is there a g code to change in the robodog_v2_hw file?
I still can't get the rosrun command to work. I keeo getting packge robodog_v2 not found. Can you give me any informastion on that?
You may need to source your compiled package first. Try to run the following commands:
cd ~/catkin_ws
catkin_make
source devel/setup.bash
rosrun robodog_v2 robodog_v2_hw
Well that did help with the missing package error. But now i get a serial ioexception dev/ttyusb0 error. I redid the usb fix that you listed on the page. I can't tell if it worked because it has no feed back from the command line. The serial port on the raspberry pi is enabled and the serial console as well. What can I try next?
Try this comman that should shows available usb ports:
ls /dev/ttyU*
Try it before plugin servo controller and after.
One more issue could be with servo controller board thar you are using. According to photo it is microntroller board that mat be needs to be programmed. I used other one, without microcontroller.
The usb has a separate folder under dev /dev/usb/ttyU* when not plugged in there are three files hiddev0 hiddev1 hiddev2 When plugged in to robot hiddev3 comes up I used the larger board with the bus servo controller software and I can make them move with my laptop. what next?
I Can't get it to work. I've tried so many things. All the images I find have issues and don't work. Is there any way you can get an image from one that you have working to go on a raspberry pi 4?
Yes, it might be. But the Ubuntu image I published has the pre-installed Ubuntu 20.04. And it works on my Pi4 with 4GB RAM.

Do you see the /dev/ttyUSB0 port on Pi when you connects the BusLinker v2.x board with connected LX-16A and power (8.4v)?

Try to run the following python script on your Pi (but first replace the COM3 in SERIAL_PORT with '/dev/ttyUSB0' in lxsetup.py):
https://www.instructables.com/How-to-Configure-and...
Will it work?

And this also may help:
https://askubuntu.com/questions/112568/how-do-i-al...
I got the servos to move with the pyton3 script. There is only two plugs on the small board, how do you connect the other servos? When I run robodog_v2 robodog_v2_hw what is it supposed to do? Is there a setup for the controller buttons? I connect the controller with blue tooth.
The smart servos has different type of connection in compare with ordinal servos. They all connected parallel to the same bus (for LX-16a bus consist of 3 wires, some other servos uses 4 wires):
So, you can connect all servos to one plug or another, it doesn't matter, since it is the same (common) bus.
The:
robodog_v2 robodog_v2_hw
is the command to run the main controller for V2. It runs and executes the gcode specified inside the program.
Yes, it is possible, but I can't just copy my image. I need to create the fresh one to make it public. So, this will take time.
Thank you for making the image file. I still get that serial exception error. Is there a way to test it with the debug board in place of the larger one? I can buy the other board if you think that's the problem.
Incredible!
I'd love to make it myself. However, in the tutorial I could not find how to build the torso of spot. Plus what camera did you put on top of spot?
More Comments