Build your own quadruped Robot with Edog — Part 1

Solidmakers
6 min readJan 3, 2024

--

Ever dreamed of building your own four-legged robot buddy? Let’s get started together! This guide will walk you through crafting an Edog robot from scratch.

Ready to jump in

🛒 Visit our shop 🛒

Introduction

Edog is a fully 3D-printable robot that’s not only straightforward to assemble but also budget-friendly. Powered by the compact Raspberry Pi Zero, it’s versatile enough to support a variety of Linux distributions. Remarkably, Edog can command up to 16 servo motors at once, all while leaving the entire GPIO board free for any additional components you wish to integrate

https://youtu.be/Q_SPJ72pcgo?si=vIdBf4asLqA2Fif9

What are we building ?

We are building a quadruped robot, which naturally means it can walk. But that’s not all! This robot is powered by a Raspberry Pi Zero, enabling it to run a Linux OS, connect to any Wi-Fi network, and be controlled wirelessly. With this architecture, you’re free to code whatever you want using your favorite programming language. Additionally, you can integrate your own components and actuators via the Raspberry Pi’s GPIO or aditionnal servo motors.

https://www.youtube.com/watch?v=4XOQ5IJtXQM

Requirements

  • 8 * MG90S (or SG90) Servo Moto
  • 1 * Raspberry Pi Zero WH
  • 1 * Driver Servo — PCA9685 16' canaux 12-bit pwm- I2C
  • 1 * Power supply — HENGE 8A UBEC 5v
  • 1 * 7V-25.5V Input for 2–6 Lipo
  • 3D printed part (Available on eatsy)
Exploded view of all the parts

Usefull link

Official Website: edog.io
Github: github.com/SolidMakers
Documentation: *coming soon*
Instagram: @solidmakers_official
Youtube: @SolidMakers
Discord: *coming soon*

[Step 0] 3D Prints

The entire structure of the robot is fully 3D-printable. All parts are designed for easy printing and don’t require any supports. If you already own a 3D printer, you can access the STL files via this link.

If you don’t have a 3D printer, you can order the parts in your desired color here: 3D Printed Parts

You can also by a complete kit and be ready to go ! Edog — Full Pack

[Step 1] Install the Electronic Components

1 — Secure the Raspberry Pi and the Servo Driver to the frame using M3 screws. You can directly screw into the specially designed plastic frame, be careful not to over-tighten.

2 — Fix the Power supply to the frame using double-sided tape or glue

Edog Robot Electronic Components

The power supply’s role is to transform the battery’s voltage into a consistent 5V, enabling us to power both the Raspberry Pi and the servos.

Follow the wiring diagram shown in the image below, ensuring you don’t reverse the voltage.

Note that there’s no need to power a Raspberry Pi via the USB cable; you can instead directly connect to one of the 5V and GND pins.

[Step 2] Prepare the SD Card

Now, let’s proceed with the preparation of an SD card for our robot. We will install the Raspberry Pi OS (based on Debian), and configure it to ensure that the robot automatically connects to your Wi-Fi network upon startup !

While you’re free to choose any Linux distribution compatible with the Pi Zero, for the purposes of this tutorial, we’ll be using the official Raspberry Pi OS with the Raspberry Pi Imager software. There are numerous tutorials and YouTube available that provide clear instructions on the installation process, here is a good one:

  1. Download Raspberry Pi Imager and run it
  2. Select the default Raspberry Pi OS
  3. Select your sd card device
  4. Important, in the ‘Advanced Options’:
    - Setup a hostname for your robot
    - Enable SSH and setup credentials you want
    - Configure your wifi so the robot will automatically connect to it

Now, insert the SD card back to the Raspberry Pi.
Wait for the Pi to boot (first boot can be pretty long ~15min)

By now, you should be able to observe the Raspberry Pi establishing a connection to your home Wi-Fi network after boot. You sould be bale to connect to it using the hostname and credentials that were specified during the SD card configuration process

ssh username@hostname

[Step 3] Assemble the frame and Install Motors

Upon gaining SSH access, you are able to safely shut down the Raspberry Pi before disconnecting the power supply

sudo shutdown now

1 — Attach both side plates to the frame using 4 * M3 15mm screws and bolts provided in the kit.

2 — Insert the 8 x Servo Motors into the 3D-printed parts designated for them, as illustrated in the images below. Secure them using the screws provided with the motors.

Do not attach the femur yet, we need to calibrate motors first !

[Step 4] Wire the Hardware

1 — Connect the Servo Driver PCA9685PW board to the Raspberry Pi Zero

Servo Driver PCA9685PW Wiring

2 — Connect all the motors to the driver, it’s important to adhering to the specified order below, from motors 0 to id 7.
Ensure you use the left tibia on the left side of the robot and the right tibia on the right side.

Do not attach the Femur to the motors yet, it’s crucial to set servo motors to the correct angles before

Servo motors wiring

[Step 5] Calibration of the legs

Damn, it’s already time to do our first boot !

For this step you can use a usb cable to power up the pi or the battery as you wish, Just do not plug both at the same time please 🙃.

Once the Pi have fully botted it should be connect to your network automatically (Step 3/20)

Connect to the Robot via ssh with the following command:
Note: During the setup of the SD card, you specified a hostname and credentials for SSH; use them to connect to the robot.

ssh <yout-username>@<your-hostname>

e.g.

ssh pi@raspberrypi

Update the pi and reboot

sudo apt-get update
sudo apt-get upgrade
sudo reboot

Install all the requierments

sudo apt install build-essential
sudo apt install python3
sudo apt install python3-pip
  1. Enable the I2C Interface:
  2. Use raspi-config to enable the I2C interface:
sudo raspi-config

Navigate to the Interfacing Options > I2C and enable it.

Install I2C Tools (optional but helpful for debugging):

sudo apt-get install -y i2c-tools

3. After installation, you can check which devices are on your I2C bus using:

i2cdetect -y 1

--

--

Solidmakers
Solidmakers

No responses yet