Skip to content
Snippets Groups Projects
Commit ca5a703f authored by Florian Leberfinger's avatar Florian Leberfinger
Browse files

UML hinzugefügt

parent 6fea8c27
No related branches found
No related tags found
No related merge requests found
Pipeline #12515 passed
......@@ -7,16 +7,11 @@ Zunächst wird für jeden Satz an Messwerten, der durch den Sensor versendet wir
Als nächstes musste das Ausweichen vor dem Hindernis umgesetzt werden. Dafür muss sich der TurtleBot vor diesem wegdrehen. Dafür muss zunächt erneut eine Nachricht in das "cmd_vel"-Topic veröffentlich werden. Dafür muss der zweite Wert des Wertepaares auf die gewünschte Drehgeschwindigkeit gesetzt werden. In der konkreten Implementierung wird hier 90% der Maximalwertes (1.82 * 90% = 1.63) verwendet. Um genau zu sein, wird dieser Befehl mit dem oben beschriebenen Stopbefehlt kombiniert. Das bedeutet, es wird zunächst 0.0 als Wert für die Vorwärtsbewegung und 1.63 als Drehgeschwindigkeit gesetzt.
Nachdem sich der Roboter weit genug gedreht hat, wird die Drehgeschwindigkeit wieder auf 0.0 und die Bewegungsgeschwindigkeit auf den Maximalwert gesetzt, sodass sich der Bot in einer geraden Linie nach vorne fährt.
Das Bestimmen, ob der Bot weit genug rotiert ist, wird anhand der Dauer der Bewegung realisiert. Hierzu wird zunächst, sobald die Drehung initialisiert wird, der Zeitstempel gespeichert. Danach wird für jeden Sensorwert, der durch den Laser Distance Sensor veröffentlich wird überprüft, ob seit diesem Zeitstempel eine gewisse Dauer vergangen ist. Hierfür wird bei dieser Aufgabe der Wert 0.3 verwendet. Falls dies der Fall ist, wird die Bewegung gestoppt. Außerdem wird der Zeitstempel wieder auf den Python-Wert None gesetzt. Dadurch kann festgestellt werden, ob sich der Roboter aktuell in einer Drehbewegung befindet.
Das Bestimmen, ob der Bot weit genug rotiert ist, wird anhand der Dauer der Bewegung realisiert. Hierzu wird zunächst, sobald die Drehung initialisiert wird, der Zeitstempel gespeichert. Danach wird für jeden Sensorwert, der durch den Laser Distance Sensor veröffentlich wird überprüft, ob seit diesem Zeitstempel eine gewisse Dauer vergangen ist. Hierfür wird bei dieser Aufgabe der Wert 0.3 Sekunden verwendet. Falls dies der Fall ist, wird die Bewegung gestoppt. Außerdem wird der Zeitstempel wieder auf den Python-Wert None gesetzt. Dadurch kann festgestellt werden, ob sich der Roboter aktuell in einer Drehbewegung befindet.
### UML
.. uml::
@startuml
user -> (use PlantUML)
note left of user
Hello!
end note
@enduml
Der Ablauf für jeden empfangenen Sensorwert kann als folgendes Ablaufdiagramm dargestellt werden.
![image](./img/flowdiagram_1.png)
### Probleme
Ein Problem, das während der Umsetzung auftratt war, dass der Sensor des Roboters in der Simulation, die zum Testen verwendet wurde, und in der Realität unterschiedliche Werte lieferte. Der konkrete Unterschied war, dass es in der echten Welt öfters aufgetreten ist, dass der Sensor in eine Richtung keine Gegenstände findet anhand er den Abstand bestimmen kann. Deshalb wurde in diese Richtung der Abstand 0.0 gesetzt. Da dies kleiner als 0.3 ist, wurde in diesem Fall fälschlicherweise ein Hindernis erkannt. Um dieses Problem zu lösen, wurde die Bedingung zum Erkennen eines Objektes von `Abstand < 0.3` zu `Abstand < 0.3 und Abstand != 0` ergänzt.
......
img/flowdiagram_1.png

32.6 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment