Implementation of the fuzzy control algorithm for obstacle avoidance. This algorithm is for a two-wheel differential drive robot. It uses distance information from 3 analogue IR range sensors and controls DC motors using ESCON servo controllers. This C++ library is written for mbed LPC1768. For any questions and/or reporting bugs contact author: vans.edw@gmail.com
fuzzylogic.h
00001 #ifndef FUZZYLOGIC_H 00002 #define FUZZYLOGIC_H 00003 00004 00005 class fuzzylogic 00006 { 00007 public: 00008 fuzzylogic(int nI1, int nI2, int nI3, int nO); 00009 ~fuzzylogic(); 00010 void setInParam(double *inParam1, double *inParam2, double *inParam3); 00011 void setOutParam(double *outParam); 00012 void setScalingFactor(double SFI1, double SFI2, double SFI3, double SFO); 00013 double getMembershipIn1(int m1); 00014 double getMembershipIn2(int m2); 00015 double getMembershipIn3(int m3); 00016 void setRuleBase(); 00017 double evalfis(double in1, double in2, double in3); 00018 00019 00020 protected: 00021 private: 00022 00023 double SF_in1; //Scaling Factor input 1 00024 double SF_in2; //Scaling Factor input 2 00025 double SF_in3; //Scaling Factor input 3 00026 double SF_out; 00027 double *mem_in1; //Fuzzified values for input 1 for each MF 00028 double *mem_in2; //Fuzzified values for input 2 for each MF 00029 double *mem_in3; //Fuzzified values for input 3 for each MF 00030 double *m_inParam1; //Input Parameter 1 Triangle Mem Functions 00031 double *m_inParam2; //Input Parameter 2 00032 double *m_inParam3; //Input Parameter 3 00033 double *m_outParam; //Output Parameter for singletons 00034 double ***actv; 00035 double ***FRB; 00036 int m_nI1, m_nI2, m_nI3, m_nO; 00037 00038 //i - left sensor 00039 //j - middle sensor 00040 //k - right sensor 00041 // 0 = close, 1 = near, 2 = far 00042 int R2, R3, I; 00043 00044 double s_in1, s_in2, s_in3, out; 00045 00046 double getRuleBase(int i, int j, int k); 00047 void fuzzification(double *mem_in, double *inParam, double in, int m_nI); 00048 void fi(); 00049 double defuzzification(); 00050 }; 00051 00052 #endif // FUZZYLOGIC_H
Generated on Fri Jul 22 2022 11:40:57 by
1.7.2