Biped Robot | LEGO®-compatible Walking Robot

By Tart Robotics |
Biped Robot | LEGO®-compatible Walking Robot

Introduction

Making Biped robots that can mimic human walking has always been the focus of scientists, makers, and inventors for many years. In fact, biped robots are mobile robots with articulated leg mechanisms that provide locomotion. To compare with wheeled robots, they can go upstairs and pass on obstacles, although, at a slower speed. Building humanoid biped robots have always been difficult due to the high number of joints and maintaining stability during walking. If you have no academic knowledge of forwarding, inverse kinematics, and control engineering, it is absolutely no problem. In this tutorial, we are going to make a fun and easy-to-build biped robot with LEGO®-compatible components, an Arduino board, and some off-the-shelf electrical components (Fig. A). The instructions are prepared in a way that you can build them at home.

Kids can build a Biped robot with LEGO®-compatible blocks.
Fig. A – General view of a biped robot

In this project, the biped robot uses an interesting mechanical mechanism that mimics human walking with only one DC gear motor. The result is quite interesting.

In this tutorial, we will make the structure of the body and the leg mechanisms of the biped robot using LEGO®-compatible parts. Then, one DC gear motor will drive the leg mechanism through bevel and spur gear trains (Fig. B).

With this DIY project inspire your kids to learn robotic concepts
Fig. B – Combination of body structure, electronics, and gear motor

In the next step, we will add an Arduino Nano as the brain of the biped. Arduino Nano uses a small-size powerful microprocessor that makes it suitable for low-weight and small-size projects (Fig. C). 

Use Arduino Nano to build Biped robot.
Fig. C - An Arduino Nano board

Various off-the-shelf motors, sensors, and shields can be easily connected to Arduino boards. This feature enables us to do a variety of tasks with the biped. For instance, you can tell the biped to move back and forth and dance by programming the Arduino board.

Tools and materials you need to build a biped robot

You can create a Biped robot with a DC motor and LEGO®-compatible blocks with your kids.
Fig. D – Electronic and electromechanical components
  1. 1x TT Gear Motor
  2. 1x 3D Printed Gear Motor Housing
  3. 1x BreadBoard, Mini Size
  4. 1x Arduino Nano
  5. 1x Neo Pixel LED Ring
  6. 1x Power Jack
  7. 1x 3D Printed Lego-compatible Coupling
  8. 1x L298N Mini Motor Driver
  9. 1x Pushbutton
  10. 1x M3 x 30 Machine Screw
  11. 2x M3 x 25 Machine Screw
  12. Male to Male Jumper Wire
You can create a Hexapod robot with two DC motor and LEGO®-compatible blocks with your kids.
Fig. E - LEGO®-compatible components
  1. Frame, 5x7-module
  2. Double bevel gear, 36-tooth
  3. Bevel gear, 12-tooth
  4. Beam, 9-module
  5. Beam, 5-module
  6. Beam, 3-module
  7. Angular beam, 3x5 module
  8. Bushing, 1-module
  9. Axle, 8-module
  10. Angular block 2, 180°
  11. Double cross block, 3-module
  12. Beam with cross hole, 2-module
  13. Axle with stop, 4-module
  14. Beam, 3-module
  15. Axle, 2-module
  16. Connector peg with friction/axle, 2-module
  17. Connector peg with axle, 2-module
  18. Tube, 2-module
  19. Connector peg with bushing, 3-module
  20. Connector peg with friction, 3-module
  21. Connector peg with friction, 2-module
  22. Axle connector with axle hole
  23. Angular block 1, 0°

How to use building blocks to assemble the robot?

Let's start assembling the biped's body-structure and leg mechanisms. The leg mechanism consists of a parallelogram mechanism that is driven by a four-bar linkage mechanism (Fig. F). Prepare LEGO®-compatible pieces according to Fig. E, and follow the step-by-step video tutorial below.

How LEGO®-compatible projects encourage kids to learn robotics.
Fig. F - Four-bar linkage and parallelogram mechanisms

What 3D printed parts do you need?

