Buffalo L

Our Goal

Since we began developing advanced model rockets, our overarching goal has always been to devise one capable of propulsive landings. In June 2023, we finally set out to tackle this ambitious goal. To that end, we engineered the rocket Buffalo L shown in this picture.

This development process was challenging, as the most powerful rocket engines available to us are of class D. Consequently, we had to devise many unique concepts and systems never seen in model rocketry before and lightweight enough to make such an attempt feasible. Additionally, we had to use engine clusters.

CAD-Design

Buffalo L - Ascent Configuration

Buffalo L is a two-staged rocket consisting of the ascent and descent stages. In the picture above, you can see it in its ascent configuration.

Ascent Stage

Buffalo L - Ascent Stage

The primary role of the ascent stage is to lift the rocket to a sufficient altitude from which the descent stage can perform a landing attempt.

Buffalo L - Ascent TVC

It incorporates a thrust vector control mount (TVC) for active stabilization. This TVC uses two servos, each responsible for controlling a specific axis with a range of motion of ±20°. One servo drives a section of a gear connected to the ascent stage hull, causing the servo mount to rotate in the pitch axis. The other servo drives a gear section attached to the engine mount. When actuating it, the engine mount rotates in the yaw axis. For added passive stability, the option to attach ascent fins is available.

The ascent stage connects to Buffalo L by two stage connector bolts and a rubber band. At stage separation, a heating wire dissects the rubber band. After ascent stage engine burnout, the two stages separate, and the servo wires automatically disconnect. The ascent stage then heads back to the ground, and the parachute opens by draught.

Descent Stage

Buffalo L - Landing Configuration

After maximum apogee, the rocket evaluates if a successive landing attempt is feasible. If it is, it deploys its descent fins to create a stable descent orientation, calculates the perfect landing engine ignition time by simulating the fall, and opens its landing legs based on altitude specifications. The rocket configuration at this instance of the attempt is shown in the image above. However, if Buffalo L evaluates that the landing is not feasible, it aborts by deploying the parachute housed within the gray enclosures at the top.

Descent Fins

After maximum apogee, the rocket falls back to the ground without any stabilization system activated, which can result in an unintentional rocket orientation. To prevent this from occurring, we implemented decent fins. These lift the center of pressure of the rocket above its center of gravity, ensuring a stable fall.

A rubber band connects two opposing fins in a way that pulls them open. However, another rubber band around the fin hull perimeter keeps them closed. Burning through this closing rubber band after maximum apogee, causes the descent fins to deploy.

Landing Legs

Landing Legs - Open

The landing legs use U-shaped aluminum rods that are attached in a rotatable way to the landing leg attachment hull. They are pulled open by a rubber band until they are limited by a sloping surface inside the attachment hull. During ascent, the landing legs are closed by an elastic band at the lower rocket body. When the closing rubber band is severed, the legs fold out.

Thrust Blocking System

Descent Stage with TBS

To stand a chance of completing a propulsive landing, we knew that some kind of thrust throttling of the descent engines was necessary as the ignition timing might not be perfect. To that end, we developed a thrust-blocking system (TBS) that works by a sliding plate with a hole that moves over the rocket engine. When aligning the hole with the engine's center, the exhaust moves through the hole, providing propulsion. When moving the hole away from the engine’s center, the thrust reduces to near zero while the exhaust leaves through side openings. This system is installed on the center engine of the engine cluster of the descent stage.

TBS on 3D Measuring Test Stand

At first, we were skeptical that this system would create uneven side forces that would make stabilization even more difficult. Therefore, we created a 3D measuring test stand to assess if this assumption was valid while characterizing the different thrust percentages. Fortunately, this mechanism exerts no uneven side forces and reduces thrust as intended.

The working principle of the landing TVC is the same as the ascent TVC. The only difference is the greater size of the engine mount, as it incorporates the thrust-blocking system. The angle range, however, is kept at ±20° for both axes.

Parachute Deployment System

Parachute Deployment System - Open

A safety feature that is implemented into Buffalo L is its backup parachute. It is only needed if the height or orientation after the ascent phase is not probable for a sequential landing attempt.

