Baby MIT Cheetah Robot V2 Autonomous and RC




Introduction: Baby MIT Cheetah Robot V2 Autonomous and RC

About: Want to do some thing best with my less resource.

Very Very Sorry Now only found the legs design in the tinkercad has problem, thanks to for check and inform me. Now change the design file and upload. Kindly check and download. Those who already download and printed I am very very sorry, i never notice and dont know how it change.

Actually that previous design also works but the joint is very thin and it break while fast steps.

Baby MIT Cheetah Robot is the previous version of this robot. I did lot of changes in this version. But even more want to done. But this version very very simple for any one to design. In the previous Version Body is made of wood but in this version i 3D print the body so if any one want to this this robot its very very easy to do. Just download and print the body and leg, then screw the servos.

I plan for the top cover after complete the project, but current due to state wise lock i cant able to get the cover from supplier. Even though it looks cute on carrying two batteries like Robot cow bulk in the stomach.

This is not upgraded from old its completely new build. So all the steps are included in this instructables, you dont want to refer the version1 instructables.

Major changes Done

1) Body is 3D printed.

2) Its Bluetooth control as well as Autonomous.

3) Battery Operated (The strong battery 18650 2Nos allow to run for long hours, From start design to complete i test it for more than 2 hours but still work in battery).

4) Lot of changes in the arduino program, we able to change the moving speed. If we have foot for the robot, it never fall and at that time change the variable smoothdelay in the program and even we see the slow motion walk.

Step 1: Materials Required

Materials Required

1) Arduino nano - 1 No.

2) HC-05 Arduino bluetooth module - 1 No.

3) MG90S Servo - 9 Nos.

4) Ultrasonic Sensor HC-SR04 - 1No

5) 3D print Body 1 Nos and Legs 4 Sets.

6) Ultrasonic Sensor Mount - 1 No

6) LM2596 DC to DC Voltage Regulator. - 1No

7) 3.7V 18650 Battery - 2 Nos

8) 18650 Single Battery Holder - 2 Nos

9) ON/OFF Switch.

10) M2 X 10 mm screw with nut - 32 Nos.

11) Double Side plain PCB board.

12) Male and Female Header pins.

13) Wires.

Step 2: 3D Print Leg

Use Tinkercad to design the Legs and Body. And 3D print it in A3DXYZ.

Step 3: 3D Print Body

Download the Tinkercad Files and Print it. Some holes are put in the body while fixing and wiring.

Step 4: Circuit Plan and Develop

As per plan we want to drive 9 servos. So i user Digital pins 2 to 10. Connect the pin to the servo pins using male connector. Arduino TX RX is connected to bluetooth RX and TX, Ultrasonic sensor Echo and Trigger connected to Pins A2 and A3 and power supply for bluetooth and Ultrasonic sensor is given from arduino 5V. For Arduino Vin is given directly from 2 3.7V battery 18650. For servos Supply given from same 18650 but through LM2596 voltage regulator.

I use double side PCB to make shield. While use double side PCB be careful while creating track in the PCB, Molten lead pass through the holes and fill in the next side. Use Female header pins in the double side PCB to connect the arduino nano and in the opposite side of the board use male header pins to connect the servos, I soldered 12 male connectors from 2 to 13. Solder female header pins to connect the HC-05 bluetooth module on the board. And Male header pins for Ultrasonic sensor. Four male header pins from GND, Vin of the arduino, dummy and last one for servos vin. The Circuit is very small.

Step 5: Assemble Leg

There are 7 pieces in the a single set leg. Like wise 4 sets available. Join the leg links where two pieces connected with servo has a servo horn slot on the back side and its is 30mm length hole to hole. and the link pieces are 6 cm from hole to hole.In the 3D model i set only 0.1mm difference gap for links, so it hold very tight. I use fine emery sheet to increase the hole size and fix the links.First join the left side and then the right side and then the bottom.Now use the top screw like cap to hold the links. Join all the four sets.

The screw like plastic piece extend up to the back side of the links. Use feviquick (quick fixing liquid) to paste the holder permanently with the legs. Be careful while pasting, Don't allow the feviquick to flow inside the moving joins. Then fully paste the servo horn on both side of the leg. Now check and found the movement is correct. The links are 5mm thick so its hard.

Step 6: Changes in Body

While design the body i forgot about wiring and pcb fixing, because i plan not of use flue gun for major fixings. So put 2mm hole for wiring with pvc cable tag. Put the PCB and LM2596 on the top of the body and mark for hole. At first design i not plan for head servo (only plan for ultrasonic sensor). So take a small slot in the front side for servo fixing.

Step 7: Screw Servos With Plan

First step is to fix the servos. This project has 9 servos. Servos pin connection pin no, name in arduino program and location marked in the first image. I use M2 X 10mm screw and nut (At first plan for nickel screw but while see the force of the leg while walking i feel if screw and nut is use then its very tight and not damage while walking). Screw all the servos as like the photo and as per the pin number hot glue the servo connectors one after the another. So its very easy to plugin and also no chance to change the pins.

