High-Power Rocketry

Having been a member of Cambridge University Spaceflight (CUSF) during my first year as an undergraduate student, I thought it would be fun to document all the knowledge I’ve acquired with regards to the art of high-power rocketry. A good summary of the basics of HPRC can be found in this NASA document which is meant to accompany this playlist of YouTube videos. This document on rocket anatomy from the National Association of Rocketry (NAR) is also quite thorough.

To set the stage, high-power rocketry is essentially just a more powerful version of model rocketry. In the United Kingdom, high-power rocketry is overseen by the United Kingdom Rocketry Association (UKRA), which means that if one wishes to fly a high-power rocket in the UK, one has to first obtain certification from UKRA. Exactly what kind of certification is required depends on the level and class of the rocket motor (or engine) that one is using (for model rockets, such certification is not necessary). These are simply intervals of rocket motor impulse \(J=\int_0^{t_{\text{rocket motor burnout}}}F_{\text{thrust}}dt\), doubling each time \([J_*,2J_*]\mapsto [2J_*,4J_*]\), and for high-power rocketry are:

  • Level \(1\): \(H\)-class rocket motors \(J_H\in[160,320]\text{ N}\cdot\text s\), \(I\)-class rocket motors \(J_I\in[320,640]\text{ N}\cdot\text s\)
  • Level \(2\): \(J\)-class rocket motors \(J_J\in[640,1280]\text{ N}\cdot\text s\), \(K\)-class rocket motors \(J_K\in[1280,2560]\text{ N}\cdot\text s\), \(L\)-class rocket motors \(J_L\in[2560,5120]\text{ N}\cdot\text s\)
  • Level \(3\): \(M\)-class rocket motors \(J_M\in[5120,10240]\text{ N}\cdot\text s\), \(N\)-class rocket motors \(J_N\in[10240, 20480]\text{ N}\cdot\text s\), \(O\)-class rocket motors \(J_O\in[20480, 40960]\text{ N}\cdot\text s\)

At CUSF, the rocket I have been working on, called Panthera, will be powered by a level \(2\) \(L\)-class rocket motor, the highest class within level \(2\). More specifically, I specialize in the avionics subsystems of the rocket rather than aerostructural subsystems. That being said, I will provide some comments on the aerostructure since it is important to have a basic idea of the rocket’s anatomy and where the avionics fit within the bigger picture.

A fundamental principle of high-power rocketry (and engineering more generally) is: “test what you fly and fly what you test”.

Aerostructures