The parachute deployment system took inspiration from nature, as it opens like a flower that blossoms. It consists of the stator plate and the two parachute covers. The covers are attached to the stator plate and are rotatable around their joints. One elastic band is attached to a screw mounted on the inner side of the parachute cover. It is then led outside and through the stator to be connected to the other cover. Its purpose is to create a tension that wants to open the parachute covers. Another rubber band is led on the inside. This one is designed to be more forceful to hold the nose cone closed. Separating the inner elastic band causes the covers to open, while the parachute unfolds through the drag of the fall.

Structure

To ensure compatibility between all modules, we developed a remarkable connection system inspired by bayonet coupling.

Each module is equipped with four plugs and four sockets. The plugs are inserted into the sockets of another module and then rotated to connect the two modules. In addition, two small screws can be inserted for additional stability and to prevent accidental rotation.

Flight Computer

We have utilized our Buffalo Rev. E flight computer for the first three flights of the Buffalo L rocket.

In March 2024, we developed a new flight computer system Buffalo Stack, which replaced Buffalo Rev. E.

Buffalo Rev. E

Buffalo Rev. E

Buffalo Rev. E is the sixth revision of the Buffalo flight computer and is the first to bear capabilities to support landing mechanisms. We developed this flight computer for both the Buffalo L and Buffalo Rocket.

Power Management

Buffalo Rev. E is powered by a three-celled lithium polymer (LiPo) battery. The battery’s voltage of around 11.1V is step-down regulated by the PCB-incorporated 5V buck converter (LM2596S-5.0). This voltage regulator can deliver up to 3A of current, which is necessary for supplying up to three servos and all other integrated components. The 5V line is further regulated by a low dropout linear voltage regulator (AP2112K-3.3) to 3.3V, which can deliver up to 600mA and supplies most of the logic ICs of the flight computer.

Microcontroller

The brain of this flight computer is the WROOM-ESP32-32E-N8 microcontroller module. It was integrated directly onto this PCB to save weight compared to implementing a third-party breakout board.

Consequently, we had to establish the connection between the microcontroller’s UART and the programming device’s USB. To do so, we incorporated a USB to UART bridge (CP2102) onto this board.

Furthermore, an SD card slot was integrated into the PCB to enable flight data storage.

Sensors

A sensor package including a three-axis accelerometer and a three-axis gyroscope is used to assess the rocket orientation. Specifically, we use the BMI088 sensor from Bosch for this purpose.

Additionally, the BMP388 sensor from Bosch is integrated for altitude estimation based on air pressure.

Furthermore, the battery's charge level is monitored through a resister divider, providing crucial information for managing the vehicle's power supply.

Outputs

Regarding outputs, Buffalo L has numerous, which include:

Indicators: 1x RGB LED and 1x active buzzer

Actuators: 5x servo ports (2x ascent TVC, 2x landing TVC, and 1x landing TBS) and 1x reaction wheel port  

Pyro Channels: 5x (1x stage separation, 1x descent fins, 1x landing legs, 1x descent engine, and 1x backup parachute) 

As the ESP32 microcontroller does not feature enough GPIO pins for this application, two shift registers (74HC595D) were implemented. These enable the control of multiple outputs by using three GPIO pins of the microcontroller. With them, the pyro channels, the RGB LED, and the buzzer are controlled. All others are controlled directly by the microcontroller. This direct control is especially important for the servos, as the shift register does not provide high enough switching frequencies for PWM signals.

Pyro channels

The pyro channels feature MOSFETs capable of withstanding high currents. In addition, each pyro port features a designated LED to indicate whether it is turned on or off. Furthermore, the board has circuitry to verify the proper connection of heating wires and electrical igniters before a launch and landing attempt. This validation is performed by pressing the continuity check button, which results in an LED lighting up for each properly connected channel.

Buffalo Stack

Buffalo Stack

Buffalo Stack is our newest flight computer system. It is highly modular and splits tasks across different boards: Stack Core, Stack Fusion, and Stack Out

  • Stack Core is concerned with power management, runs the main flight software, and handles telemetry.

  • Stack Fusion provides readily processed sensor data.

  • Stack Out features pyro channels and servo outputs for TVC control.

Each board has its own microcontroller, which communicates with the other boards through I2C.

A total of 255 extension boards can be added to a Stack Core board, and any new board could easily be added to the architecture.

Stack Core

Stack Core - Assembled

Power Management

