No result found.

Outline

  • Automated Braking System

Automated Braking System using fuzzy logic

Harshita Chaudhary07 Jan, 2020

Automated Braking System

        import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl

#function
distance = ctrl.Antecedent(np.arange(0,200,1),'distance')
velocity = ctrl.Antecedent(np.arange(0,40,1),'velocity')
brak = ctrl.Consequent(np.arange(0,9,1),'brak')

###input:distance

distance['veryclose'] = fuzz.trimf(distance.universe,[-12,0,12])
distance['close']     = fuzz.trimf(distance.universe,[5,28,50])
distance['near']      = fuzz.trimf(distance.universe,[20,60,100])
distance['far']       = fuzz.trimf(distance.universe,[60,120,120])
distance['veryfar']   = fuzz.trimf(distance.universe,[100,200,200])

distance.view()
velocity['stop']       = fuzz.trimf(velocity.universe,[0,0,3])
velocity['veryslow']   = fuzz.trimf(velocity.universe,[0,5,10])
velocity['slow']       = fuzz.trimf(velocity.universe,[5,13,20])
velocity['medium']     = fuzz.trimf(velocity.universe,[10,15,20])
velocity['fast']    = fuzz.trimf(velocity.universe,[15,25,35])
velocity['veryfast']    = fuzz.trimf(velocity.universe,[25,32,40])
velocity.view()
brak['none'] = fuzz.trimf(brak.universe,[0,0,0])
brak['light'] = fuzz.trimf(brak.universe,[0,1,3])
brak['medium'] = fuzz.trimf(brak.universe,[1,3,5])
brak['heavy'] = fuzz.trimf(brak.universe,[3,4,6])
brak['veryheavy'] = fuzz.trimf(brak.universe,[5,6,8])
brak.view()

rule1 = ctrl.Rule(distance['veryclose'] & velocity['stop'], brak['light'])
rule2 = ctrl.Rule(distance['veryclose'] & velocity['veryslow'], brak['medium'])
rule3 = ctrl.Rule(distance['veryclose'] & velocity['slow'], brak['heavy'])
rule4 = ctrl.Rule(distance['veryclose'] & velocity['medium'], brak['heavy'])
rule5 = ctrl.Rule(distance['veryclose'] & velocity['fast'], brak['veryheavy'])
rule6 = ctrl.Rule(distance['veryclose'] & velocity['veryfast'], brak['veryheavy'])

rule7 = ctrl.Rule(distance['close'] & velocity['stop'], brak['light'])
rule8 = ctrl.Rule(distance['close'] & velocity['veryslow'], brak['medium'])
rule9 = ctrl.Rule(distance['close'] & velocity['slow'], brak['medium'])
rule10 = ctrl.Rule(distance['close'] & velocity['medium'], brak['heavy'])
rule11 = ctrl.Rule(distance['close'] & velocity['fast'], brak['veryheavy'])
rule12 = ctrl.Rule(distance['close'] & velocity['veryfast'], brak['veryheavy'])

rule13 = ctrl.Rule(distance['near'] & velocity['stop'], brak['light'])
rule14 = ctrl.Rule(distance['near'] & velocity['veryslow'], brak['light'])
rule15 = ctrl.Rule(distance['near'] & velocity['slow'], brak['light'])
rule16 = ctrl.Rule(distance['near'] & velocity['medium'], brak['medium'])
rule17 = ctrl.Rule(distance['near'] & velocity['fast'], brak['medium'])
rule18 = ctrl.Rule(distance['near'] & velocity['veryfast'], brak['heavy'])

rule19 = ctrl.Rule(distance['far'] & velocity['stop'], brak['none'])
rule20 = ctrl.Rule(distance['far'] & velocity['veryslow'], brak['none'])
rule21 = ctrl.Rule(distance['far'] & velocity['slow'], brak['light'])
rule22 = ctrl.Rule(distance['far'] & velocity['medium'], brak['light'])
rule23 = ctrl.Rule(distance['far'] & velocity['fast'], brak['medium'])
rule24 = ctrl.Rule(distance['far'] & velocity['veryfast'], brak['heavy'])

rule25 = ctrl.Rule(distance['veryfar'] & velocity['stop'], brak['none'])
rule26 = ctrl.Rule(distance['veryfar'] & velocity['veryslow'], brak['none'])
rule27 = ctrl.Rule(distance['veryfar'] & velocity['slow'], brak['none'])
rule28 = ctrl.Rule(distance['veryfar'] & velocity['medium'], brak['none'])
rule29 = ctrl.Rule(distance['veryfar'] & velocity['fast'], brak['light'])
rule30 = ctrl.Rule(distance['veryfar'] & velocity['veryfast'], brak['light'])

rules = [rule1,
 rule2,
 rule3,
 rule4,
 rule5,
 rule6,
 rule7,
 rule8,
 rule9,
 rule10,
 rule11,
 rule12,
 rule13,
 rule14,
 rule15,
 rule16,
 rule17,
 rule18,
 rule19,
 rule20,
 rule21,
 rule22,
 rule23,
 rule24,
 rule25,
 rule26,
 rule27,
 rule28,
 rule29,
 rule30]

breaking_ctrl = ctrl.ControlSystem(rules)
breaking = ctrl.ControlSystemSimulation(breaking_ctrl)

breaking.input['distance'] = 100
breaking.input['velocity'] = 35

# Crunch the numbers
breaking.compute()

print(breaking.output['brak'])
brak.view(sim= breaking)
if __name__ == "__main__":
  speed = int(input("Enter Speed : "))
  distance = int(input("Enter distance : "))
  breaking.input['distance'] = distance
  breaking.input['velocity'] = speed
  breaking.compute()
  print("Output for breaking pressure : " + str(breaking.output['brak']))
  brak.view(sim = breaking)