Ejemplo n.º 1
0
    def test_interpretSignal_1(self):
        signal = "011000"

        interpreter = ManchesterSignalInterpreter()

        parameters = interpreter.interpretSignal(signal)

        self.assertEqual(3, len(parameters))
        self.assertEqual(ManchesterSignalInterpreter.FIGURE_3, parameters[0])
        self.assertEqual(ManchesterSignalInterpreter.NORTH, parameters[1])
        self.assertEqual(ManchesterSignalInterpreter.FACTOR_2, parameters[2])
Ejemplo n.º 2
0
    def test_interpretSignal_2(self):
        signal = "110101"

        interpreter = ManchesterSignalInterpreter()

        parameters = interpreter.interpretSignal(signal)

        self.assertEqual(3, len(parameters))
        self.assertEqual(ManchesterSignalInterpreter.FIGURE_6, parameters[0])
        self.assertEqual(ManchesterSignalInterpreter.SOUTH, parameters[1])
        self.assertEqual(ManchesterSignalInterpreter.FACTOR_4, parameters[2])
Ejemplo n.º 3
0
 def __init__(self):
     self.arduinoInterface = ArduinoInterface.getInstance()
     self.manchesterSignalInterpreter = ManchesterSignalInterpreter()
Ejemplo n.º 4
0
class ManchesterSignalSearcher:
    def __init__(self):
        self.arduinoInterface = ArduinoInterface.getInstance()
        self.manchesterSignalInterpreter = ManchesterSignalInterpreter()

    def searchSignal(self):
        robotMover = RobotMover()
        robotMover.doSnakeMovement(Terrain.DRAWING_ZONE_NORTH_EAST_CORNER_INNER, 180)

        distance, signal = self.__doSignalSearch('SS.')

        self.__adjustPosition(distance, 4)

        signalPosition = Robot.getCurrentPosition()

        self.__moveToSecondCorner()

        distance, signal = self.__doSignalSearch('SB.')

        self.__adjustPosition(distance, -4)

        interpretedSignal = self.manchesterSignalInterpreter.interpretSignal(signal)

        return interpretedSignal, signalPosition

    def __doSignalSearch(self, method):
        print "searching signal..."
        self.arduinoInterface.write(method)
        time.sleep(0.2)
        self.arduinoInterface.checkIfOperationIsOver()
        signalAndDistance = self.arduinoInterface.readLine()

        print "signal and distance: " + str(signalAndDistance)

        signal = signalAndDistance[0:7]
        distance = signalAndDistance[8:]

        print "distance traveled: " + str(distance)
        print "signal: " + str(signal)

        return distance, signal

    def __moveToSecondCorner(self):
        robotMover = RobotMover()
        robotMover.doSnakeMovement(Terrain.DRAWING_ZONE_SOUTH_EAST_CORNER_INNER, 0)

    def __adjustPosition(self, distance, verticalDrift):
        ancientPose = Robot.getCurrentPose()

        newPose = (ancientPose[0] - (int(distance)/10), ancientPose[1] + verticalDrift, ancientPose[2])

        Robot.setCurrentPose(newPose)

    def doSimpleSignalDecoding(self):
        self.arduinoInterface.write('SD.')

        self.arduinoInterface.checkIfOperationIsOver()

        signal = self.arduinoInterface.readLine()
        interpretedSignal = self.manchesterSignalInterpreter.interpretSignal(signal)

        return interpretedSignal