DogBot V2: Make Your Own Quadruped Robot From Scratch
by PJ2000 in Circuits > Robots
8400 Views, 126 Favorites, 0 Comments
DogBot V2: Make Your Own Quadruped Robot From Scratch
Hey all!
In this Instructable, the end-to-end development of the second version of my quadruped, DogBot, is demonstrated. This version of DogBot is inspired by the Boston Dynamics 'Spot' robot dog. I have illustrated the complete process starting from designing, manufacturing, assembling, and coding to making the robot walk effectively. The interesting thing about this quadruped is that the lower legs are driven using a parallel linkage mechanism instead of a serial linkage, making the leg lightweight and easier to drive. Also, the robot is made from scratch and all parts other than the electronics are custom-made using 3D printing or laser-cutting.
I hope you have fun reading and making this!
Supplies
Here is the complete list of parts, tools and consumables used in realizing the project:
2.1 Electronics
- LX-16A servo motors x8
- Serial bus LX-16A servo controller x1
- DC Buck Module x1
- Libre Computer AML S-905-X CC (Raspberry pi substitute) with SD card x1
- 12V 3000 mAh Battery pack x1
- USB Wi-Fi adapter (For headless connection) x1
2.2 Other Hardware
- 25T Servo motor horns (Pack of 5)
- Aluminum Low-Profile Binding Barrels & Screws (Pack of 25)
- M2 x 8 Machine Screws (Pack of 100)
- M2 x 12 Machine Screws (Pack of 100)
- 316 SS External Lock Washer
- M2 Heat-set inserts (Pack of 100)
- M2 Nylon standoffs
2.3 Tools
- FDM/FFF 3D printer
- Laser-cutter
- Soldering Iron
- Heat gun
- M2 Tapping tool
- Hex screw drivers
2.4 Consumables
- Metallic Purple PLA filament (Can't find the exact one I used but this looks pretty close to that)
- Black PLA filament
- Heat shrinking tubes
- Solder wire
- Clear Acrylic sheet (3 mm thickness)
2.5 Software
- SolidWorks
- Ubuntu 22.04 Jammy (OS for Libre Computer)
- PyLX-16A control library
- PuTTY (SSH protocol)
- Ultimaker Cura
Evolution of DogBot
DogBot started in 2015, as a hobby project for a 15-year-old aspiring maker and roboticist. The first version of dogBot was made using DC geared motors and some salvaged PVC and Plywood scrap. It was controlled using an Arduino UNO and hardly could take a step before crashing. From that, we have come a long way, and here I present dogBot v2.0, made using relatively sophisticated tools, materials, and components.
Design & STLs
3D Printing, Laser Cutting & Processing
3D Printing
All structural components of dogBot are fabricated completely using 3D printing and it took roughly about 100-130 hours of printing on an Ultimaker S3. I used Ultimaker Cura to slice the .STL files and generate the G-Codes.
The basic print setting used for most parts were:
- 0.2 mm layer thickness
- 20% infill
- 10% support structure density
- Material: Generic PLA
- Nozzle: 0.4 mm
Using these parameters, I got exceptional print quality and the parts required minimum post-processing. For the linkage mechanism, I used a higher infill of 60% to increase the rigidity of the link.
Laser Cutting
Once all parts were printed, I fabricated the chassis top plate (all electronics will be mounted on this) using a Thunder laser cutting machine. The .DXF file can be found in link provided in the previous step.
Post Processing
The next step is to post-process the parts and removal of support material. After the removal of the support material, I lightly sanded the parts using high grit sandpaper. Post processing the parts, I inserted the heat-set inserts using a soldering iron into the designated holes of the upper leg, the main chassis, top cover (both parts) and the acrylic top-plate
Assembling the Leg
In this step, I will illustrate the process of assembling the leg of the bot. To assemble the leg:
- We start with the upper leg. Place a servo motor, with the aluminum horn screwed, in the slot as shown in image 2. This servo will drive the lower leg using a parallel linkage mechanism.
- Screw the motor mounts to keep the servo in place using M2 x 8 machine screws (Image 3). You might have to tap the motor holes with an M2 tap for a perfect fit.
- Screw the motor adapter (Black disk with teeth that comes with the servo) using M2 x 8 machine screws. You might have to tap the motor adapter holes with an M2 tap for a perfect fit.
- Attach the lower leg to the upper leg with a Binding barrel screw. Don't forget to add the lock washer between the binding barrel and screw.
- Connect the aluminum servo horn to the lower leg with the 3D printed link using M2 x 12 machine screws. Again, don't forget to add a lock washer (Image 5).
- Attach the modular toe to the lower leg and connect the cable to the servo.
Repeat the process and assemble the other legs keeping in mind the orientation and placement of them.
Assembling the Bot
In this step, we will put together the complete robot with all structural and electronic components. For the M2 machine screws to perfectly screw in, tap all holes with an M2 tapping tool. To assemble the bot:
- Attach the servo motor to the main chassis using M2 x 8 machine screws as shown in image 1. These servos will drive the upper leg.
- Screw the Serial Bus servo controller to the main chassis with M2 x 12 machine screws (Image 2).
- Screw the 30 mm nylon spacers to the main chassis. This will be used to place the top plate with all the electronics
- Attach the legs assembled in the previous step to the servos on the main chassis. Now the bot has started to take shape.
- Wire all the servos using a 'daisy chain' as shown in the schematic and connect them to the servo controller mounted on the main chassis.
- Assemble the top plate by mounting the DC buck converter, battery holder, and the Le Potato using M2 x 8 machine screws. Use 5 mm spacers to mount the Le Potato for better thermal management.
- Place the top plate on the main chassis and screw it onto the spacers attached to the main chassis.
- Glue the two pieces of the top cover using gorilla glue and reinforce them with some duct tape.
Electronics & Wiring
Following the next few steps will get through the process of wiring all the electronic hardware. Before we begin wiring the bot, we need to set the constant voltage and the max current output. Set the constant voltage between 6.5-7 volts using the voltage potentiometer. To set the max current output, short the output terminals of the DC buck converter and adjust the 'I' marked potentiometer to 4.5 Amps. Please read the DC buck converter manual for more information on this. Now let's begin with the wiring:
- Connect the output of the DC buck converter to the input of the Serial bus servo controller. Please make sure of the polarity.
- Connect the 12v output of the battery to the input of the DC Buck converter. Again, please make sure you've got the polarity right.
- Connect the 5v USB output of the battery to the micro-USB of the Le Potato.
- Connect the micro-USB of the servo controller to the USB port of the Le Potato.
- Connect the USB Wi-Fi adapter to the USB port of the Le Potato.
We are now all set to code the robot!
Code & SSH Connection
Now that we are done with the hardware, let us begin with the software. In this step, I will illustrate the process of running the python code of the robot along with the process of establishing an SSH connection. SSH gives us remote access to the Linux terminal of the Le Potato. This enables us to control the bot wirelessly from our windows/mac computers. This Instructable assumes you have the Le Potato all set up and running with Ubuntu 22.04.01 Jammy. More information on setting up the Le Potato can be found here: Ubuntu 22.04.1 Jammy LTS for Libre Computer Boards - General - Libre Computer Hub. Before we run the code, we need to set up the Le Potato to run the servo control library. Follow the steps below do so:
- Download the Servo control library on Le Potato from GitHub and unzip it on the Desktop.
- On the Linux terminal, install pip3 using:
sudo apt-get install python3-pip
- pip install Py serial 3.3 using:
pip3 install pyserial==3.3
To establish SSH connection (For wireless control):
To establish SSH, you will need to connect the Le Potato to a monitor, keyboard and mouse. Follow the steps to successfully access the Linux terminal using SSH:
- Make sure both, Le Potato and your computer are on the same Wi-Fi network.
- Open the Linux terminal on Le Potato
- Use the following command to obtain the IP address of the host
hostname -I
By default, SSH is disabled on Ubuntu images. Trying to establish an SSH connection without enabling SSH will give you an error like this: “Port 22: Connection Refused”
To enable SSH service on your libre computer, do the following:
- Open the Linux terminal
- Type Command:
sudo apt-get install openssh-server
- Next, enable SSH service using:
sudo systemctl enable ssh --now
Now that SSH service is enabled on Le Potato, we can establish the connection. For that:
- Download, install and open PuTTY
- Enter the Le Potato’s IP address in the Host Name Box on port 22
- Select SSH as connection type.
- Click Open button
- Accept the Server's key fingerprint
- Login as user with the password
We now have remote access to Le Potato's Linux terminal. Using this, we can run our python script on Le Potato wirelessly.
To run the python script:
- Download the first-walk.py script on Le Potato and save it the Py-LX16A directory (This step requires a monitor)
- Open the Linux terminal and navigate the directory which has Py-LX16A downloaded (Should be desktop if you followed the instructions).
- Enter the Py-LX16A directory using the 'cd' command
- Run the python script using the command
python3 first-walk.py
On hitting the enter key, the robot should take its first steps!
For any questions, doubts or clarifications you can comment below or reach out to me personally by sending a message to my inbox.
I hope you enjoyed reading this as much as I enjoyed making this!