Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1314:robotik

Dies ist eine alte Version des Dokuments!


Robotik

Unsere Gruppe wollte sich zuerst mit dem Quadrocopter beschäftigen und dessen Gleichgewichtsstörungen beheben und dannach gucken, was man noch alles implementieren könnte: z.B. eigenständig Routen abfliegen, an bestimmten Orten Aufnahmen mit einer Kamera machen oder auch ferngesteuert Fotos machen.

Dann kam das Treffen mit Felix (Bauer des Quadrocopters und Leiter des Robotiklabors). Der hat uns dann erstmal erklärt, dass der Quadrocopter aufgrund seiner Größe nicht in zu kleinen Innenräumen fliegen darf, weil ihn aufgrund seiner Größe seine eigens verursachte Luftzirkulation selber behindert. Draußen ist auch eher schlecht. Auf dem Gelände der TU 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.

Also entfernten wir uns etwas von dem Gedanken mit diesem Quadrocopter uns zu beschäftigen und überlegten uns mehr mit kleineren Versionen zu arbeiten, da diese ohne große Probleme drinnen fliegen können. 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.

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:

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.Circle1)

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.

1) qx, qy), radius=1,color=„red“,alpha=0.1
ws1314/robotik.1389262214.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)