The Core board supplies all the other sub-boards with un-regulated battery voltage and regulated 5V and 3.3V power. Therefore, the entire power management sits on this board.

The Core board is always the topmost board, which allows the user to connect the battery to the XT60 connector positioned at the top of the board. The recommended battery to use is a three-celled LiPo battery,

The battery voltage is step-down regulated to 5V through the LM2596S-5.0 buck converter, capable of delivering 3A. The 5V is further regulated to 3.3V via the ASM1117-3.3, which can supply up to 1A.

Microcontroller

The microcontroller is the ESP32-WROOM-32E-N8, which gives the Stack flight computer Bluetooth and WiFi capabilities. The used USB-to-UART bridge is the CH340.

Outputs

The Core board also runs the main flight software and is responsible for flight data storage. Here we used an SD card.

The board is equipped with an SBUS connector to which RC receivers can be connected, which allows for long-range telemetry. Further, the board features a connector for an onboard camera, and a connector in the board’s center for additional connectivity between the modules.

Finally, the board is equipped with an RGB-LED and an active buzzer.

Buffalo Connect

The most important connector is the - Buffalo Connect - at the bottom of the board, which is the main interface between the boards.

Through the connector, the boards are supplied with power (11.1V, 5V, and 3.3V) and communicate with each other (I2C).

Stack Fusion

Stack Fusion - Assembled

The Fusion board determines the rocket’s orientation, angular rate, position, velocity, acceleration, and altitude. It features the necessary sensors to do so and has a powerful microcontroller to process the sensor’s information to provide the Core board with readily processed sensor data.

Microcontroller

The microcontroller is the STM32F7RET6. To implement this microcontroller, we added a high-speed external crystal, the serial wire debug interface, and an additional micro-USB port for serial terminal monitoring. Further, we incorporated a special filtering circuit for the analog power supply.

Sensors

It features a 3-DOF Accelerometer and 3-DOF Gyroscope package (the BMI088), and the BMP388 barometer. The BMI088 is placed in the board’s center, while the BMP388 is placed near an air inlet. The sensors are interfaced using the SPI protocol. We added backup pull-up resistor slots to optimize the bus communication. Further, we incorporated breakouts of the sensor’s pins to be able to access them from an external source.

General Features

The board features two cut-outs for the center of gravity of this single module to be perfectly centered.

Additionally, the board incorporates three ESD protection ICs to protect the sensors and the microcontroller from electrostatic discharges that could occur by touching the board’s connectors.

The board also has an RGB-LED for status indication.

Stack Out

Stack Out - Assembled

Microcontroller

The microcontroller is the rudimentary STM32G030K8T6. We chose this low-performance microcontroller variant, as this board is only concerned with executing the commands it receives from the core board and doesn’t have to do much calculation except PWM.

This microcontroller only features one pin for external clock inputs, which is why we added an oscillator IC instead of a crystal.

Outputs

The board features five servo ports (2x ascent TVC, 2x descent TVC, and 1x TBS). They are accessible from the side, as we used 3x3 and 2x3 horizontal pin headers.

Further, it again features an RGB-LED for status indication.

The board’s five pyro channels feature high-power N-channel enhancement type MOSFETs capable of delivering 50A of current. However, the maximum current the Out board can simultaneously supply is limited by the connector to 18A. They also feature LEDs to indicate pyro channel activation. The connectors of the pyro channel are pluggable terminal blocks. They allow for easy access to the screws of the terminals in the Stack configuration.

Software

The software is the cornerstone of this project. We had to establish a state machine for the flight operation, figure out how to properly utilize the gyroscope data for active stabilization, and create a landing simulation software for evaluating landing ignition time and the thrust percentage of the TBS-controlled engine.

Additionally, we added telemetry capabilities to our flight software.

Sequence

For Buffalo L’s launch operation, we came up with a structured sequence, which we implemented in code and illustrated by the following flow chart.

Furthermore, this sequence is related to the flow chart of the launch pad described in the launchpad section of our website.

Flight Sequence - Flow Chart

Stabilization

We utilize the gyroscope data of the BMI088, integrate it, and insert it into an Euler angle orientation representation to get an orientation estimation. Previously, we used the Quaternion model. However, for our application it was soon more practical to switch to the Euler representation again. The calculation is done by the Stack Fusion board.

