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.
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).
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).
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
- 1x TT Gear Motor
- 1x 3D Printed Gear Motor Housing
- 1x BreadBoard, Mini Size
- 1x Arduino Nano
- 1x Neo Pixel LED Ring
- 1x Power Jack
- 1x 3D Printed Lego-compatible Coupling
- 1x L298N Mini Motor Driver
- 1x Pushbutton
- 1x M3 x 30 Machine Screw
- 2x M3 x 25 Machine Screw
- Male to Male Jumper Wire
- Frame, 5x7-module
- Double bevel gear, 36-tooth
- Bevel gear, 12-tooth
- Beam, 9-module
- Beam, 5-module
- Beam, 3-module
- Angular beam, 3x5 module
- Bushing, 1-module
- Axle, 8-module
- Angular block 2, 180°
- Double cross block, 3-module
- Beam with cross hole, 2-module
- Axle with stop, 4-module
- Beam, 3-module
- Axle, 2-module
- Connector peg with friction/axle, 2-module
- Connector peg with axle, 2-module
- Tube, 2-module
- Connector peg with bushing, 3-module
- Connector peg with friction, 3-module
- Connector peg with friction, 2-module
- Axle connector with axle hole
- 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.
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.
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.
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.
#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;
}