Arduino Rocket Guidance

Rocket guidance can be achieved 2 ways, thrust vectoring and fin angling. The way I am guiding my rocket is by using thrust vectoring. Basically, an Arduino with a gyroscope and an accelerometer tell servo motors which way to angle the engine, and the rocket will move to the opposite of the engine's thrust vector. Lets get this show started with some material lists!

Step 1: Material List

This section should give you a basic idea about what you will need, more details will be explained in future steps

1) Power distro board (Custom Made)

2) .25 inch Aluminum billet or 3/8 inch basswood (For the chassis)

3) Rocket Motor

4) MPU6050 6 axis gyro chip

5) Arduino

6) laser cutter

7) Computer

8) Metal Gear Servos

Step 2: Make the Power Distro. Board

Its critical to save weight on a rocket, and the power distro. board will take power from a 11v lipo battery and distribute it to the servo motors and to the arduino/sensors. Using the diagram i posted, make a distro board.

Step 3: Wire the Gyro to the Arduino

The gyroscope has to be wired to the arduino in a specific way for it to work/be read. Since this is a fairly cheap module, no directions were provided and I had to figure it out myself. Using the pictures, make a cable for the gyroscope.

Step 4: Make the Thrust Vectoring Frame

The thrust vectoring frame must be powerful enough to take the rocket motor's thrust and not break. For this reason I went with a custom plasma cut aluminum frame, although if you pick a smaller engine, you could go with a wooden one.

The 2 inner rectangles are going to be used to house the servo motors, while the outer circle moves in the x axis and the inner circle moves in the y axis. The rocket engine will sit in the inner circle. I lost the laser cutting files for this piece so you might have to piece it together yourself

Step 5: Attach Servos to the Frame

The servo motors I am using are metal geared and shave a fairly fast movement time (critical to rockets). The servos are attached to rods, which connect to both the inner and outer circle. I had to epoxy the servo motors in because they kept coming loose.

Step 6: Make the Electronics Bay

The electronics bay will house the arduino and power board, along with the battery, and will keep these items safe from the rocket's thrust. You have to be creative here and I made mine so I could slide a tube over it for launch

Step 7: Programming

The code here will let the rocket fly straight up without fins using artificial stabilization, great for the first test flight!



    • Sweet Treats Challenge

      Sweet Treats Challenge
    • Build a Tool Contest

      Build a Tool Contest
    • Remix Contest

      Remix Contest

    12 Discussions


    2 months ago

    thanks for sharing this awesome idea. I am not really in this programming theme but i wanted to try it still. So i ordered everything on amazon and downloaded the Arduino open source (windows installer) and then I ran into a problem when I was uploading the file, as you can tell from the image I uploaded. You seem like a smart guy so i hope you ( or anyone else) can help me.
    thanks for your help

    3 replies

    Reply 7 weeks ago

    Tried the sketch using a Mega2560 connected to a mpu6050 and a servo without problems. The servo reacts to the movement of the MPU6050. The next step is to design and build the structure.


    Reply 21 days ago

    Yes this was really helpful. And I am really happy that there is quiet a simple solution.
    Would you maybe tell me how you would build that power distro board? The pictures on the article aren't really in good resolution. Would be very kind of you.
    Thanks for your help


    Reply 2 months ago

    I had the same issue when I tried to run the program and I needed to download the I2C library from GitHub ( Then I had to unzip the file and go into the folder and rename the file called SoftI2CMaster.h to I2Cdev.h and the folder to I2Cdev. Next, I went into the Arduino program and went Sketch -> Include library -> Add .ZIP file. Then find the folder that you renamed I2Cdev, select the folder and click Choose. I don't know where the file will be on Windows but on Mac, it was under Documents -> Arduino -> Libraries.

    Once you have done this you will encounter a similar error with the next line of code. Just download the Arduino MPU 6050 library ( and repeat the same process with adding it.

    Next, you will encounter an error that says: 'class MPU6050' has no member named 'initialize'
    The error happens with the line of code that says: mpu.initialize();
    You can just change this to mpu.begin();
    It has the same meaning as mpu.initialize(); it is just updated command with a different word to do the same function.

    Finally, you will encounter an error that says: 'class MPU6050' has no member named 'getMotion6'
    I havent figured out how to solve this issue yet. I think the issue is for a similar reason as the last error where it was an outdated command because the error message has the same format just with different terms or commands. I have yet to find the equivalent command in the new versions of the Arduino software.

    I hope this helped


    3 years ago

    i am making a swing-fire [a swing fire is basically a javelin] so thanks for the design!


    4 years ago on Step 7

    I have been experimenting a whole lot as of late with spin stabilised rockets and now I'm looking at venturing into the realms of GYRO stabilised rocketry. This Instructable is exactly what I need to make a start on my project.

    Thank you for posting this up!

    Much like AJManfield I'm very keen to see the final product perform in a real life scenario.

    Power to ya!

    I was wondering what kind of response you got. I've been working on this type of thing, but the rocket starts out moving so fast that the hardware doesn't have time to react before its too late. What kind of latency do you get from sensing a deviation to adjusting for it in real life?

    Also, have you considered using a PID or PD controller to adjust for overshoot?


    4 years ago on Introduction

    Would benefit from a micro instead of uno (for weight reduction)

    Good project, I like