How are you??

Last year, i design a stabilization system for a 3d helicopter, using neuro-fuzzy systems, it worked great!!!

now, im designing a quadcopter, just like everyone else, hehehe, but with the same difference, its going to use fuzzy logic to stabilize itself...

My hardware is the next:

- Leaflabs Maple, Arm Cortex @ 72 mhz
- IMU razor 9DOF with the onboard atmega
- Hobbyking motors 30amps
- Hobbyking ESC 30amps
- Xbee pro 900mhz
- Aluminum for the chasis

My plan is to first stabilize one axis, and then go the other, thats why in the picture you can see "something" that is holding down the quad, in the other pic you can see the proud owner, hehehehe

Im using a sugeno inference system, because it requires less computation power than a mandami.

I got 5 membership functions, gaussians for more precise control.

Its a simple one input (angle) two outputs (motors) system.

Yesterday i started to test the stabilization system, but its not working nice... its oscillating, when i move the quad to angles more than -20 or 20 degrees, the control cant stabilize and the system oscillates...

Im using the Maple analogwrite feature for writing the pwm to the 2 motors, also im using the 400hz update rate, so it supose to be very fast and smooth...

You can see the videos in the next page:


You can see how it oscilates...

Im a little stuck, im thinking to implement a PID system to check is not the maple or the 400hz or another stuff, when i discart the hardware, then i will know that the problem is the fuzzy system, but im almost sure that the 5membership functions of the system is more than capable to do the stabilization task with no problems... so i dont really know what im doing wrong...

Anyone has a idea???



Views: 3992


Reply to This

Replies to This Discussion

By 330Hz and 490Hz , what do you mean?

Allen, where are you? I am in Sydney Australia.

Oops! accendentally deleted a reply I didn't want to.


Original reply was to Lew... I did tests on a BP hobbies 18A ESC and came out with a frame rate of 330Hz. I heard that some had achieved a frame rate of 490Hz and I'm considering doing more tests to see if mine cane do that.

I'm over in South Texas.


The 330 and 490 Hertz are the frame rates of the PWM signal sent to the ESC's. Hertz (Hz) is a number of "cycles per second" and can be equivalent to "revolutions per second" in certain applications, but Hz is usually applied to electromagnitic signals.


Put in some other terms, 330Hz means that for every second, 330 frames or pulses are sent to the ESC... for those not familar with PWM and R/C equipment, this is how the reciever communicates to servos and ESC's the desired angle or speed.


Having a high framerate is usually a good thing, because this means that whatever is hooked up to the reciever or whatever is generating the PWM can react at a quicker rate.

Hey Aldo, what kind of input membership functions did you use?

Trapazoidal, Triangle, or possibly Guassian?

330Hz, frame rate or update rate ..... just checking.

Faster is always better.

What is the frame rate coming out of your controller? A faster ESC frame rate may not be worth looking into if it is already significantly faster than your controller.

I'm currently running the controller code at 50Hz, with my sensor code running at 110Hz. I'm using the ol' signals rule of thumb to use 2.2 times the desired signal (the same freq as the controller code) for the ATD.


It looks like the ESC's use the same rule of thumb, because it takes 110 frames in order for it to save a new maximum throttle frame width (PWM duty). As such, I think the ESC needs 2 or 3 frames before it will start to change the speed on the motor.


But, as far as I can tell, my "speed limit" is due to my sensors.


I'm looking at the datasheets for the sensors again, and see that the bandwidth for the accello's is 140Hz and the gyro's are 550Hz. The way that my sensor code is setup (simple complimentary filtering), I can't really combine the sensor data if they're operating at different freq's.


I hope u completed your project.... I am also interested in quadcopter stabilization, I developed HefnyCopterFirmware it allows switching from X to Plus mode abd vice versa without board orientation or the need to install any new firmware as well as many features... 

I came out with a suggested framework for quad control system, it aims to sort different sensors by usage, and clear the gery areas between them. I hope you find it useful

hi Aldo Vargas,

currently i am doing a project on uav incorporating fuzzy logic. I am using audrino pro mini Atmega 328 board. I am interested to find out how you implement fuzzy logic C codes into your quadcopter. Apart from that, may i ask if does my board support fuzzy logic? Thanks.

Reply to Discussion



Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service