Code Monkey home page Code Monkey logo

aircraft-control-allocation's Introduction

Simulation Files Of Aircraft Control Allocation

the book "Aircraft Control Allocation" by Wayne Durham, Kenneth A. Bordignon and Roger Beck, which provide this files on the companion site . this repos. use this files to developed some new method about control allocation. The master branch of this repos. is default files in the simulation, but the other branch is change by mengchaoheng.

DESCRIPTION

Aircraft Control Allocation addresses the problem of allocating redundant flight controls. It provides introductory material on flight dynamics and control to provide the context, and then describes in detail the geometry of the problem. The book includes a large section on solution methods, including ‘Banks’ method’, a previously unpublished procedure. Generalized inverses are also discussed at length. There is an introductory section on linear programming solutions, as well as an extensive and comprehensive appendix on linear programming formulations and solutions. Discrete-time or ‘frame-wise’ allocation is described, including rate-limiting, nonlinear data, and preferred solutions.

Key features:

  • Written by pioneers in the field of control allocation

  • Comprehensive explanation and discussion of the major control-allocation solution methods

  • Extensive treatment of linear programming solutions to control allocation

  • A companion web site contains the code of a MATLAB/Simulink light simulation with modules that incorporate all of the major solution methods

  • Includes examples based on actual aircraft

  • The book is a vital reference for researchers and practitioners working in aircraft control, as well as graduate students in aerospace engineering.

USING THE LINEAR SIMULATION

the detail of the usage of the simulation can be find on SimulationQuickStartGuide.pdf, and appendix B of this book git some review too.

Test report

For test control allocation method of the book, run test_ACA.m of control_allocation , other test file can use like this.

we Use the moments in all directions on the unit sphere as output and test the output, or we can use the moments input from a fly data (load fly.mat).

  • LPwrap

    1. Testing using hover flight data:
      • Effectors jitter appears when LPmethod=0, 1.
      • Effectors saturation when LPmethod=2
      • warning when LPmethod=0, 1, 4.
    2. Tests in any unit direction:
      • All tests passed but have warning: "Warning:
      • Matrix is singular within working precision" when LPmethod=0, 1, 4.
  • CGIwrap:

    • All tests passed
  • DAwrap:

    • All tests passed

Change log

  1. add readme.md
  2. fix bug of LPwrap.m, the diff is:
diff --git a/LPwrap.m b/LPwrap.m
index a7d0281..1c223f0 100644
--- a/LPwrap.m
+++ b/LPwrap.m
@@ -88,9 +88,9 @@
 wu=ones(m_act,1);
 emax=ones(k,1)*2e1;
 itlim=5e2;
-lam=0.01;
+lam=1;
 eMax=emax;
-w=0.01*wu;
+w=wu;
 
 switch LPmethod
     case 0
@@ -307,7 +307,7 @@
 %
 indn = 1:n;
 numzer = length(find(eyd==0));
-inBi = [indn(eyd>0) n+indn(eyd<0) (2*n)+(1:numzer)];
+inBi = [indn(eyd>0) n+indn(eyd<0) (2*n):( (2*n)-1+numzer )];
 
 e = true(2*n+m,1);
 
@@ -798,9 +798,9 @@
 
 if errout ~=0  % Construct an incorrect solution to accompany error flags
     xout = zeros(m+1,1);
-    indv = inB1<=(m+1);
+    indv = indB1<=(m+1);
     xout(inB1(indv)) = y1(indv);
-    xout(~e1(1:m+1)) = -xout(~e1(1:m+1))+h(~e1(1:m+1));
+    xout(~e1(1:m+1)) = -xout(~e(1:m+1))+h(~e1(1:m+1));
     
 else  % No Error continue to solve problem
     
@@ -949,7 +949,7 @@
 if errout ~=0  % Construct an incorrect solution to accompany error flags
     xout = zeros(m,1);
     xout(inB1(1:m)) = y1(1:m);
-    xout(~e1(1:m)) = -xout(~e1(1:m))+h(~e1(1:m));
+    xout(~e1(1:m)) = -xout(~e(1:m))+h(~e1(1:m));
     
 else  % No Error continue to solve problem
     
@@ -1087,7 +1087,7 @@
 %
 indn = 1:n;
 numzer = length(find(eyp==0));
-inBi = [indn(eyp>0) n+indn(eyp<0) (2*n)+(1:numzer)];
+inBi = [indn(eyp>0) n+indn(eyp<0) (2*n):( (2*n)-1+numzer )];
 e = true(2*(n+m),1);
 
 %Solve using Bounded Revised Simplex
  1. Use upper_lam for DP_LPCA of LPwrap to prevent control surfaces from approaching position limits.

Note

For aircraft simulation, the reader maybe need to learn about the ADMIRE, but for study control allocation method, just use the algorithm Implements files xx_wrap as function, then create and run test_xx is enough.

  1. update yout[n,1] = Optimal output variable to yout[m,1] = Optimal output variable

aircraft-control-allocation's People

Contributors

mengchaoheng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.