Step 8: Screw Circuits

Put the shield over the body and screw it in the edges with the body on all four sides in the slot. Mark a center line in the body and keep the circuit center with the body center. Screw the DC to DC regulator board LM2596 on the back side of the body.

Step 9: Power Supply Wiring and Checking

ON/OFF Power switch which i got is the screw option on the front. So i cut a small plain pcb and tie the switch in that pcb and hot glue it. Now put 2mm hole on both side in the pcb. Mark that holee in the back of the body and drill it. Screw the switch with 2mm bolt and Nut. Soldering the battery positive wire through this switch to the LM2596 dc to dc regulator input.

Step 10: Under Devepment Work Place

My Work place (also my bed room) at the time of developing baby cheetah robot. See the baby cheetah in the center its growing. Can you trace the tools around me. Organize it after work at night 3 is the difficult task.

Step 11: Head Fixing (Ultrasonic Sensor Fixing)

Ultrasonic holder is available online. But the horn screw holder is for the SG90 servo screw. So i increase the hole size of the holder and screw the servo horn with the ultrasonic sensor holder. Make a 4 wire female to female header pin wire extension. Already solder male header in the shield with wiring for ultrasonic. Put the head servo to 90 degree and connect the horn with sensor holder and screw it tightly.

Step 12: Balance Body by Battery

Already center of the body is marked in the body with marker. Lift the body with screw driver on both side of the marking. Place two batteries holder with batteries on both sides of the Shield and move it back word up to the body is straight. Then mark the font and back edge of the holder. Put two 2mm hole on the battery holder bottom and mark it on the body. Screw the battery holder with 2mm x10mm bolt and nut.

Step 13: Correct the Wiring

Take the front wires on one side and back wires on other side. Order the wires and use pvc cable tag, tie the wires with the holes already put in the body. Don't let any wire freely. Now the Body with servos, PCB and battery is ready.

Step 14: Legs Fixing

Create a simple arduino program and set the servos in following position
Leg1F = 80 degree

Leg1B = 100 degree

Leg2F = 100 degree

Leg2B = 80 degree

Leg3F = 80 degree

Leg3B = 100 degree

Leg4F = 100 degree

Leg4B = 80

Headservo = 90

degree fix the leg horn to the servos as shown in the figure ( set the 30mm link parallel to he body) an screw it tightly.

Step 15: Finished Baby MIT Cheetah

Step 16: Android Code

Download the apk file from here

Download the aia file from here

Its a very simple program developed in Android with MIT App Inventor . All the buttons send a character as per press and release image. So far 21 characters used for each action. When arduino received this character through bluetooth it works as per the character received.

Download the app from google drive by click the above link and install it in the mobile.

Step 17: Keys From Android

List of characters send by the Arduino is given below

G	Front left
F	Front
I	Front Right
L	Left
S	Stop
R 	Right
H	BAck left
B	BAck
J	BAck right

U	Up
D	Down

W	Front only down
X	Back only down
Y	Front only UP
Z	Back only UP

O	Fullstand
P	Fullshit

C	Check
V	Hai

M	Manual
A	Auto

Step 18: Run Android App

In the mobile Switch on the Bluetooth and Open Baby Cheetah V2. Click the pick bluetooth and select the arduino bluetooth HC-05. The control screen opens. New addition in the control screen compare to version one is. Auto and manual, if switch to auto then all other buttons are not able to use. Switch to manual mode to activate control.

Step 19: Arduino Code

Download the arduino code from Google Drive

The main aim of the arduino program is to keep the body in the same position even walk and turn. For that angle of the leg movement is calculated in each height and put it in a multidimensional array. As per the commands received from the android the program check the array and move the leg in that direction. So the body is in the same height while walk and turn.
Cheetah walk funny like front leg in full height and back leg full down. Like wise wise verse. Like wise it also run in all heights.

Step 20: Arduino Major Changes

Moving speed

In the previous version no servo control is provided so the servo move at its full speed. But in this version a seperate procedure us written for servos speed control. So whole program is changed by intialize the servo position want to move to the procedure. All the 8 leg servo motor last postion is recorded and with the new position find the max difference of all the 8 motors. With that max difference divide all the steps want to move individually and with a for loop repeated for max steps with delay, we change the leg speed here.


When you switch the auto mode in the android. Auto run set to true in arduino. In the Autonomous mode the robot move automatically with the help of ultrasonic sensor.

How It works

1) First the robot go to full stand position.

2) Move forward and check the distance of obstacles from the robot.

3) If the distance is more than 5cm then its walk front else it stop.

4) First it reduce the height to up to 4 steps one by one.

5) If the obstacle is just a gate it never found obstacle at reduced height, then it move forward by crealing. After some fixed movement it stand up and repeat the action.

