home › Forums › # Technical Support › fuzzy PID controller using fuzzylite
Tagged: fuzzy PID controller
- This topic has 2 replies, 2 voices, and was last updated 8 years, 9 months ago by
Unknown.
-
AuthorPosts
-
February 4, 2015 at 16:31 #1655
Unknown
MemberHi Juan. I am trying to replace the PID controller in the Parrot AR Drone with a fuzzy PID controller and compare their performance. My research is based on this work:
http://wiki.ros.org/tum_ardrone
I already have the code for the PID controllers. They control x,y,z and yaw in the drone. I would like to modify (or replace) this code using fuzzylite library. But I am new to fuzzy logic and fuzzylite and am a bit lost, so I thought may be I could ask you for help.
I have read your introductory paper and have gone through some of the examples. I have a general idea of what all the definitions mean and how to formulate a fuzzy controller, but I have some questions and I’m not sure where to find answers for them. For example:
How do you determine which linguistic term or accumulation operator to use?
How do you determine the type of the defuzzifier?
In the ruleBlock, how are conjunction, disjunction and activation determined?Also, I would like to see a sample fuzzy PID controller code to get an idea of how to approach this problem. I searched for fuzzy PID controller using fuzzylite, but it didn’t return any useful results.
I would truly appreciate it if you could help me and point me to the right direction.
February 15, 2015 at 08:46 #1671Juan Rada-Vilela (admin)
KeymasterHi Maryam,
thank you for your interesting post.
I am not sure how to create a fuzzy PID controller, but I am definitely very interested in it.
I am not sure if there is some guide towards selecting the linguistic terms based on the properties of the functions (e.g. Gaussian, Triangle), S-Norms and T-Norms, or defuzzifiers, unless you are already interested in specific properties of the components.
In general, a basic Mamdani controller is made up of Triangles as linguistic terms, Maximum or AlgebraicSum as accumulation, Centroid as a defuzzifier, Minimum or AlgebraicProduct as T-Norms, and Maximum or AlgebraicSum as S-Norms. There are many decisions involved in the design of a fuzzy controller, for which obtaining the best performance can be considered as a combinatorial optimization problem. Not only for these design variables, but also for the rules. For combinatorial optimization problems there are many methods available nowadays. You may want to revise the literature on Genetic Fuzzy Systems, for example.
For fuzzy PID controllers in fuzzylite, I have not seen one yet. I think you would be better off searching for fuzzy PID controllers without fuzzylite, and then we could discuss how to adapt them to fuzzylite. It should be straight-forward.
After seeing the pseudocode of a PID here, I think you might be looking for a Takagi-Sugeno controller, but I have not thought thoroughly about it.
I hope this helps you a bit on your quest. Let me know if I could be of help once you have your ideas clear on fuzzy PID controllers.
Cheers.
February 16, 2015 at 08:04 #1677Unknown
MemberThanks very much for getting back with me Juan. Your response was very insightful. I had originally decided on using a Mamdani controller and was in the middle of writing the rules. But you prompted me to read up on the Takagi-Sugeno controller some more. Let me do some more research and get back with you on that. I may even post my pseudocode here if I feel like it would be useful to other people. Again, thanks vey much.
-
AuthorPosts
- You must be logged in to reply to this topic.