The following are standard subassemblies that make up the aerostructure of a high-power rocket.

  • Nose cone: a bit of a misnomer since it doesn’t necessarily (indeed it usually isn’t) a cone per se. The most common geometry is the tangent ogive nose cone (pronounced OH-JIVE), namely the solid of revolution formed from two arcs of circles with diameters greater than the base diameter \(D\) of the nose cone. More generally, the selection of nose cone geometry depends on how simple it is to manufacture (or if sourced commercially, then what’s available on the market) and if simple enough, then on its drag characteristics. This is actually not quite as simple as just “minimizing the drag coefficient \(C_D\)”. The problem is that the total drag force \(\textbf F_d=-\frac{1}{2}C_D(\text{Re}, v/c)\rho A\textbf v^2\) acting on the rocket is the sum \(\textbf F_d=\textbf F_{d,\text{skin}}+\textbf F_{d,\text{form}}\) of skin friction drag \(\textbf F_{d,\text{skin}}\) which dominates for subsonic speeds (less than Mach \(1\)) and is due to the viscosity \(\eta\) of the boundary layer around the rocket and form drag \(\textbf F_{d,\text{form}}\) due to shock waves, eddies, vortices and other turbulent sources of a pressure differential \(\Delta p\) across the rocket which therefore means that form drag dominates at transonic/supersonic/hypersonic speeds (greater than Mach \(1\)). OpenRocket simulations suggested that Panthera’s speed was expected to peak around Mach \(1.74\), so when selecting the nose cone geometry it was essential to pay greater attention to minimizing the form drag \(\textbf F_{d,\text{form}}\). The fineness ratio of the nose cone is defined by \(\phi:=\frac{L}{D}\) where \(L\) is the nose cone length and \(D\) its base diameter and in general a greater fineness ratio \(\phi\) means a “sleeker” nose cone (I think sleekness ratio would have been a better name) and reduced form drag \(\frac{\partial F_{d,\text{form}}}{\partial \phi}<0\). However, for \(\phi>5\), the reduction in form drag becomes negligible as competing factors begin to dominate (for instance, the lateral surface area of a perfectly conical nose cone is \(A=\frac{\pi D^2}{4}\sqrt{1+4\phi^2}\) and \(F_{d,\text{skin}}\propto A\) while the mass will increase too). Another less important dimensionless ratio is the bluffness ratio \(b:=d/D\) where \(d\) is the diameter of curvature at the nose cone tip. In general, \(b\in [0.1, 0.2]\) is found to empirically minimize form drag. In fact, mathematically one can show that for fixed \(L\) and \(D\) the optimal geometry is the so-called von Karman nose cone (related to the Sears-Haack body) and this is what Panthera uses (with fineness ratio \(\phi=5\), often phrased as being “\(5:1\)”). The material is a G\(12\) fiberglass composite (since composite materials allow simultaneously both strength and light weight based on volume fraction although the dust from the fiberglass is a respiratory hazard) with an aluminum plating (for better heat dissipation).
  • Body tube (also called airframe): basically a long cylinder that defines the basic structure of the rocket. Actually, Panthera uses \(2\) body tubes as can be seen in the engineering drawing above. The upper \(575\text{ mm}\) body tube is connected to the lower \(1200\text{ mm}\) body tube via a coupler tube (with the precise connections explained below). Like the nose cone, both body tubes are made out of G12 fiberglass. The lower body tube houses the rocket motor along with the minimum diameter slimline motor retainer, with a \(1/4\) stainless steel (SS) eyebolt. There are also tang fin slots onto which the fins will be epoxied. These can be custom made using a jig and power tools with a drill template wrapped around the body tube to guide the drilling.
  • Fins:
  • Coupler tubes: cylindrical tube used to join body tube segments together. If each body tube has diameter \(D\), then the length \(L_C\) of the coupler tube should satisfy \(L_C\geq 2D\) and also \(D_{\text{outer, coupler tube}}=D_{\text{inner, body tube}}\). The requirement on the length \(L_C\) makes coupler tubes convenient avionics bays as is the case for Panthera. Moreover, part of the job of the avionics is to trigger e-matches to ignite black powder which is usually close to the coupler tube since that’s roughly where the separation of the body tubes will occur. The upper body tube is secured to the coupler tube with plastic rivets since they need to stay intact together during separation while the lower body tube is secured to the coupler tube by simply two nylon screws functioning as shear pins to be sheared by the pressurization of the black powder after ignition. Often, a collar of body tube material is epoxied in the center of the coupler tube for easy access to avionics bay switches and for pressurization.
  • Rocket motor casing: confusingly, the use of the word “motor” here does not mean an electric motor, but rather is just a synonym for “engine” (thus, I feel that “rocket engine” is a more suitable term). More precisely, the convention in high-power rocketry circles seems to be that if the rocket acquires thrust via a liquid propellant (e.g. liquid nitrogen \(\text N_2(\ell)\)), then it is called a rocket engine whereas if it’s a solid propellant (e.g. ammonium perchlorate composite propellant (APCP)), then it’s called a rocket motor. Panthera uses a Cesaroni 4864L2375-WT rocket motor casing.
  • Rocket motor retainer: purpose is to “retain” the rocket motor casing during flight (don’t want pressurization to eject it).
  • Centering rings: not applicable to Panthera which is a minimum diameter rocket (i.e. the body tube is also the motor tube) but for rockets which are not minimum diameter, these are used to center tubes nested within the body tube, as the name suggests.
  • Bulkhead plates: these are for capping coupler tubes, with \(D_{\text{bulkhead plates}}=D_{\text{inner, coupler tube}}\). On Panthera, the coupler tube housing the avionics bay will be capped by two carbon fiber bulkhead plates joined by two M\(5\) threaded rods (meaning \(5\text{ mm}\) diameter threads) with washers and nuts to hold them together, spaced equidistant between the center and the circumference. The upper bulkhead plate will also have an M\(10\) eye bolt to attach to the shock cord.
  • Booster/Fin Can: the purpose of fins is to stabilize the rocket.
  • Launch lug (rail buttons):
  • Shock cord/parachutes: Panthera will use a Kevlar shock cord, with eye-ring attachment to the eye ring or the motor retainer.

