示例#1
0
class GoWrong(Tree):
    spec = P('misunderstanding\nabout MR14', failure_rate=1e-4)
    check = P('not discovered during\npeer review', failure_rate=1e-4)

    failure = T(
        r'moving to the \"gathered position\"\ninstead of \"towards the victim\"'
    )
    failure << (spec & check)
示例#2
0
class EscortNoLED(Tree):
    led = P('primary indicator LED failure', failure_rate=1e-5)

    with F('not aware of escorting') as not_aware:
        not_aware << (hw.EPuck.memory_fault() | Escort.unintentional)

    failure = T('escorting, but\nno LED indication')
    failure << (led | not_aware | software_bug())
示例#3
0
class NoEscort(Tree):
    indirect = F('taking a detour during escort')
    indirect << (Uncooperative.failure.as_leaf() | hw.Motor.failure()
                 | hw.EPuck.memory_fault())

    failure = T(
        'not moving the victim out;\nat least not on shortest known path')
    failure << (StandingStill.failure | Escort.unintentional.as_leaf()
                | indirect)
示例#4
0
class SeeNoLed(Tree):
    primary = P('primary failure\nof the display-LED', failure_rate=1e-5)
    software = software_bug()

    not_turned_on = hw.EPuck.not_turned_on()

    failure = T('clear line of sight,\nbut no LED indication')
    failure << (VictimSilent.failure | proto.SOS.receiver | primary | software
                | not_turned_on)
示例#5
0
class SpuriousMovements(Tree):
    turn = F('does not\nstop turning\nwhile sensing\nangle to victim')
    turn << (VictimSilent.failure.as_leaf() | hw.ExtBoard.failure)

    badcolor = S("Tin Bot's physical color\nis not hardcoded color")

    failure = T('spurious movements\n(e.g., spin around, drive circles, ...)')
    failure << (proto.LPS.failure.as_leaf() | software_bug() | badcolor
                | Proximity.failure() | Uncooperative.failure.as_leaf() | turn)
示例#6
0
class SystemFailure(Tree):
    tin_bot_failure = F('Tin Bot failure\n')
    tin_bot_failure << (VictimLost.failure | IgnoreVictim.failure
                        | NoEscort.failure | Victim404.failure)

    all_bad = F('all Tin Bots fail')
    all_bad << (tin_bot_failure & tin_bot_failure.as_leaf())

    failure = T('system failure\n(victim remains in maze)')
    failure << all_bad
示例#7
0
class Uncooperative(Tree):
    with F('sender failure') as sender:
        sender << (software_bug() | hw.Bluetooth.sender())

    with F('receiver failure') as receiver:
        receiver << (software_bug() | hw.Bluetooth.receiver())

    design = P('protocol design failure (T2T)', failure_rate=0)

    failure = T('uncooperative behavior\n(explores cells twice, ...)')
    failure << (sender | receiver | hw.Bluetooth.medium() | design)
示例#8
0
class StandingStill(Tree):
    with F('no initial position from LPS') as no_initial_lps:
        user = S('user did not\nenable LPS')
        no_initial_lps << (proto.LPS.failure | user)

    with F('wheels do not turn') as wheel_fault:
        blocked = S('wheels blocked')
        wheel_fault << (hw.Motor.failure | blocked)

    bad_setup = S('bad setup')
    software = software_bug()

    failure = T('standing still')
    failure << (no_initial_lps | bad_setup | software | wheel_fault
                | hw.EPuck.failure | RunIntoWall.failure | Escort.hang)
示例#9
0
class VictimLost(Tree):
    with F('victim dropped / unable to grab') as dropped:
        magnet_weak = P('primary magnet failure\n(e.g., too weak)', 1e-5)

        belt_weak = P('primary belt failure\n(magnet slips out of the belt)',
                      1e-1)
        # Your magnet is weak, your belt is weak, your bloodline is
        # weak, and you will *not* survive winter!

        dropped << (belt_weak | magnet_weak)

    pulled_away = F('pulled away by\nanother Tin Bot')
    pulled_away << (Escort.unintentional | Uncooperative.failure.as_leaf())

    failure = T('victim lost while escorting')
    failure << (pulled_away | dropped)
示例#10
0
class IgnoreVictim(Tree):
    conflict = F('conflicting data\nabout victim')
    conflict << (hw.EPuck.memory_fault() | S('user moved\nvictim')
                 | Uncooperative.failure.as_leaf())

    late = P('too high min-distance\nfor sensing again', failure_rate=1e-4)

    no_triang = F('triangulation fails')
    no_triang << (late | software_bug())

    overwrite = F('information gets overwritten\nbefore E-Puck picks it up')
    overwrite << Uncooperative.design()

    failure = T('not using information\nabout victim')
    failure << (hw.ExtBoard.failure.as_leaf() | conflict | no_triang
                | overwrite)
示例#11
0
class Victim404(Tree):
    not_placed_in = S('user did not place\nthe victim in the maze')
    unsolvable = S('unsolvable maze')

    rhr_hangs = F('right-hand follower\ndrives in circles')
    rhr_hangs << (P('right-hand follower\ncan drive in circles',
                    failure_rate=inf) & P('path-pruning fails', failure_rate=0)
                  & S('maze is not\n1-outerplanar'))

    drift = F('lost orientation')
    drift << (proto.LPS.failure
              & P('approximation algorithm\nis way off', failure_rate=1e-3)
              & P('drift from real orientation\ndoes not stabilize',
                  failure_rate=1e-5))

    failure = T('victim cannot be found')
    failure << (VictimSilent.failure | proto.SOS.receiver() | rhr_hangs | drift
                | not_placed_in | unsolvable)
示例#12
0
class RunIntoWall(Tree):
    failure = T('run into walls')
    failure << (Proximity.collision | bad_firmware)
示例#13
0
class NoPowerLED(Tree):
    primary = P('primary power LED failure', failure_rate=1e-5)

    failure = T('power LED is off')
    failure << (primary | hw.EPuck.failure)
示例#14
0
class VictimSilent(Tree):
    software = software_bug()

    failure = T('victim\'s LED does not\nsend valid signal')
    failure << (software | hw.Victim.failure)