I got this generous input from one of the XFOIL's usergroup. These ideas give a better simulation for the copter than the one's I have hacked already since the suggested tools are more mature and worked on by the experts in the field.
Amazing thing I recognized this week was that the complicated rotor crafts can be off-line trained by NN for complex flying i.e. the customer purchases a copter and downloads the NN offline trained weight matrices for immediate flight e.g. the novice fliers will not destroy thousands of dollars of equipment because they do not have the RC fingers to manually manipulate the copter.
Subject: [xfoil] Re: Neural Network Control
Date:March 30, 2012 1:38:24 AM EDT
I think it would be possible to use some of the existing open source and very powerful tools from the wind energy sector for your project. You essentially have 4 rotors that (in a simplified case) do not interact with each other aerodynamically. In this way you could model them in sections, extract the section-wise 2D lift and drag polars and compute their performance with a Blade Element Method code. You can add dynamic and transient effects like dynamic stall, angled inflow and 3D cross-flows by means of correction models.
If this is done for 1 time step, then the only thing you need to do is to feed the state of the rotors at your NN model which includes the equations of motion of your system...and then calculate the new state and so on.
You could start working on existing codes for the aerodynamic part of the rotors (e.g. NREL/NWTC AeroDyn). There you would have to change the aerodynamic BEM code...or you would just run 1 BEM computation for each rotor at each time-step (assuming there is no interaction between rotors). This code already includes dynamic stall model (Leishman) as well as crossflow correction, tip and root loss correction as well as a Generalized Dynamic Wake model in order to compute more accurately the instantaneous inflow angle of each section.
If you would like even higher complexity you could couple it with a structural code (e.g. MBDyn <- also open source) based on the multi-body principle and simulate elastic responses from blades and frame as well.
As for the inflow, there has been a lot of work already done in the field of atmospheric modeling for low altitudes for wind turbine simulations. There are some very good open source codes (e.g. TurbSim) which generate 3D turbulent inflow input files. There you can use several turbulence models (e.g. Mann, von Karman, Kaimal e.t.c) and even combine them with log-law type of boundary layer velocity distribution profiles. Speaking about extreme coherent gusts there is also the possibility in TurbSim to include coherent gusts which were previously computed by means of very heavy LES (Large Eddy Simulations).
I think that such an approach would save you lots of time and effort from programming your own code...and assuming that there is no rotor interaction I am pretty sure you can practically run this thing with an external control script that calls different modules (e.g. aero-module, structural module, neural network module etc).
Here are some useful links:
I was watching your posts about implementing NN into the multipcopter, this is very interesting. At the moment I'm still playing around with my beaglebone. I'm starting the development by decoding RC signal from RX and generating PWM signal to drive the motor.
Till last week, my only reason to use beaglebone over arduino mega becaus the price is almost same but I got more powerfull processor. I still couldn't find the purpose of powerful processor till I saw your post about having NN.
To be honest, NN will be a very complex concept that I still not 100% understand, hopefully I can understand better along the process.
Anyway, keep posting mate.
I am about to order a couple of beaglebones so if you like to experiment we can. I am a bit lost why the Arduino board we have is less powerful than it should be, but have no time to hash that out. I saw other projects they have mighty powerful Arduino setups.
This is what I am doing and what I can do for you:
1. Develop detailed tutorials for what the heck NN does and does not and explanation of the technology. I am ordering a couple of publications which are dense in implementation of NN for control systems to make the tutorials as state of the art as possible.
2. Code the beaglebone board, I saw its IDE and can easily give you NN code in C++
3. Develop a set of test cases for NN controlled navigation, which is going to be the industry standard in future
4. All work including the tutorials and animations are open source MIT GNU PUBLIC LICENSE 3.0
My plans are to make super detailed numerical animations to show folks like yourself how NN works. I have to make this for debugging my own code, so why not publish them for general use.
1. I am clumsy and cannot control a tricky aircraft e.g. a much larger RPM copter is out of my reach to control manually.
2. I am slow doing electronics, so if that is easy for you I can do other stuff.