Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws1314:robotik

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws1314:robotik [2014/01/23 16:44]
maximilian.obst
ws1314:robotik [2016/05/10 14:46] (aktuell)
Zeile 1: Zeile 1:
 ====== Robotik ====== ====== Robotik ======
  
-Unsere ​Gruppe ​wollte sich zuerst mit dem Quadrocopter beschäftigen ​und dessen Gleichgewichtsstörungen beheben und danach gucken, was man noch alles implementieren könnte: z.B. eigenständig Routen abfliegenan bestimmten Orten Aufnahmen mit einer Kamera machen oder auch ferngesteuert Fotos machen. Dafür wollten wir GPS und eine Kamera zur Kollisionserkennung benutzen.+Willkommen auf der Wiki-Seite der Gruppe ​4 Robotik! Hier stellen wir unser Projekt vor, geben ein paar Hintergründe ​und einen kleinen Überblick über den Werdegang unseres ProjektesWir hoffendass ihr hier Interessantes findetViel Erfolg!
  
-Dann kam das Treffen mit Felix (Leiter des Robotiklabors)Der hat uns dann erstmal erklärt, dass der große Quadrocopter aufgrund seiner Größe nicht in zu kleinen Innenräumen fliegen darf, weil ihn aufgrund seiner Größe seine eigens verursachte Luftzirkulation selber behindertMan kann ihn also in Innenräumen nicht ausprobierenDraußen ist auch eher schlechtFür Draußen-Flüge braucht ​man eine Genehmigung und generell ist das Gerät sehr wasseranfällig und sollte deshalb nach Möglichkeit nur sehr sehr wenig bis gar nicht mit ihm in Berührung kommen, was im Winter (sollte der irgendwann noch kommen) generell eher schwierig ist. Außerdem kann es bei Fehlprogrammierung durchaus vorkommen, dass der Quadrocopter ohne Möglichkeit,​ ihn aufzuhalten,​ davonfliegt und dabei sich oder anderen Schaden zufügt.+[[Dokumentation]] ​... Die HauptseiteHier sollte ​man beinahe alles finden, was es über das Projekt zu wissen gibt
  
-Also entfernten wir uns etwas von dem Gedanken mit diesem großen Quadrocopter uns zu beschäftigen und überlegten uns mehr mit kleineren Versionen zu arbeiten, da diese ohne große Probleme drinnen fliegen können. +[[DIE Zukunft^^]] ​..... Ein kleiner Überblick darüber, was wir demnächst vorhaben ​
-Damit hatten wir auch nicht mehr das Problem mit dem Gleichgewicht.+
  
