ss21:roboterlabyrinth

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss21:roboterlabyrinth [2021/11/07 16:02] – [Digitalisierung] dotz_37ss21:roboterlabyrinth [2022/08/02 12:16] (aktuell) dotz_37
Zeile 1: Zeile 1:
-## Einleitung+====== Roboterlabyrinth ====== 
 +Ein Projekt von Zehra Anlatan, Dominic Braun, Henry Kusch & Robin Reichelt. 
 + 
 +====== Einleitung ======
  
 Wie kann man bestimmte Daten, Dateien oder auch Wege innerhalb eines Systems oder einer Karte finden? Die komplexen Arbeitsweisen dieser Algorithmen wurden über Jahre ausgiebig von Mathematikern, Informatikern und Theoretikern auf Basis von mathematischen Grundlagen ausgearbeitet, verfeinert oder neu konzipiert.   Wie kann man bestimmte Daten, Dateien oder auch Wege innerhalb eines Systems oder einer Karte finden? Die komplexen Arbeitsweisen dieser Algorithmen wurden über Jahre ausgiebig von Mathematikern, Informatikern und Theoretikern auf Basis von mathematischen Grundlagen ausgearbeitet, verfeinert oder neu konzipiert.  
Zeile 17: Zeile 20:
 Somit wollen wir vielerlei Möglichkeiten schaffen, diese Konzepte mit Spaß und Leichtigkeit für jedes Alter anschaulich und interaktiv darzustellen. Somit wollen wir vielerlei Möglichkeiten schaffen, diese Konzepte mit Spaß und Leichtigkeit für jedes Alter anschaulich und interaktiv darzustellen.
  
-## Theorie+====== Theorie ======
  
 Viele Probleme der Graphentheorie können mithilfe von Suchalgorithmen effizient gelöst werden. Beispiele für diese Probleme sind das Problem des Handlungsreisenden, die Berechnung kürzester Pfade und die Konstruktion eines minimalen Spannbaums. Viele Probleme der Graphentheorie können mithilfe von Suchalgorithmen effizient gelöst werden. Beispiele für diese Probleme sind das Problem des Handlungsreisenden, die Berechnung kürzester Pfade und die Konstruktion eines minimalen Spannbaums.
Zeile 25: Zeile 28:
 Zusätzlich muss das Kamerabild so verarbeitet werden, sodass die schwarze linie eindeutig identifiziert werden kann. Zusätzlich muss das Kamerabild so verarbeitet werden, sodass die schwarze linie eindeutig identifiziert werden kann.
  
-## Bauplan+====== Bauplan ======
 Da es sich hierbei um einen fertig gebauten Roboter handelt, der im Handel käuflich zu erwerben ist, können wir keinen eigenen Bauplan vorzeigen. Weitere Infos zum Roboter sind auf der eigenen Website unter https://www.digitaldreamlabs.com/ zu finden.  Da es sich hierbei um einen fertig gebauten Roboter handelt, der im Handel käuflich zu erwerben ist, können wir keinen eigenen Bauplan vorzeigen. Weitere Infos zum Roboter sind auf der eigenen Website unter https://www.digitaldreamlabs.com/ zu finden. 
  
 Zu der SW Entwicklung haben wir uns die Dokumentation und das reichlich vorhandene Onlinematerial (Tutorials, Git-Repos etc.) angeschaut.  Zu der SW Entwicklung haben wir uns die Dokumentation und das reichlich vorhandene Onlinematerial (Tutorials, Git-Repos etc.) angeschaut. 
  
-## Material+====== Material ======
  
 - Cozmo - Cozmo
Zeile 38: Zeile 41:
 - Karte - Karte
  
-## Aufbau+====== Aufbau ======
  
 In dem Bild ist der Cozmo zu sehen, wie er exemplarisch einer Linie folgen soll.  In dem Bild ist der Cozmo zu sehen, wie er exemplarisch einer Linie folgen soll. 
Zeile 49: Zeile 52:
 ![example-card-vektor](uploads/66b47d3c3b4c79f41159dccf224a077d/example-card-vektor.png) ![example-card-vektor](uploads/66b47d3c3b4c79f41159dccf224a077d/example-card-vektor.png)
  
-## Start Anleitung:+====== Start Anleitung: ======
  
 - Handy mit dem PC verbinden - Handy mit dem PC verbinden
Zeile 58: Zeile 61:
  
  
-## Zwischenstand+====== Zwischenstand ======
  
 Das aktuelle Problem besteht darin, Cozmo eine Linie folgen zu lassen. Der Ansatz ist  das Nutzen eines bereits erhältlichen Scriptes (line_follower.py) und dieses mit eigenen Erweiterungen auf dem Cozmo zu implementieren. Der nächste Schritt ist dann, die Suchalgortihmen und den line_follower so zu verbinden, dass der Cozmo die Linien abfährt, dabei die Wege mappt und anschließend den schnellsten Weg berechnet. Hierbei sollen die Algorithmen eigenständig implementiert werden, aber über eine Schnittstelle mit line_follower verbunden werden können. Probleme bestehen darin, die Skripte auf den Cozmo zu übertragen und korrekt auszuführen.  Das aktuelle Problem besteht darin, Cozmo eine Linie folgen zu lassen. Der Ansatz ist  das Nutzen eines bereits erhältlichen Scriptes (line_follower.py) und dieses mit eigenen Erweiterungen auf dem Cozmo zu implementieren. Der nächste Schritt ist dann, die Suchalgortihmen und den line_follower so zu verbinden, dass der Cozmo die Linien abfährt, dabei die Wege mappt und anschließend den schnellsten Weg berechnet. Hierbei sollen die Algorithmen eigenständig implementiert werden, aber über eine Schnittstelle mit line_follower verbunden werden können. Probleme bestehen darin, die Skripte auf den Cozmo zu übertragen und korrekt auszuführen. 
  