Based on this data, the Core board performs the standard PID algorithm.

By knowing the actual force of the rocket engine through the thrust curve, the PID gains are live adjusted. As the torque the TVC must create to keep the rocket upright shall be the same at any force, the following calculation can be made when knowing both the actual and the tuning force (drone motor thrust force at which the PID gains were tuned):

Finally, the desired TVC angle must be translated into the corresponding angles for the two servos used in the TVC system. The software must take the rocket's roll movement into account when determining these angles, as the measured orientation is referenced in an inertial frame.

Ignition Time Calculation

To resolve the issue of knowing when to ignite the descent stage engines, we came up with a landing sequence simulation. It is performed after reaching maximum apogee and includes two sperate simulation phases: free fall and powered descent.

For the free fall simulation, the rocket calculates the estimated descent rate for future time intervals by building a time grid. At maximum altitude, which also marks the beginning of the simulation, this velocity must be zero. Thereafter, it must be the integral of the total acceleration, which is the gravitational acceleration minus the deceleration caused by air resistance.

For the simulation of the powered descent, the flight computer builds another time grid. Again, the program calculates the velocities for each time entry. However, the velocity at the beginning of this phase is not zero. In fact, this velocity is unknown since it is unclear at this point when the rocket will fire its engines. Therefore, the rocket assumes that the rocket is falling with maximum free fall velocity at engine ignition for its first simulation. The rocket reaches this maximum velocity when the deceleration due to air resistance is approximately equal to the acceleration due to gravity. In the powered descent simulation, this velocity is established as the starting velocity for the simulation. The simulation predicts the future velocities, by integrating the total acceleration, which now also includes the acceleration due to the rocket engine thrust. When looking at the predicted velocities, there is a point where the velocity vector changes direction. The rocket would have the opportunity to land at this point because the velocity would be zero in the intersection between the two timestamps. The simulation evaluates the time at which this occurs and calculates the corresponding relative height difference from the ignition height by integrating the predicted velocities.

With this relative height difference at which the velocity would be zero in the descent simulation, the rocket assesses the time at which it would reach this height in the free fall simulation and reads out its predicted free fall velocity at this instance. If it is approximately equal to its maximum free fall velocity, the rocket has found the engine ignition time. If it is outside certain limits, the simulation of the powered descent starts again with this newly determined velocity. The program repeats this process until the velocity at the ignition height from the free fall simulation matches the velocity at the beginning of the descent simulation.

Throttle Calculation

The timing of the engine ignition is never perfect, as the actual environment and the model created in the simulation differ. Because of this, the rocket incorporates a TBS that can throttle one of the solid rocket engines to touch down safely. It is important to note that the engine ignition calculation must be performed assuming the engine is operated at less than 100 percent thrust. Otherwise, the TBS could not influence the result if the ignition is too late.

The throttle calculation begins after engine ignition. Consequently, it only needs the powered descent simulation. However, the simulation of the powered descent works somewhat differently than the powered descent simulation used in the calculation of the engine ignition. The descent does not start at the second zero of the engine thrust curve but at the time that has already elapsed since the engine ignition. When running this simulation, the software also knows its current velocity and altitude above the ground.  It uses this information as its starting parameters for the simulation. The flight computer runs the simulation with the currently operated thrust percentage and calculates the velocity and the altitude over time. By again detecting the time the rocket speed changes direction and evaluating the height at this point, it can be assessed if the rocket would land successfully. This calculation outputs the residual height the rocket would be at when the velocity is zero. This rest height should be zero for the rocket to land.

If this rest height is more or less than 0.1m, the rocket repeats this simulation with another thrust percentage, and the rest height is reevaluated. This is done iteratively to the point where the rest height is within these boundaries. When this is the case, the rocket knows the thrust percentage to land the rocket safely and translates it into the servo angle of the TBS.

This software is utilized to continuously simulate and adjust the thrust percentage of the TBS based on the current altitude, speed, and other factors during the entire powered descent, effectively functioning as an altitude control system.

Telemetry

As mentioned, our previous control and telemetry system (CTS) based on Bluetooth has some major drawbacks with the two main disadvantages being its limited control options and short operating range of 30m.

With our rockets getting more sophisticated and expensive, this had to change. So, we have come up with JM Mission Control. JM Mission Control is our new intuitive long-range ground control system based on RC communication. It consists of the FrSky X9D RC transmitter and the ultra-lightweight FrSky Archer Plus RS receiver.

