Neue Stop Optionen in der Geradefahrfunktion: Farbintensität und Abstand.

This commit is contained in:
Lars Haferkamp 2024-01-10 20:55:51 +01:00
parent 714d50e996
commit 7abd2bbd3f
2 changed files with 31 additions and 14 deletions

View file

@ -102,7 +102,7 @@ class IQRobot:
self.antrieb.stop() self.antrieb.stop()
print ("Final Ziel: {}, Aktuell: {}".format(ziel, aktuell)) print ("Final Ziel: {}, Aktuell: {}".format(ziel, aktuell))
def fahre_gerade_aus(self, cm, speed=20): def fahre_gerade_aus(self, cm, speed=20, intensity_stop=None, abstand_stop=None, abstand_greater=True):
""" """
Funktion um den Roboter geradeaus fahren zu lassen Funktion um den Roboter geradeaus fahren zu lassen
@ -126,8 +126,8 @@ class IQRobot:
self.bewegungsSensor.reset_yaw_angle() self.bewegungsSensor.reset_yaw_angle()
# Mit irgendeiner Geschwindigkeit g>0 starten. Wert ist irrelevant # Mit irgendeiner Geschwindigkeit g>0 starten. Wert ist irrelevant
self.antrieb.start_tank(10, 10) self.antrieb.start_tank(richtung*10, richtung*10)
self.antrieb.set_default_speed(10) self.antrieb.set_default_speed(richtung*10)
linker_speed=speed # Geschwindigkeit linker Motor linker_speed=speed # Geschwindigkeit linker Motor
rechter_speed=speed # Geschwindigkeit rechter Motor rechter_speed=speed # Geschwindigkeit rechter Motor
@ -139,6 +139,20 @@ class IQRobot:
# wiederhole solange die gefahrene Strecke noch nicht erreicht ist # wiederhole solange die gefahrene Strecke noch nicht erreicht ist
while sum_cm < cm * richtung: while sum_cm < cm * richtung:
if intensity_stop:
red, green, blue, intensity = self.farbSensor.get_rgb_intensity()
print("Farbintensität: " + str(intensity))
if intensity == intensity_stop:
break
if abstand_stop:
abstand = self.abstandsSensor.get_distance_cm()
print("Abstand: " + str(abstand))
if abstand_greater:
if abstand >= abstand_stop:
break
else:
if abstand <= abstand_stop:
break
wait_for_seconds(0.05) # Sonst wird das zu oft ausgeführt wait_for_seconds(0.05) # Sonst wird das zu oft ausgeführt
sum_cm = self.strecke_gefahren() * richtung # Gefahrene Strecke, ggf. eben negativ machen sum_cm = self.strecke_gefahren() * richtung # Gefahrene Strecke, ggf. eben negativ machen
versatz = self.bewegungsSensor.get_yaw_angle() # Um wie viel sind wir falsch? versatz = self.bewegungsSensor.get_yaw_angle() # Um wie viel sind wir falsch?

23
main.py
View file

@ -1,4 +1,4 @@
# LEGO type:standard slot:5 autostart # LEGO type:standard slot:5
import os, sys import os, sys
@ -104,9 +104,10 @@ def hologram():
iqRobot.fahre_gerade_aus(-15,30) iqRobot.fahre_gerade_aus(-15,30)
def augmented_reality(): def augmented_reality():
iqRobot.drehe(-135) iqRobot.drehe(45)
iqRobot.fahre_gerade_aus(40,30) # cm should be greater than real distance as we stop at color intensity
iqRobot.drehe(90) iqRobot.fahre_gerade_aus(cm=-50,speed=30, abstand_stop=89)
iqRobot.drehe(-90)
iqRobot.fahre_gerade_aus(12,30) iqRobot.fahre_gerade_aus(12,30)
iqRobot.schaufel(-2200) iqRobot.schaufel(-2200)
iqRobot.fahre_gerade_aus(-4,30) iqRobot.fahre_gerade_aus(-4,30)
@ -127,9 +128,10 @@ def backHome():
#iqRobot.schaufel(1600, speed=100 ) #iqRobot.schaufel(1600, speed=100 )
#iqRobot.schaufel(-1600, speed=100 ) #iqRobot.schaufel(-1600, speed=100 )
# druckmaschine() iqRobot.schaufel(3000)
# hologram() druckmaschine()
# augmented_reality() hologram()
augmented_reality()
#backHome() #backHome()
#huenchenaufgabe() #huenchenaufgabe()
@ -137,9 +139,10 @@ def backHome():
#wait_for_seconds(2) #wait_for_seconds(2)
while 0 == 0: #while 0 == 0:
#print(iqRobot.abstandsSensor.get_distance_cm()) #print(iqRobot.abstandsSensor.get_distance_cm())
#print(iqRobot.farbSensor.get_reflected_light()) #print(iqRobot.farbSensor.get_reflected_light())
print(str(iqRobot.farbSensor.get_blue())+" "+str(iqRobot.farbSensor.get_green())+" "+str(iqRobot.farbSensor.get_red())) #print(str(iqRobot.farbSensor.get_blue())+" "+str(iqRobot.farbSensor.get_green())+" "+str(iqRobot.farbSensor.get_red()))
wait_for_seconds(0.5) #wait_for_seconds(0.5)
#print(str(iqRobot.abstandsSensor.get_distance_cm()))