Introduction: Leo: the Pet Cat

About: I am a hobbyist and my focus is on robotics and RC drones. I have been associated to electronic projects since I was five years old. Since then, till now, almost everyday I have been tinkering with electronic …


This is my first instructables. The first version of "Sony Aibo Robot (1999)" attracted me towards robotics at the age of four, ever-since, it was my dream to make a pet robot for me. So i came up with "Leo: the Pet Cat" which can be built at home at a low budget. I was inspired by the projects "KITtyBot" ( ) and "OpenCat" ( ) and combined these two projects with some spice of my own. Currently it is an android controlled robot, I am still working on it and I wish to make it fully autonomous.

Step 1: Gather Your Parts:


  • 1 x Arduino Nano
  • 1 x Arduino Nano Sensor Shield
  • 1 x HC-05 Bluetooth Module
  • 12 x Micro Metal Gear Servo Motors (MG 90S)
  • 1 x 2s LiPo Battery Pack 1500-2200 mAh
  • 1 x 5V UBEC


  • 3D printed body parts
  • Bendable depron foam board / Dollar Tree foam board
  • Screws
  • Super glue

Step 2: Assemble Your Parts

Get all your 3D printed parts to get started with the assembly. I used the body files from the "KITtyBot" project ( ). It is a very well written project with the assembly instructions. For the femur and tibia (leg parts) I found the "OpenCat" project perfect ( ). To add a body cover, I used a bendable depron foam board piece and cut it out according to my desired shape. Also, Dollar Tree foam board works fine if you peel the paper cover. I glued two PVC board pieces with the 3D printed body and screwed the foam cover with the PVC board.

OpenCat Thingivers link:

Step 3: STL Files for 3D Print

These are the STL files I printed to make my Leo. Files are taken from the "KITtyBot" and the "Opencat" project published in thingivers ( ). Quantity of each file to be printed is mentioned within the name of each file.

Step 4: Connections:

The 12 servos are marked from 0 to 11. The connections are given below:

Servo 0: Pin 3

Servo 1: Pin 4

Servo 2: Pin 5

Servo 3: Pin 6

Servo 4: Pin 7

Servo 5: Pin 8

Servo 6: Pin 2

Servo 7: Pin A3

Servo 8: Pin 12

Servo 9: Pin 11

Servo 10: Pin 10

Servo 11: Pin 9

RX (Bluetooth): TX pin

TX (Bluetooth): RX pin

Step 5: Make Your Robot Alive: Programming

The current code has 11 functions. These are:

1. Forward (forwardcreep)

2. Reverse (reversecreep)

3. Left Turn

4. Right Turn

5. Dance 1

6. Dance 2

7. Dance 3

8. Kick

9. Sit

10. Stand

11. Handshake

Walking Gaits:

The walking gaits/ movement functions (forwardcreep, reversecreep, left turn and right turn) are taken from the "KITtyBot" project ( ) where the code is described perfectly in detail. I am working on my own walking gait code to make the robot a bit faster and to add a running capability as well.

The rest of the functions are developed by me.


I have written three dance functions. When the dance command is sent from an android device, the code randomly chooses one from the three functions and perform any one of the three dances. Here I used the "random" function to pick a number from 1 to 3 (in the code you will find it as 1 to 4, it is because the random function counts 1 as inclusive and 4 as exclusive). each of the three numbers are assigned with a dance function. Thus, the dances of the robot are unpredictable each time. It will make you feel like the robot dances according to his own desire!


This part is my favorite. When we kick a ball in soccer, we aim first, move the leg backwards and finally kick the ball with force. I tried to imitate this kick. Firstly, the robot balances itself with its other three legs and pulls its active leg up. Then the active leg kicks the ball with full force and puts the leg back to the ground.

Sit and Stand:

The Sit function is comprised of total three for loops. The first two loops make the robot lean towards the ground. The third loop is used to put the head and frontal body upwards to give Leo a resting position. The Stand function has only one loop which brings back all the servos to 90 degree.


For the handshake, Leo sits back to its resting position first. The four loops work afterwards to put his paw up for a handshake. There is a five seconds delay for the handshake. The final loop brings Leo back to its resting position. Finally the stand function works again.

Step 6: The Arduino Code:

Here is the Arduino Code. This code is still under development.

Step 7: Power It Up and Play!

I am using a 2S 7.4 Volt 2200 mAh Lipo battery with a 3A 5V UBEC for powering up my robot. 12 servos draw a good amount of current, so using a low current rated battery will not be able to cope up with the amount of current drawn. Therefore, the voltage will be dropped down. 1500-2200 mAh battery is suitable this robot.

If you have a question, ask me in the comment section below, or contact me at

Enjoy !