def test_stop(): args = argparse.Namespace() args.env = "mockenv.json" args.instance = "testjcs" args.stop = "stop" args.email = False args.verbose = False _, response = stop(args) assert requests.codes.ACCEPTED == response.status_code
degrees = gyro_sensor.value() ev3.Sound.speak('Task B').wait() while (not btn.backspace): ev3.Sound.speak('Following left line').wait() color = functions.senseColor() # Inner left and must turn right to find line moved = False degrees1 = gyro_sensor.value() while (moved == False): functions.pid_left_internal(offset, error, lastError, color, kp, ki, kd, tp, integral, derivative) color = functions.senseColor() #When white found, stop if (color >= 80): functions.stop() moved = True if (color >= 80): functions.stop() degrees2 = gyro_sensor.value() if (not (degrees1 == degrees2)): ev3.Sound.speak('Adjusting my position').wait() while (degrees2 < degrees1): functions.inverseRight() degrees2 = gyro_sensor.value() functions.stop() ev3.Sound.speak('End of line').wait() ev3.Sound.speak('I will look for a line on my right').wait() degrees = gyro_sensor.value() #Turn right using gyro sensor while (abs(gyro_sensor.value() - degrees) < 85):
def controlled_image_server_behavior(): #in last_state steht immer die Richtung in die zuletzt gefahren wurde global last_state #centre x und y beschreibt nachher die Bildmitte ,Default 0 global centre_x global centre_y #Default Wert "nach rechts" wird last_state zugewiesen last_state = "right" centre_x = 0. centre_y = 0. #elapsed_time ist die verstrichene Zeitspanne solange kein Objekt gefunden wurde. elapsed_time = 4.0 #correction_factor x und y ist eine Hilfe für Auflösungsänderung, in diesem Fall nicht benutzt correction_factor_x = 3.0 correction_factor_y = 2.5 #Die Verbindung zum Arduino Mega wird aufgebaut functions.open_connection_arduino() #Motoren werden auf LOW initialisiert functions.stop() #Hilfstimer start und end #start ist die Startzeit des Timers #in start wird eine aktuelle Zeitangabe geschrieben start = float(time.perf_counter()) #end ist das Ende des Timers #Startzeit + die gewünschte Zeitspanne die vorher in elapsed_time festgelegt wurde end = start + elapsed_time #Initalisierung der Kamera camera = pi_camera_stream.setup_camera() #kruzer sleep damit die Kamera sich "aufwärmen" kann time.sleep(0.1) #in der for Schleife werden einzelne Frames (Bilder) ausgewertet, verarbeitet #und im Nachhinein wieder ausgegeben. In diesem werden sie an den Flask-Server #weitergeleitet. Der über den Port 8000 aufrufbar ist. #Ebenfalls anhand der erfassten Positionswerte des aktuellen Bildes reagiert #das heißt es werden Funktionen aufgerufen um das Auto zu steuern for frame in pi_camera_stream.start_stream(camera): #Hue Saturation Value hsv1 = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) #das Bild wird maskiert und nur noch der Teil mit den voreingestellten Farben #in diesem Fall Pink,Rot wird zu sehen sein mask_red = pi_camera_stream.segment_colour(frame) #In diesem Teil werden die Kooardinaten des Bildes erfasst und in #die Hilfsvariablen geschrieben loct,area = pi_camera_stream.find_blob(mask_red) #die einzelnen Werte aus loct werden aufgesplittet um diese nachher zu verwenden x,y,w,h = loct #print Funktionen zu Debug-Zwecken ##print("x+w") ##print(x+w) #Der folgende Fall beschreibt wenn kein Objekt gefunden wurde if (w*h) < 10: ####<NO OBJECT FOUND>##### found = 0 #ein Timer wird gestartet um kurz zu warten ob das Objekt noch gefunden wird start = float(time.perf_counter()) #wenn die vorher eingestellte Zeit, in Default-Fall 4 Sekunden, die jetzt in end steht vertrichen ist, #wird in die zuletzt gefahrene Richtung gefahren. if end <= start: if last_state == "left": #Funktion kommuniziert mit dem Arduino um nach links zu fahren functions.turnleft() time.sleep(0.1) elif last_state == "right": #Funktion kommuniziert mit dem Arduino um nach rechts zu fahren functions.turnright() time.sleep(0.1) #Der folgende Fall beschreibt wenn ein Objekt gefunden wurde else: ####<OBJECT FOUND>#### found = 1 #Timer wird bei jedem Durchlauf neu gesetzt und das Ende wird durch die aufaddierte Zeit gesetzt. start = float(time.perf_counter()) end = float(time.perf_counter()) + elapsed_time #Die Mittelpunkte des Bildes werden ermittelt und in die Variablen centre x und y geschrieben. centre_x = x + ((w)/2) centre_y = y + ((h)/2) #Anhand der nun beschriebenen Variablen wird ein kleiner Kreis, #zur Visualisierung, in das Bild gezeichnet. cv2.circle(frame,(int(centre_x),int(centre_y)),10,(240,240,240),-1) #centre_x wird nocheinmal in 2 Häflten geteilt um nachher einfacher festzustellen in welcher #Hälfte sich das gefundene Objekt befindet. centre_x -= 240 #Der Bewegungsablauf wenn ein Objekt gefunden wurde if(found == 1 ): #wenn sich das Objekt in der äußeren linken Hälfte befindet, #wird nachjustiert, also nach links gefahren um die Objekt-Mitte in die Bild-Mitte zu bringen if(centre_x <= -100): functions.turnleft() last_state = "left" #wenn sich das Objekt in der äußeren rechten Hälfte befindet, #wird nachjustiert, also nach rechts gefahren um die Objekt-Mitte in die Bild-Mitte zu bringen elif(centre_x >= 100): functions.turnright() last_state = "right" #Solange die Außenkanten des Objektes die festgelegten Werte nicht überschreitet wird #geradeaus in Richtung des Objektes gefahren. elif(x >= 18 and x+w <=330): functions.forward() #wenn keiner der vorhergegangen Fälle eintritt wird angehalten (Stop) else: functions.stop() #wenn keiner der vorhergegangen Fälle eintritt wird angehalten (Stop) else: functions.stop() #Das nun erfasste Bild wird nun in die Variable encoded_bytes geschrieben encoded_bytes = pi_camera_stream.get_encoded_bytes_for_frame(frame) #das erfasste Bild wird nun in die Schlange (Queue) eingereiht #um nachher abgerufen zu werden und auf den Server als Stream ausgegeben zu werden put_output_image(encoded_bytes) #wenn eine Kontrollanweisung gesetzt wurde wie zum Beispiel "exit" wird darauf reagiert #in Falle von "exit" wird das Programm angehalten instruction = get_control_instruction() if instruction == "exit": print("Stopping") return
import functions as check check.start(summary=True, verbose=True, memory=True) add = 2 + 2 check.point("ADDITION") mult = 2 * 2 check.point("MULTIPLICATION") exp = 2**2 check.point("EXPONENTIAL") check.stop()
def dconnectsig(self, button): functions.stop() setlable()