-## Verbesserungen für Version (nach 09.Juli.2021)+====== Verbesserungen für Version   ====== 
 +(nach 09.Juli.2021)
  
-Es besteht die möglichkeit eine direkte verbindung über den PC, ohne die mobile App, mit dem Cozmo aufzubauen. Dies ist ein open Source Projekt (PyCozmo) von privaten Entwicklern und bietet fast die gleichen funktionen, wie die Cozmo SDK.+Es besteht die Möglichkeit eine direkte verbindung über den PC, ohne die mobile App, mit dem Cozmo aufzubauen. Dies ist ein open Source Projekt (PyCozmo) von privaten Entwicklern und bietet fast die gleichen funktionen, wie die Cozmo SDK.
  
-## Digitalisierung+===== Digitalisierung =====
  
 Da eine Fertigstellung nicht mehr zu realisieren war, wurde der Ansatz verfolgt, die Algorithmen virtuell darzustellen: Da eine Fertigstellung nicht mehr zu realisieren war, wurde der Ansatz verfolgt, die Algorithmen virtuell darzustellen:
Zeile 78: Zeile 82:
 pygame.init()\\ pygame.init()\\
  
-disp=pygame.display.set_mode((640,640))\\+disp=pygame.display.set_mode\(\(640,640))\\
  
  
-items = ["hello","world","thing","other thing"]\\+items = ["Algorithm 1","Algorithm 2","Algorithm 3","exit"]\\
  
  
 nodelist = node.grow(64,64)\\ nodelist = node.grow(64,64)\\
  
-pixel = pygame.Surface((10,10))\\ +pixel = pygame.Surface\((10,10))\\ 
-pixel.fill((200,200,200))\\+pixel.fill\((200,200,200))\\
 for i in nodelist:\\ for i in nodelist:\\
     disp.blit(pixel,(i.Position[0]*10,i.Position[1]*10))\\     disp.blit(pixel,(i.Position[0]*10,i.Position[1]*10))\\
Zeile 109: Zeile 113:
 from random import randint as rand\\ from random import randint as rand\\
 class Node:\\ class Node:\\
-    def __init__(self, position):\\+    def \_\_init\_\_(self, position):\\
         self.Position = position\\         self.Position = position\\
         self.Neighbours = [None, None, None, None]\\         self.Neighbours = [None, None, None, None]\\
Zeile 116: Zeile 120:
         # 2 \\         # 2 \\
  
-    def __eq__(self,other): \\+    def \_\_eq\_\_(self,other): \\
         return self.Position == other.Position \\         return self.Position == other.Position \\
-    def __repr__(self): \\+    def \_\_repr\_\_(self): \\
         return str(self.Position[0])+','+str(self.Position) \\         return str(self.Position[0])+','+str(self.Position) \\
  
Zeile 126: Zeile 130:
 def grow(x,y): \\ def grow(x,y): \\
     nodelist=[] \\     nodelist=[] \\
-    Start_node = Node((0,0)) \\+    Start_node = Node\((0,0)) \\
     nodelist.append(Start_node) \\     nodelist.append(Start_node) \\
     cur = Start_node \\     cur = Start_node \\
Zeile 132: Zeile 136:
  
     i = 0 \\     i = 0 \\
-    while i < (x*y//2):#do things until maze if mazy enough \\+    while i < (x*y//2):#creates a random maze \\
  
         cur = nodelist[rand(0,len(nodelist)-1)]#i know randchoice is a thing \\         cur = nodelist[rand(0,len(nodelist)-1)]#i know randchoice is a thing \\
Zeile 146: Zeile 150:
  
  
-        new = Node((nposx,nposy)) \\+        new = Node\((nposx,nposy)) \\
  
         if new in nodelist: \\         if new in nodelist: \\
Zeile 153: Zeile 157:
                  
         '''\\         '''\\
-        Es werdeb 4 neue Knoten erstellt, die später wieder gelöscht werden. Eine Hashmap wäre hier effizienter. \\+        Es werden 4 neue Knoten erstellt, die später wieder gelöscht werden. Eine Hashmap wäre hier effizienter. \\
         '''\\         '''\\
-        getnode = lambda a,b : nodelist[nodelist.index(Node((a,b)))]\\+        getnode = lambda a,b : nodelist[nodelist.index(Node\((a,b)))]\\
         otherlist=[]\\         otherlist=[]\\
         try:\\         try:\\
Zeile 197: Zeile 201:
  
  
-## Quellenverzeichnis+===== Quellenverzeichnis =====
  
 - [libcozmo](https://github.com/vinitha910/libcozmo) - [libcozmo](https://github.com/vinitha910/libcozmo)
  • ss21/roboterlabyrinth.1636297336.txt.gz
  • Zuletzt geändert: 2021/11/07 16:02
  • von dotz_37