LEGO®-compatible components only match with LEGO®-compatible gear motors. In order to transmit power from the shafts of the off-the-shelf gear motors to LEGO®-compatible gears or axles, we need to print a housing for the gear motor as well as a coupling. The housing will serve as an interface or an adaptor between the gear motor and the LEGO®-compatible beams. The coupling connects the gear motor shaft to the LEGO®-compatible axle. These 3D printed parts are called Lego-compatible housing and shafts (Fig. G and Fig. H). We have also created front and back body covers for the robot. The back cover look likes an oxygen capsule and protects the electronic part. The front cover acts similar to armor (Fig. I). Please download the 3D files and print the motor housing, LEGO®-compatible coupling, and covers with your 3D printer or use the ones in a maker space nearby.

How to use 3D printed parts to build Biped robot
Fig. G - 3D printed LEGO®-compatible motor housing
You can download 3D printed parts to build Biped robot with LEGO®-compatible parts
Fig. H - General view of LEGO®-compatible gear motor
You can download 3D printed parts to build Biped robot with LEGO®-compatible parts
Fig. I - 3D printed front and back body covers

Electronics and wiring

Prepare your screwdriver and soldering iron and carefully follow the video instructions below. Make sure you properly implement the schematic circuit diagram shown in Fig. J, so you don't end up toasting your Arduino board and motor driver.

How to use electrical parts to create biped robot with your kids
Fig. J - Schematic diagram of the circuit

Programming your DIY robot

You can pick up LEGO®-compatible pieces and let your imagination go limitless. Of course, coding is also the part that you can have lots of fun and be the most creative. You can go to Arduino IDE and write your own code to tell the biped what to do. But for now, let's start with this code.

/*
  Bipedal Walking Robot
    The idea:
    In this project, the robot starts and stops walking when a button is pressed on
    its back. There's also the robot's eye which is an Adafruit Neopixel 
    controllable color RGB LED ring.
    The circuit:
    - In this circuit, an Arduino nano is used. Any other types of Arduino
    can be used of course but do not forget to change the pin configurations
    if you want to change the circuit on your preference.
    Visit Tart Robotics blog for more information:
    https://www.tartrobotics.com/blog/all
*/


#include <Adafruit_NeoPixel.h>
#define PIXELSPIN A1 // Which pin on the Arduino is connected to the NeoPixels?
#define NUMPIXELS 8  // How many NeoPixels are attached to the Arduino?
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

#define M1 A4
#define M12 A5
#define button A3

int buttonNew;
int buttonOld = 1;
int Motorstate = 0;

void setup() {
  // Initialize Arduino pins to outputs
  pinMode(M1, OUTPUT);
  pinMode(M12, OUTPUT);
  pinMode(button, INPUT_PULLUP);
  // This initializes the NeoPixel library.
  pixels.begin();

  for (int i = 0; i < 9; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255.
    pixels.setPixelColor(i, pixels.Color(0, 0, 0));
    // This sends the updated pixel color to the hardware.
    pixels.show();
  }
}

void loop() {
  buttonNew = digitalRead(button);
  if (buttonOld == 0 && buttonNew == 1) {
    if (Motorstate == 0)
    {
      // bright blue color.
      pixels.setPixelColor(1, pixels.Color(0, 0, 250)); 
      pixels.setPixelColor(2, pixels.Color(0, 0, 250));
      pixels.setPixelColor(3, pixels.Color(0, 0, 250));
      pixels.setPixelColor(5, pixels.Color(0, 0, 250));
      pixels.setPixelColor(6, pixels.Color(0, 0, 250));
      pixels.setPixelColor(7, pixels.Color(0, 0, 250));
      pixels.show();
      // Motor run.
      digitalWrite(M1, HIGH);
      digitalWrite(M12, LOW);
      delay(1000);
      digitalWrite(M12, HIGH);
      digitalWrite(M1, LOW);
      delay(1000);
      Motorstate = 1;
    } else {
      for (int i = 1 ; i < 8 ; i++)
      {
        pixels.setPixelColor(1, pixels.Color(0, 0, 0)); // Neopixel off.
        pixels.show();
      }
      // Motor stop.
      digitalWrite(M1, HIGH);
      digitalWrite(M12, HIGH);
      Motorstate = 0;
    }
  }
  buttonOld = buttonNew;
}

Run your biped robot for your kids