Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project status: archived

Research implementation of the Joint-Flow Capture Governor
for robust terminal control of unpowered fixed-wing robots

Cover light Cover dark

Python 3.12

About

Moewe accompanies the draft manuscript Joint-Flow Capture Governor (JFCG) for Robust Terminal Control of Unpowered Fixed-Wing Robots. It investigates the final approach of an unpowered aircraft when recovery distance is limited, commands are delayed, airflow varies across the airframe, and the complete aircraft must safely pass through a gate or make an admissible first landing contact.

Research Status

Moewe was archived because its intended advantage could not be demonstrated convincingly within the available facility.

The arena conflicts with the claimed advantage. The usable flight length is only 5.4 m: near 6 m/s, a traversal lasts about 0.9 s and permits roughly nine governor updates. A 140 ms command-onset delay consumes about 0.84 m, while the 240 ms prediction horizon spans about 1.44 m. JFCG is intended to make repeated, recursively safe corrections as distance decreases. However, only a few commands can become effective here, making a successful run difficult to distinguish from launch stabilisation followed by one terminal correction.

The novelty is limited. The distinctive contribution is the integration of shared centre-flow and spatial-gradient factors with delayed-command propagation, full-body terminal geometry, a distance-indexed capture cover, and a stored backup reference. Its underlying ingredients—reference governors, zonotopes, reachability, local feedback, and a small online QP—are established methods. Without ablations showing that the joint-flow structure materially enlarges the certified region or improves flight outcomes, the work only demonstrates a thoughtful integration instead of a strong state-of-the-art advance.

Method and Timing

JFCG supervises the nominal controller's aileron, elevator, and rudder references:

  • Before flight: a nonlinear verifier propagates state, shared centre-flow and gradient uncertainty, local strip remainders, delayed commands, and swept-airframe geometry. It stores a distance-indexed capture cover and a feasible backup reference. The 240 ms horizon uses twelve 20 ms stages, covering one 100 ms governor period plus the maximum 140 ms command-onset delay.
  • During flight: the motion-based observer updates its containing state and centre-flow set every 5 ms; nominal feedback runs every 20 ms; and every 100 ms a three-variable QP keeps or minimally adjusts the proposed references using the stored certificate.
  • At the terminal event: the complete aircraft must pass through the gate, or the permitted landing points must make first contact while the remaining body, footprint, velocity, and attitude constraints hold. Invalid estimates, queues, flow, lookup, or containment return no JFCG reference and require a separate flight-stack contingency.

Repository Guide

Path Purpose
models/ Aircraft dynamics, state, rigid-body geometry, and updraft utilities
control/flow.py Dependency-preserving local-flow representation
control/observer.py State and centre-flow integrity interface
control/predictor.py Generated aircraft core and runtime affine predictor
control/oracle.py Offline validated nonlinear propagation
control/capture.py Distance-indexed capture compilation
control/governor.py Deterministic three-reference active-set governor
control/missions.py Gate, landing, free-space, and terminal constraints
simulation/ Arena and terminal-event adapters
tests/ Unit, soundness, integration, and runtime-isolation tests

Setup

The archive was last verified with:

Package Version
Python 3.12.11
NumPy 2.2.6
SciPy 1.16.3
pytest 9.0.3

Clone and create the environment:

git clone https://github.com/GH-X-ST/Moewe.git
cd Moewe
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install numpy==2.2.6 scipy==1.16.3 pytest==9.0.3