-Wir hatten uns daraufhin auf das Ziel fokussiert das Fluggerät soweit zu programmieren,​ dass es sich eigenständig im (Innen)Raum bewegen kann und zwar ohne irgendwo gegen zu stoßen. Dafür muss es sowohl wissen, wie der Raum aussieht, als auch wo es sich selbst in diesem Raum befindet. +[[start]] .................. ​Zurück zur Hauptseite
- +
-Seitdem haben wir uns des zweiten Teils dieses Problems angenommen: Die Ortung von sich selbst. +
- +
-Unser erster Gedankenansatz lief über die Triangulation. D.h. wir haben mehrere festgesetzte Punkte, deren Standort klar ist und die messen den Abstand zu dem Fluggerät, woraus wir dessen genaue Position im Raum bestimmen können. Da wir zeitgleich das Plotten mit Python im Labor kennen gelernt haben, haben wir versucht unsere Idee zumindest im 2-dimensionalen-Raum darzustellen. Dabei hatten wir auch schon ein paar Probleme, da wir nicht genau wussten, wie die Funktion, welche wir aus dem Internet hatten funktioniert. Deshalb haben wir viel rumprobiert,​ bis uns Stefan eine bessere gegeben hat. +
- +
-Am Ende bei rausgekommen ist folgende Funktion: +
- +
-import numpy as np +
-import matplotlib.pyplot as plt +
-import matplotlib.path as mpath +
-import matplotlib.lines as mlines +
-import matplotlib.patches as mpatches +
- +
- +
-W = { } +
-N = 5 +
- +
-qx = np.random.randint(30) +
-qy = np.random.randint(30) +
-W["​Referenzpunkt X"] =  qx +
-W["​Referenzpunkt Y"=  qy +
- +
-plt.figure() +
-ax=plt.subplot(111) +
-ax.set_xlim([0,​30]+
-ax.set_ylim([0,​30]) +
-ax.add_patch(mpatches.Circle((qx,​ qy), radius=1,​color="​red",​alpha=0.1)) +
- +
-for i in range(0,​N): ​                            #​scatterplot handles data nonlinear, its not legible for triangulation-use +
-  +
- x = np.random.randint(30) +
- y = np.random.randint(30) +
- ankathete = float(x - qx) +
- gegenkathete = float(y - qy) +
- radius = np.sqrt((ankathete**2) + (gegenkathete**2)) +
- kreisumfang = 2*np.pi*radius +
- area = np.pi * (radius)**2  +
- W[i] =  x,​y,​radius,​area +
-  +
- ax.add_patch(mpatches.Circle((x,​y),​radius=radius,​color='​blue',​alpha=0.1)) +
- #​plt.scatter(x,​ y, s=area*190 , alpha=0.1) +
- +
-plt.draw() +
-plt.show() +
-print W +
- +
-//Es wird etwas komisch angezeigt, aber wenn ihr auf bearbeiten klickt, könnt ihr, wenn ihr wollt, den Code gut rauskopieren und selbst ausprobieren.//​ +
- +
-Als wir das Grundkonzept hatten, mussten wir allerdings noch eine Möglichkeit finden das Grundkonzept technisch umzusetzen. +
-Wir haben erst über Lichtsignale nachgedacht,​ haben dann ein wenig im Internet nach Möglichkeiten der Entfernungsmessung gesucht und sind dann auf WLAN und Bluetooth gestoßen. +
-Bei Bluetooth haben wir auch gleich eine passende Mod mit Funktion gefunden und das ausprobiert +
- +
-import bluetooth as bluetooth +
- +
-print "​performing inquiry...+
- +
-nearby_devices = bluetooth.discover_devices(lookup_names = True) +
- +
-print "found %d devices"​ % len(nearby_devices) +
- +
-for addr, name in nearby_devices:​ +
-    print " ​ %s - %s" % (addr, name) +
- +
-find_service(name=None,​ uuid=None, address=None)  +
- +
-//Ähnliche Anzeigeprobleme:​ Deshalb bei Bedarf bitte wie obenAllerdings müsst ihr vorher bluepy downloaden//​ +
- +
-Das haben wir dann mehrfach ausprobiert,​ aber es war deutlich zu ungenau für unsere Zwecke. +
-Dann haben wir überlegt unsere eigene Funktion zu schreiben, durch die wir die Entfernung messen können über elektromagnetische WellenDiese bewegen sich aber viel zu schnell für einen Computer, um daraus vernünftige Ergebnisse raus zuziehenAußerdem bräuchte man sehr starke Sender für die Distanz, sodass wir uns auch von dieser Idee verabschieden mussten. +
- +
-Die letzte Idee war, über 2 oder mehr Kameras Dioden auf dem Quadrocopter zu erkennen und den Quadrocopter dadurch Koordinaten im von den Kameras überblickten Raum zuzuordnenDafür haben wir zunächst versucht, verschiedene Kameras so einzustellen,​ dass möglichst nur noch die Dioden auf den Bildern zu sehen warenDann haben wir die Bilder in den HSV-Farbraum umgewandelt,​ um das Bild so zu bearbeiten, dass Bildteile bestimmter Helligkeit, Farbe und Sättigung weiß und alle anderen Bildteile schwarz gefüllt werdenDies gelang uns recht gut, einzig die Lichtbrechung an den Deckenlampen bewirkt teilweise eine Störung +
-Die jetzige Aufgabe ist es, die Kameras zu kalibrierenDafür wird mithilfe eines Schachbrettes bekannter Größe zunächst für die Kameras jeweils eine Kalibrierungsmatrix erstelltMit diesen Matrizen kann wird dann über die Funktion stereocalibrate die Rotations- und Translationsmatrix und daher dann die Fundamental Matrix bestimmt. +
- +
-Für alle, die, wie wir anfangs, keine Ahnung von den obigen Themen haben, hier ein kleiner Einstieg: +
-Das Problem bei der Bestimung von Koordinaten im Raum durch Kamerabilder ist, dass die Bilder 2-dimensional,​ der Raum jedoch 3-dimensional ist+
ws1314/robotik.1390491890.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)