6) Even down to 1 height and found the obstacle, it again stand at fille height (5th position)

7) Turn the head degree from 90 to 0 and note the distance and turn head to 180 degree and note the distance. Then head go to 90 degree.

8) Refer the left side distance and right side distance, turn to the direction with long distance.

9) After turn move to front and goto step 2.

Step 21: Autonomous Video

Open the App and connect the robot and click to auto mode (man in the app change to robot). Now see the movement, move forward and see a obstacle and reduce its height step by step, even it has obstacle. So it stand up and see left and right, in the left side i put a corrugated board. So right side has long way and it turn right and walk.

Step 22: Baby Cheetah in RC Action

Even through Autonomous mode is very nice. Kids like to play with control. Here are some videos with fun action of the robot. It say hai by show leg and shack heads. Orange black combination is like by all. I plan for the top cover only after fix the head and design, but due to lock down i cant able to get the top cover. When cover work completed i put a photo shoot and upload here.

Thank you for going through my project.

Lot more to enjoy...............Don't forgot to comment and encourage me friends.

Arduino Contest 2020

Judges Prize in the
Arduino Contest 2020

Be the First to Share


    • Explore Science Challenge

      Explore Science Challenge
    • Furniture Contest

      Furniture Contest
    • Box Challenge

      Box Challenge



    2 months ago

    Amazing build bro.


    2 months ago

    Hello Sir
    First of all congratulations on making an awesome project. I just wanted more insight about how it walks ahead(forward) . If possible, can you please provide the code specifically about how the robot walks ahead. You may even point out that part of code but in case you can send the specific code, it would be really helpful.


    Reply 2 months ago

    Thank you very much.

    Detailed calculation is given in this project

    In the LegarduinoV2 arduino file. walkF, walkB array are the angle of the two servos. walkH is the height of the servo. walkF, walkB is a two dimensional 5 elemats array each array for each height. The degrees in the array are calculated seperatly and inserted here. that calculation is detailed in the above Mini Drawing Bot - Live Android App - Trignomentry.


    Question 9 months ago

    Hey, I also seem to be having a problem with the app and bluetooth. I can connect to the robot and the display comes up but the robot does not move. I have confirmed the RX is connected to the TX and vice versa. When I print the chars received over the serial monitor from the serialEvent function it always outputs X or Z, any idea why that is happening?


    Answer 9 months ago

    Only for back up and down in the coding X and Y is used. Check with any other mobile or connect the mobile to laptop bluetooth and use serial monitor in laptop view the characters received.


    10 months ago

    Believe I have found a bug in the code. In autonomous mode, when it meets an object and tests the distance, in lines 235 - 250, it actually records the left and centre distance, not the right. You move the head servo to 0 deg and record distance (line 239). Then you move it to 180 deg but do not record the distance until line 248, which is after you have returned the head servo to 90 deg. Thus it always turns one way.


    Reply 10 months ago

    I already change the code in 7/21/2020. Please download the latest one.


    Reply 10 months ago

    OK, thanks. Were there any other changes?


    Question 10 months ago

    Hi. I am having trouble running your code. My Bluetooth connection is good, but I get no response from the robot. In checking the code, I see at line 674 you have defined the function that reads the bluetooth input (void (serialEvent()), but I cannot see a call to this function in the body of the code? What am I missing please? Thanks.


    Answer 10 months ago

    Thanks. I did some research and found how this works. This
    again show how important it is for you the fully comment your code when
    publishing it as a ‘tutorial’. I need to
    make some adjustments to the servo movements, and will have to go through the
    code to figure0-out how the walk array works. An explanation in the code would
    have been very helpful. Please continue to publish your work, but PLEASE take
    the timer to explain you code with comments and clean it up before publishing
    it. Regards, Tony


    Answer 10 months ago

    serialvent() is not want to call, it automatically works when data received. Please check your bluetooth tx is connected with arduino rx and bluetooth rx is connected with arduino tx.


    10 months ago on Step 22

    Hello Jega,

    kindly can you share me more detailed about the circuit plan and connections as am not able to see it in the step 4 properly. thx


    Reply 10 months ago

    Please can you post/send other images as they are not visible


    Reply 10 months ago

    sorry sir currently that circuit is not with me. I send the robot to a company.


    Reply 10 months ago



    Question 11 months ago on Step 4

    Can a MT3608 be used instead of the LM2596? Output would be 7V 2A instead of 7V 3A.


    Answer 11 months ago

    If you have Try it sir, but regulate the volt to 6 more voltage affect the servo. When i measure the amps taken when all servos running is greater than 2A that's why i use 3A. But if you use sg90 may it take low amps.


    Reply 11 months ago

    I had a bunch of DF9GMS servos from another project that I'm using here. Hoping it will work fine. According to data specs of both servos the input should be 5V. How much Volts are you sending to the servos? 3.7V? 5V? 6V? 7V? 11V?