Avionics

  • Avionics is just a portmanteau of aviation electronics. Since I was chiefly responsible for the avionics subsystems of Panthera, I therefore have the most to say about it 🙂
  • In general, the methodology was: decide what kind of generic sensors and rocketry-specific things are needed, go shopping on Amazon, Pi Hut, Mouser, PJRC, Arduino, ELEGOO, Adafruit, WizardRockets, BlackCat Rocketry, etc. for these sensors (I should confess I’m quite terrible at shopping for anything in general, I tend to spend way too much time sifting and carefully considering all the specs/options/datasheets, etc….in the future, I think a Pugh decision matrix and the 1/e rule would be a much more rational way to shop).
  • A lot of avionics is just embedded systems programming with digital electronics.
  • Level shifters, logic levels, converters, etc.
  • Antennas: an antenna is any conductor whose purpose is to transmit or receive radio waves (thus, if the antenna’s purpose is to transmit radio waves, then the driven element of the antenna will be connected via a feedline/transmission line such as a coaxial cable to a radio transmitter, whereas if the antenna’s purpose is to receive radio waves, then its driven element will be connected via feedline to a radio receiver). With regards to Panthera, \(3\) distinct antennas were involved. The first was a passive GPS antenna whose function was to receive radio waves from satellite constellations (e.g. GPS, GLONASS, Bei Dou, etc.) in orbit around Earth. The second was a Long Range (LoRa) antenna (\(f=433\text{ MHz}\) whose function was to transmit radio waves down to the ground. Finally, the third antenna was an ultra high frequency (UHF) \(f=433\text{ MHz}\) yagi-uda antenna whose function was to receive the transmitted \(f=433\text{ MHz}\) radio waves from the LoRa antenna. A yagi-uda antenna consists of a (parasitic) reflector, a driven element, and one or more (parasitic) directors all mounted parallel to each other on a boom. For a given frequency \(f\) to be received, this corresponds to a wavelength \(\lambda=c/f\), and the specific design characteristics of such an antenna for maximization of gain are then specified as a function of \(\lambda\).
  • When designing an electric circuit, one should first focus solely on the topology of the circuit (in KiCad, this corresponds to first laying out the symbols for microcontrollers, sensors, power supplies, etc. and subsequently connecting pins together as per whatever serial communication protocol is involved). Only after the topology has been taken care of does one then proceed to optimize the geometry of the electric circuit (minimize cross talk, parasitic effects, etc.) which in KiCad means figuring out how everything will pack together in physical space on a printed circuit board (PCB).

Serial Communication Protocols

  • A serial communication protocol is any standardized way for controllers to communicate data serially with peripherals. This is in contrast to parallel communication protocols (this is completely analogous to how components in an electric circuit can be in series or in parallel topologies). Serial communication protocols seem to be more popular. They require fewer wires (because all data communication occurs serially across the same wires) but as a result are slower than parallel communication protocols.
  • Abstractly, data is just sequences of binary digits (bits). Physically, data is digital voltage signals.
  • Communicate = Transmit + Receive
  • Often data which is communicated serially is called “serial data” although it makes more sense to say that one is communicating data serially (as an adverb) rather than talking about communicating serial data (as an adjective).
  • There are synchronous serial communication protocols (transmitters and receivers both share a serial clock ( and asynchronous serial communication protocols.

Universal Asynchronous Receiver-Transmitter (UART)

  • Universal asynchronous receiver-transmitter (UART) is a serial communication protocol (mostly superseded by universal serial bus (USB) these days) in which one has the usual VCC/GND power pins, and RX-TX and TX-RX between only two peripherals. Put bluntly, UART is about the most obvious/simplest/minimalistic serial communication protocol one would naturally think of, since the very concept of communication basically just means transmitting and receiving information. Can describe the inner workings more precisely. Simplicity is both its pro and its con. This is what the ublox MAX-M8Q GPS chips use (their \((r,\lambda,\varphi)\) accuracy is stunning, around \(5\) decimal places even when indoors).

Inter Integrated Circuit \(I^2C\)

  • Inter Integrated Circuit (\(I^2C\)) is a synchronous serial communication protocol. The idea is that there is one central device called the controller (formerly called a master) such as an Arduino Uno microcontroller which transmits and receives data serially to and from peripherals (formerly called slaves). in which one has the usual VCC/GND power pins for each peripheral and the microcontroller, but also there are pullup resistors and all the peripherals connect to a common \(I^2C\) bus via a serial data (SDA) line and also it’s synchronous so there is a serial clock (SCL) line as well.
  • The ublox MAX-M8Q GPS chips technically also work with \(I^2C\) in addition to UART, but the previous electronics team member working on Aquila mentioned that he could not get it to work on \(I^2C\). It is also the (American? European?) industry, science, medicine (ISM) band frequency \(f_{\text{ISM}}=433\text{ MHz},\lambda_{\text{ISM}}=0.7\text{ m}\) of the radio wavepackets that the LoRa module on the rocket transmits via an antenna, and which the LoRa module on the ground station receives via an identical antenna.
  • Serial Peripheral Interface (SPI) is a serial communication protocol with VCC/GND as usual, and also MOSI/MISO lines and stuff.
  • By uploading the following C++ sketch onto the Teensy \(4.1\) board, the hex(adecimal) \(I^2C\) address of the BME\(280\) barometer breakout board was located at \(0x76=76_{16}=118=1110110_2=0b1110110\) while the \(I^2C\) address of the MPU\(6050\) breakout board was located at \(0x68=68_{16}=104=1101000_2=0b1101000\).
  • In what follows, all the discussion is pertaining to through-hole soldering (which is what it sounds like). Unfortunately I did not get to do any surface mount device (SMD) soldering due to the expensive requirement of a microscope.
  • In general, I find that a repeated stabbing technique works well. To minimize surface energy \(V_{\text{surface}}\), enough shaking will cause the solder to naturally creep into the desired regions and completely fill it (correction: actually I found that a certain “rolling technique” with the soldering iron is even more effective and gives very nice finish, it is easy to forget that \(\phi\) degree of freedom of the soldering iron in your hand). It is true that if too thick a layer of oxidized metal is formed on the surface of the soldering iron tip, then this will reduce the thermal conduction (see Fourier’s heat conduction law), however what I find empirically is that if there is initially a small layer of liquid solder adhering to the soldering iron tip, then this can actually induce a sort of superheating effect (similar to how heterogeneous nucleation reduces supercooling) so that the solder’s melting point \(T_{(s)\to(\ell)}\) is higher than usual. There is probably some argument to be made here regarding interfacial surface energy minimization, though I’m not too sure.
  • Always have a digital multimeter nearby for checking electrical continuity.
  • For peripheral devices with pins, always solder from the side the pins poke out and similarly use that side for any connections with other terminals. Having some wire around and a crimper/wire stripper is very handy, allows arbitrary routing of terminals through space (although if compactness is especially desired, then that just speaks to the power of PCBs. Also, preplanning and drawing the schematic for a PCB really does help a lot cf. doing it live as I found out today, there’s just a lot of factors to consider, can easily go wrong. Not only this but the PCB is generally more robust than trying to solder like that.
  • Magnet wire is too much hassle stripping the insulation off each time; again, PCB is best.
  • For 3d printing the boards, ended up realizing only after a 5-hour print that hole for M5 threaded rod was too small…learned to print smaller versions of something first (quick 10 minute prints) to test for the tolerance before scaling up. Modular approach to engineering.
  • Group similar tasks together, for example first cut all the magnet wire needed, then strip all, then solder altogether, etc. much more efficient this way.
  • Knowing that the avionics board was meant to go together

Transistors

  • The simplest kind of transistor to understand is the bipolar junction transistor (BJT) (the reason for this name will become apparent in what follows). Among BJTs, the most common are NPN-type BJTs. These consist of two N-type semiconductors (the heavily doped, very \(e^-\)-dense emitter \(E\) and the spacious, less \(e^-\)-dense collector \(C\)) sandwiching P-type semiconductor in the middle (the very thin and lightly doped, hole-dense base \(B\)). Ordinarily, applying a voltage \(V_{C-E}\) across the NPN-type BJT will not induce a conventional electric current \(I_{C\to E}\) due to the presence of depletion regions at both \(PN\)-junctions in the NPN-type BJT. However the key principle of the NPN-type BJT is that if one also applies a much smaller voltage \(V_{B-E}\), then the thinness and doped nature of the P-type base semiconductor wafer means that the depletion regions vanish and very little electron-hole recombination can occur, so a small conventional electric current \(I_{B\to E}\) will flow, inducing a much greater collector current \(I_{C\to E}=\lambda I_{B\to E}\) to flow (electron avalanche!) where the gain factor \(\lambda\) is typically of order \(\lambda\sim 100\). In this way, an NPN-type BJT can be thought of as a current-controlled switch, or as a current amplifier. This is commonly reflected in the following circuit schematic symbol:
  • A metal-oxide semiconductor field-effect transistor (MOSFET) achieves the same sort of thing as a BJT. The only difference is the terminology and the mechanism. In a MOSFET, one has the source (analogous to the emitter in a BJT), the gate (analogous to the base in a BJT) and the drain (analogous to the collector in a BJT), although there is also a substrate. It’s called “field-effect” cuz it relies on an \(\textbf E\)-field. Also, rather than being current-controlled, it’s voltage-controlled (i.e. gate voltage \(V_G\) determines pinch-off from ohmic regime to saturation. There are also enhancement and depletion, N-channel and P-channel MOSFETs.

Kalman Filtering

  • Acquiring an accurate picture of Panthera’s flight profile as a function of time is important for two reasons. The less important reason is because naturally one would be interested in knowing how it flew and how well simulations were able to predict it so that future launches can be improved. The more important reason in this case is because one would like to know when Panthera reaches a certain altitude at which point one would like to have a backup system for igniting the electric match and exploding the black powder to induce main parachute deployment in case the main flight computer (the Eggtimer Quark) malfunctions.
  • The first step with Kalman filtering is to derive a linear dynamical model (LDM) for the time evolution of the rocket’s state vector. For simplicity, one can pretend that the acceleration \(a\) of Panthera is approximately constant throughout the entire flight (this is of course not true, for instance OpenRocket simulations suggest that the acceleration is expected to peak at around \(a\approx 40 g\) during launch but then decay down to \(a\approx -g\) as the rocket nears apogee since the rocket essentially just becomes a free fall projectile). Nevertheless, one should not fuss too much about the accuracy of the theoretical model (it just has to be roughly accurate on average).
  • The next step is to actually decide on a suitable state vector for the system. Ultimately, this depends on what parameters one is interested in estimating about Panthera. In this case a suitable state vector would be \(\begin{pmatrix} x\\ v \\ a\end{pmatrix}\in\textbf R^3\). Under the constant acceleration assumption earlier, the preliminary recursive state estimate based on the LDM alone is:

\[\begin{pmatrix} \hat x^{\text{LDM}}_{t}\\ \hat v^{\text{LDM}}_{t}\\ \hat a^{\text{LDM}}_{t}\end{pmatrix}=\begin{pmatrix}1 & \Delta t & \Delta t^2/2 \\ 0 & 1 & \Delta t \\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix} \hat x_{t-\Delta t}\\ \hat v_{t-\Delta t}\\ \hat a_{t-\Delta t}\end{pmatrix}\]

  • The variance-covariance matrix of the linear dynamical model estimate is:

\[\text{varcov}\begin{pmatrix} \hat x^{\text{LDM}}_{t}\\ \hat v^{\text{LDM}}_{t}\\ \hat a^{\text{LDM}}_{t}\end{pmatrix}=\begin{pmatrix}1 & \Delta t & \Delta t^2/2 \\ 0 & 1 & \Delta t \\ 0 & 0 & 1\end{pmatrix}\text{varcov} \begin{pmatrix} \hat x_{t-\Delta t}\\ \hat v_{t-\Delta t}\\ \hat a_{t-\Delta t}\end{pmatrix} \begin{pmatrix}1 & 0 & 0 \\ \Delta t & 1 & 0\\ \Delta t^2/2 & \Delta t & 1\end{pmatrix}+\text{varcov}\begin{pmatrix} \delta\hat x^{\text{LDM}}_{t}\\ \delta\hat v^{\text{LDM}}_{t}\\ \delta\hat a^{\text{LDM}}_{t}\end{pmatrix}\]

where one can assume that the variance-covariance matrix of the LDM noise is dominated by the assumption of constant acceleration, so

\[\text{varcov}\begin{pmatrix} \delta\hat x^{\text{LDM}}_{t}\\ \delta\hat v^{\text{LDM}}_{t}\\ \delta\hat a^{\text{LDM}}_{t}\end{pmatrix}=\begin{pmatrix} 0&0&0\\0&0&0\\0&0&\sigma^2_{LDM}\end{pmatrix}\]

  • The lowest variance/covariance estimator for the state at time \(t\) is then the weighted average of the two:

\[\begin{pmatrix} \hat x^{\text{LDM}}_{t}\\ \hat v^{\text{LDM}}_{t}\\ \hat a^{\text{LDM}}_{t}\end{pmatrix}=(1-K_tH_t)\begin{pmatrix} \hat x^{\text{LDM}}_{t}\\ \hat v^{\text{LDM}}_{t}\\ \hat a^{\text{LDM}}_{t}\end{pmatrix}+K_t\begin{pmatrix} \hat x^{\text{sensors}}_{t}\\ \hat v^{\text{sensors}}_{t}\\ \hat a^{\text{sensors}}_{t}\end{pmatrix}\]

where the Kalman gain is given by:

\[K_t=\text{varcov}\begin{pmatrix} \hat x^{\text{LDM}}_{t}\\ \hat v^{\text{LDM}}_{t}\\ \hat a^{\text{LDM}}_{t}\end{pmatrix}H_t^T \left(H_t\text{varcov}\begin{pmatrix} \hat x^{\text{LDM}}_{t}\\ \hat v^{\text{LDM}}_{t}\\ \hat a^{\text{LDM}}_{t}\end{pmatrix}H_t^T+\text{varcov}\begin{pmatrix} \delta\hat x^{\text{sensors}}_{t}\\ \delta\hat a^{\text{sensors}}_{t}\end{pmatrix}\right)^{-1}\]

and \(H_t:\begin{pmatrix} x\\ v\\ a\end{pmatrix}\mapsto \begin{pmatrix} x\\ a\end{pmatrix}\) is just a matrix specific to the types of sensor measurements that are being fused (in this case, only altitude from the barometer and acceleration from the accelerometer, so \(H_t=H=\begin{pmatrix}1&0&0\\0&0&1\end{pmatrix}\)). Here, because the barometer and accelerometer measurements may be assumed to be uncorrelated with each other, the variance-covariance matrix of the sensor noise is of the form:

\[\text{varcov}\begin{pmatrix} \delta\hat x^{\text{sensors}}_{t}\\ \delta\hat a^{\text{sensors}}_{t}\end{pmatrix}=\begin{pmatrix}\sigma^2_{\text{barometer}} & 0 \\ 0 &\sigma^2_{\text{accelerometer}}\end{pmatrix}\]

Recovery

distinction between single deployment recovery system and dual deployment recovery system.

This entry was posted in Blog. Bookmark the permalink.

One Response to High-Power Rocketry

  1. Hello There. I found your blog using msn. This is a very well written article. I抣l be sure to bookmark it and return to read more of your useful info. Thanks for the post. I will certainly return.

Leave a Reply

Your email address will not be published. Required fields are marked *