With this new setup, we can now manage our rocket reliably over a distance of more than 2 kilometers with a possible upgrade to the R9M module for ranges up to 10s of kilometers.

After completely revamping the operation procedure and programming custom telemetry screens, we now have a modern, intuitive, and reliable ground control station that will accompany us on many future flights.

With JM Mission control, we can launch and abort the rocket remotely. Further, we can adjust the PID gains of the rocket’s stabilization system during tuning. Finally, we can receive telemetry data such as altitude and orientation.

Testing

Tuning Tests

Buffalo L on tuning test stand

We built this tuning test stand back in 2020 with which we can experimentally tune the PID gains of our rockets. When doing so, the rocket is mounted onto a gimbal, allowing free movement in the pitch and yaw axis. By producing a thrust with the help of a drone motor similar to the thrust of the rocket engine, we can adjust the PID gains and see how they relate to the rocket's stability. Previously, we used two counterrotating drone motors to counteract the resulting torque through the drone motor acceleration.  For the Buffalo L testing, we use just one drone motor since the resulting roll movement is assimilated by the gimbal.

Here’s a video of one of the tests:

Flight Tests

Flight 1

Launch date: January 14th, 2024

Weather: -5°C (-11°C wind chill), 80 % humidity (severe ice buildup on drone wing, fogy about 40m sight), 15 km/h wind

Vehicle mass: 728g

Flight computer: Buffalo Rev. E

Engine configuration: 4x D3-P

Altitude: 70 – 80m (expected) | 1m (reached)

Objective: Actively stabilized ascent, stage, parachute, descent fins, landing legs deployment, and apogee evaluation

Successes: Successfully in-flight abort detection, good orientation assessment, and seemingly good TVC corrections, deployed descent fins and landing legs.

Problems: The engine ignitor likely dropped out of the engine before ignition and only three of four engines ignited. Bad weather conditions (cold, humidity) lead to slow servo movements in the launchpad and TVC. The backup parachute did not deploy because of insufficient pyro time. The height of the anemometer stand can limit the rocket in improbable situations.

Flight 2

Launch date: January 21st, 2024

Weather: -2°C (sunny thus wind chill not as bad), low humidity, 10 km/h wind

Vehicle mass: 728g

Flight computer: Buffalo Rev. E

Engine configuration: 4x D3-P

Altitude: 70 – 80m (expected) | 40.8m (reached)

Objective: Actively stabilized ascent, stage, parachute, descent fins, landing legs deployment, and apogee evaluation

Successes: Successful actively stabilized ascent for the full flight duration, despite severe roll. Successful stage separation, parachute deployment, fins deployment, and landing leg deployment. Effective recovery of the descent and ascent stage. Working maximum altitude evaluation algorithm.

Problems: No problems during the flight attempt.

Video of Launch One & Two

Flight 3

Launch date: February 25th, 2024

Weather: 5°C, low humidity, low wind (<5 km/h)

Vehicle mass: 728g (dry mass)

Flight computer: Buffalo Rev. E

Engine configuration: 5x D3-P

Altitude: 100 – 200m (expected) | 60.6m (reached)

Objective: Actively stabilized ascent, stage, parachute, descent fins, landing legs deployment, and apogee evaluation

Successes: Successful mechanism deployment and relatively stable flight.

Problems: Massive altitude losses due to long hold-down clamp time and later instabilities during flight. The rocket landed in a tree.

Video of Launch Three

Flight 4

Launch date: May 27th, 2024

Weather: —-

Vehicle mass: 728g (dry mass)

Flight computer: Buffalo Stack

Engine configuration: 4x D3-P

Altitude: 50-70m (expected) | 67.4m (reached)

Objective: Actively stabilized ascent with the new flight computer, sequences deployment of the stage, descent fins, parachute, and landing legs, parachute and landing legs altitude-based deployment, and first RC-controlled flight.

Successes: first RC-controlled launch, successful stabilization with the new flight computer.

Problems: Stage separation was not smooth due to ascent stage parachute clogging. Rocket landed in a tree.


Project by Johannes Moser and Michael Feßl

Previous
Previous

RockeTree

Next
Next

Launchpad