avoidance_engine = fl.Engine( name='collision_avoidance', description='' ) avoidance_engine.input_variables = [ fl.InputVariable( name='Left_Laser', description='', enabled=True, minimum=0.0, # The true range_min specified in sensor_msgs/LaserScan is ~0.1 maximum=5.0, lock_range=True, terms=[ # Ramp is defined so that start is the bottom of ramp and end is the top fl.Ramp('near', .75, 0), fl.Triangle('medium', .5, 2.5, 3.75), fl.Ramp('far', 2.5, 5) ] ), fl.InputVariable( name='Right_Laser', description='', enabled=True, minimum=0.0, maximum=5.0, lock_range=True, terms=[ fl.Ramp('near', .75, 0), fl.Triangle('medium', .5, 2.5, 3.75), fl.Ramp('far', 2.5, 5)
] ) ] engine.output_variables = [ fl.OutputVariable( name="Ramps", description="", enabled=True, minimum=0.000, maximum=1.000, lock_range=False, aggregation=None, defuzzifier=fl.WeightedAverage("Automatic"), lock_previous=False, terms=[ fl.Ramp("b", 0.600, 0.400), fl.Ramp("a", 0.000, 0.250), fl.Ramp("c", 0.700, 1.000) ] ), fl.OutputVariable( name="Sigmoids", description="", enabled=True, minimum=0.020, maximum=1.000, lock_range=False, aggregation=None, defuzzifier=fl.WeightedAverage("Automatic"), lock_previous=False, terms=[
import fuzzylite as fl engine = fl.Engine(name="ObstacleAvoidance", description="") engine.input_variables = [ fl.InputVariable( name="obstacle", description="", enabled=True, minimum=0.000, maximum=1.000, lock_range=False, terms=[fl.Ramp("left", 1.000, 0.000), fl.Ramp("right", 0.000, 1.000)]) ] engine.output_variables = [ fl.OutputVariable( name="mSteer", description="", enabled=True, minimum=0.000, maximum=1.000, lock_range=False, aggregation=fl.Maximum(), defuzzifier=fl.Centroid(100), lock_previous=False, terms=[fl.Ramp("left", 1.000, 0.000), fl.Ramp("right", 0.000, 1.000)]), fl.OutputVariable( name="tsSteer", description="", enabled=True,
import fuzzylite as fl engine = fl.Engine(name="AllTerms", description="") engine.input_variables = [ fl.InputVariable(name="AllInputTerms", description="", enabled=True, minimum=0.000, maximum=6.500, lock_range=False, terms=[ fl.Sigmoid("A", 0.500, -20.000), fl.ZShape("B", 0.000, 1.000), fl.Ramp("C", 1.000, 0.000), fl.Triangle("D", 0.500, 1.000, 1.500), fl.Trapezoid("E", 1.000, 1.250, 1.750, 2.000), fl.Concave("F", 0.850, 0.250), fl.Rectangle("G", 1.750, 2.250), fl.Discrete("H", [ 2.000, 0.000, 2.250, 1.000, 2.500, 0.500, 2.750, 1.000, 3.000, 0.000 ]), fl.Gaussian("I", 3.000, 0.200), fl.Cosine("J", 3.250, 0.650), fl.GaussianProduct("K", 3.500, 0.100, 3.300, 0.300), fl.Spike("L", 3.640, 1.040), fl.Bell("M", 4.000, 0.250, 3.000), fl.PiShape("N", 4.000, 4.500, 4.500, 5.000), fl.Concave("O", 5.650, 6.250), fl.SigmoidDifference("P", 4.750, 10.000, 30.000, 5.250),
fl.Triangle("left", 0.000000000, 0.333000000, 0.666000000), fl.Triangle("right", 0.333000000, 0.666000000, 1.000000000) ]) engine.input_variables = [obstacle] steer = fl.OutputVariable(name="steer", description="direction to steer the vehicle to", enabled=True, minimum=0.000000000, maximum=1.000000000, lock_range=False, aggregation=fl.Maximum(), defuzzifier=fl.Centroid(100), lock_previous=False, terms=[ fl.Ramp("left", 1.000000000, 0.000000000), fl.Ramp("right", 0.000000000, 1.000000000) ]) engine.output_variables = [steer] steer_away = fl.RuleBlock( name="steer_away", description="steer away from obstacles", enabled=True, conjunction=None, disjunction=None, implication=fl.Minimum(), activation=fl.General(), rules=[ fl.Rule.parse("if obstacle is left then steer is right"), fl.Rule.parse("if obstacle is right then steer is left")
fusion_engine = fl.Engine( name='fusion', description='' ) fusion_engine.input_variables = [ fl.InputVariable( name='Position_Measure', description='', enabled=True, minimum=0, maximum=2, lock_range=True, terms=[ fl.Ramp('small', .2, 0), fl.Trapezoid('medium', .1, .25, .3, .4), fl.Ramp('large', .35, 2) ] ), fl.InputVariable( name='Min_Laser', description='', enabled=True, minimum=0, maximum=5.0, lock_range=True, terms=[ fl.Ramp('very_small', .05, 0), fl.Trapezoid('small', .04, .1, .25, .35), fl.Trapezoid('medium', .3, 1, 2, 3.5),