I'd like to see if I can help to get traditional heli simulation working. If I may impose, I'd like to get some general feedback from the community so that I can best direct my energy towards a solution.
Here's some background to help explain my motivations and abilities to contribute. I'm currently an undergraduate researcher in a non-linear controls research laboratory. My end goal is to use Fuzzy Logic to replace PID feedback control for an unmanned helicopter drone. I'm currently using a Thunder Tiger Raptor 90 as the testbed.
Of course, to test a new controller (especially on something as dangerous as a 90 series nitro), one must (ideally) have a working UAV platform first. In my search for a solution to the problems of finding ground station software, HIL, etc., I ran across Arducopter (much to my joy).
So now, instead of reinvinting more wheels than Goodyear, all I need to do to have a good testbed for my controllers is to help get HIL working for traditional helis in Arducopter, and add my own code replacing the PID control with fuzzy code.
The latter is something I'll likely do on my own, to submit for inclusion later (if anyone wants it). The former is something that I'd love to help with, but I'm not entirely sure where to start.
I'm currently the Robotics chair for our IEEE student chapter, so I could possibly contribute more than one set of person-hours to overcoming the challenges that are currently preventing HIL from working for traditional helis. I'm extremely interested in helping, and it's something I'd be willing to put a lot of hours into, simply because of how greatly it would assist me in accomplishing my own research goals.
So if you're currently working on HIL for traditional helis, or you know what's holding us back, gimmie something to shoot!
Replies
I've definitely had those classes before XD
The story I hear with the physics modeling is that for some reason, FlightGear and/or X-Plane's physics models aren't linearized around small-scale aircraft, so the simulators tend to break down with the lower mass and moments of inertia and such. That's just what I hear though, and I hope someone will correct me if I'm wrong.
What we truly need is for one of the major RC sim developers like RealFlight or AeroFly to add the capability to export their telemetry data in real time the way X-Plane does. If we had that, we could instantly integrate any of the RC platforms within their libraries. To my knowledge, both of those packages already take in a PPM stream like a standard trainer cable from an existing controller. That format would be easy to output from ArduPilot, wouldn't it?
As an aside, I posted on AeroFly's forums, appealing to them to add real-time telemetry export as a feature. Their current response is that there aren't enough people asking for the feature to justify adding it. If you'd like to see them change their minds about that, go here and add your voice to the petition:
http://www.ipacs.de/forum/showthread.php/4754-Real-time-flight-data...
I think jasonshort is the one you'd want to talk to about changing the controller code. From my time here it seems he's the most active one of the coding team.
I'm working on a similar project (albeit mostly by myself) and built 2 custom quadrotors from scratch with the intent of using Fuzzy Logic methods to do the attitude and heading control, and have had some success. Perhaps the most notable difference with my project is that I'm using the HCS12 chip instead of the more popular ATmega.
This comes with the advantage of having built-in 8-bit Sugeno fuzzy logic opcode, but has the greater disadvantage of not being compatible with ArduCopter... so I see you made the right choice by not "reinventing more wheels than Goodyear." lol
I have to ask, though, about which fuzzy logic method you'll be using? Will ytou be using direct control or indirect adaptive?
By direct control, I mean that you essentially swap out the PID with the fuzzy logic controller. ( I have some experiance with this type of fuzzy controller)
By indirect adaptive I mean having a fuzzy-logic controller work in parallel with a PID, with the fuzzy-logic controller monitoring the output of the PID and adjusting its gains (Kp, Ki, and Kd) to achieve maximal performace. ( I consider this to be very advanced... and haven't gotten around to playing with the idea just yet )
P.S.
Also, which type of Fuzzy Logic are you considering? Traditional Mamdani or the simplifer Sugeno?