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)
Example #2
0
        ]
    )
]
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=[
Example #3
0
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,
Example #4
0
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),
Example #5
0
        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),