### Differential thrust

###### Wed 27 July 2022
Differential thrust (Photo credit: GE)

## Principle overview

The basic principle is to create a torque offsetting the total thrust. This offset is done by throttling thrust of multiple engines whose thrust is not align with gravity center.

On the drawing, the thrust is aligned with CG for the left engine and not for the right one. If both engines were mounted like the right one, torque produced by all engine would cancelled out.

Basic torque illustration

Note that some rockets (Ariane 4, Long March 5B,...) have there engines mounted like the left one, partially to minimize torque in case of engine out capability.

## Mathematical approach

This section sum up what I think is true and is not based on any sources.

Torque authority is maximal when one engine is at its minimal power setting and the opposite one is at its maximal power setting. But, in this case, the total thrust is not modular.

• $$T \in [0, 1]$$: setpoint value for thrust level
• $$D \in [-1, 1]$$: setpoint value for direction (from full left (-1) to full right (+1))
• $$F_l$$ (resp. $$F_r$$) : setpoint for thrust for left (resp. right) engine.
• $$T_{min} (\in [0, 1])$$: minimal thrust achievable (hopefully low)
• $$T_{max} = 1$$: maximal thrust

Those conventions are made without loss of generality over possible thrusts values (simple multiplication by rated thrust)

Without any limitation, thrust would be:

\begin{align*} F_l = T + D\\ F_r = T - D \end{align*}

But in real life, it would look like:

\begin{align*} F_l = \max(\min(T + D, T_{max}), T_{min})\\ F_r = \max(\min(T - D, T_{max}), T_{min}) \end{align*}

Now let's go to python implementation and let's consider functions taking as input direction and thrust setpoint values.

T_MAX = 1
T_MIN = .1

def basic_thrust(d, t):
fl = max(min(t + d, T_MAX), T_MIN)
fr = max(min(t - d, T_MAX), T_MIN)
return fl, fr


And now let's consider both cases where direction authority is prioritized (modulate thrust to allow the required thrust difference) and where thrust authority is prioritized (modulate thrust to have the required total thrust even if difference between both engines is low). At least one engine's thrust will be modulate to achieve direction (resp. thrust) setpoint value, i.e. have the required thrust difference (resp. total thrust).

T_MAX = 1
T_MIN = .1

def thrust_priority(d, t):
fl = t + d
fr = t - d

# ensure fr + fl = 2 * t
if fl > T_MAX:
fl = T_MAX
fr = T_MAX * (1 - t / 2)

elif fr > T_MAX:
fl = T_MAX
fl = T_MAX * (1 - t / 2)

elif fl < T_MIN:
fl = T_MIN
fr = max(T_MIN, t / 2)

elif fr < T_MIN:
fr = T_MIN
fl = max(T_MIN, t / 2)

return fl, fr

def direction_priority(d, t):
fl = t + d
fr = t - d

# ensure abs(fl - fr) = 2 * d
if fl > T_MAX:
fl = T_MAX
fr = max(T_MIN, T_MAX - 2 * d)
elif fr > T_MAX:
fr = T_MAX
fl = max(T_MIN, T_MAX - 2 * d)
elif fl < T_MIN:
fl = T_MIN
fr = min(T_MAX, T_MIN + 2 * d)
elif fr < T_MIN:
fr = T_MIN
fl = min(T_MAX, T_MIN + 2 * d)

return fl, fr


## Real life example

The differential thrust mechanism to control direction (roll, pitch) has been used in real life. The most famous example is the soviet rocket N-1. Using this on the first stage is courageous as usually this stage require full thrust during the first part of its flight, leaving almost no thrust marge for direction authority. This is even more surprising as liquid propellant rocket engines with preburner or gas generator <https://en.wikipedia.org/wiki/NK-33c>_ takes time to throttle (time to change velocity of heavy turbines).

Another more mature example is the Space X crew dragon escape system's engines. The goal here is to control the orientation of the capsule during emergency separation event. Given the aerodynamic provided by the trunk, this application seems less critical than the N-1 rocket. Moreover, the pressure fed engines are more reactive.

Also it may not be obvious, this kind of reasoning is also applicable to differential braking (e.g. for taxiing a DC-3) and to flight control surfaces for which bot sides obey both a simultaneous deflection and a differential one. I thin of flaperon (flap setpoint for $$t$$, aileron setpoint for $$d$$) and of spoilers when used both for airbrake function (setpoint for $$t$$) and roll function (setpoint for $$d$$)

Category: aviation Tagged: aviation Fight dynamics rocket science

### Voting method reflections

###### Fri 28 January 2022
Transparent voting box (Photo credit: Wikipedia)

This article presents personal thoughts on voting methods. More specifically, it presents guarantees offer by the traditional non-electronic voting method and won’t elaborate on electronic voting.

## Specifications

First, let’s define few specifications I’d like to develop.

• any voter can understand how …

Category: reflections Tagged: geopolitics reflection vote

### Tkinter and Asyncio

###### Thu 18 February 2021
Asynchronous process results waiting (Photo credit: Wikipedia)

Graphical interfaces are typically the kind of object that can take advantage of asynchrounous programming as a GUI spend lot of time waiting for user input.

Tkinter <https://docs.python.org/3/library/tkinter.html#module-tkinter>_ is a kind of standard for graphical …

Category: how to Tagged: python asyncio

### Latex generator using Jinja

###### Wed 11 November 2020

The goal is to generate a PDF file using python. I decided to generate $$\LaTeX$$.

## Pipeline

I decided to use jinja as its documentation mention it.

\begin{equation*} \boxed{\text{Jinja template}} \xrightarrow[\text{python}]{} \boxed{\LaTeX} \xrightarrow[\text{pdflatex}]{} \boxed{\text{PDF}} \end{equation*}

The …

Category: LaTeX Tagged: python LaTeX Jinja

### HTTP to HTTPS

###### Fri 24 July 2020
Public key (Photo credit: Michael Drummond)

The goal was to migrate from HTTP to HTTPS

## HTTPS overview

The HTTPS protocol rely on TLS (previously SSL) to ensure data integrity (data cannot be modified unnoticed), confidentiality (requested URL and content are only known by end points) and authentication (end points are …

Category: network security Tagged: Unix Debian tools how to network security

### Wikipedia crawling (part II)

###### Thu 11 June 2020
Crawling (Photo credit: Wikipedia)

Wikipedia has specific infobox templates. This is the normalized way to enter specification inside wikipedia articles. It provides templates with already defined fields. For example the planet template has fields such as periapsis or …

Category: how to Tagged: python wikipedia html data retrieval