Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden
Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden
Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Diplomarbeit</strong>: Modulares System Testen der Steuerungsskripte im Simulator<br />
7.2.2. Verwendung der VM.DLL<br />
Um die Virtuelle Maschine zu verwenden, muss die DLL geladen <strong>und</strong> initialisiert werden. Dies kann<br />
statisch passieren, also die DLL direkt fest in das Programm eingeb<strong>und</strong>en werden oder es kann<br />
dynamisch geschehen, das heißt, dass die DLL erst geladen wird, wenn sie verwendet wird <strong>und</strong> damit<br />
auch jederzeit im laufenden Betrieb entladen <strong>und</strong> getauscht werden kann. Die Funktionen der DLL<br />
müssen an Funktionszeiger geb<strong>und</strong>en werden, damit sie verwendet werden können. Im ersten Aufruf<br />
muss die Virtuellen Maschine initialisiert werden <strong>und</strong> es müssen ihr die Zeiger auf die beiden<br />
Kommunikationskommandos (Get, Put) bekannt gemacht werden. Als Rückgabewert erhält das<br />
aufrufende Programm eine Nummer, über die die DLL die richtige Maschine erkennen kann.<br />
Abbildung 7.6 - Einbinden der VM.DLL<br />
7.3. Easybot<br />
FARPROC funcptr;<br />
dllhandle=LoadLibrary("vm.dll");<br />
if (dllhandle==0) AfxMessageBox("DLL nicht gef<strong>und</strong>en!");<br />
funcptr=GetProcAddress(dllhandle, "vmOpenFile");<br />
if (funcptr)<br />
vm_openfile=(FXOpenFile)funcptr;<br />
else<br />
AfxMessageBox("Funktion vmOpenFile nicht gef<strong>und</strong>en!");<br />
funcptr=GetProcAddress(dllhandle, "vmStep");<br />
if (funcptr)<br />
vm_step=(FXStep)funcptr;<br />
else<br />
AfxMessageBox("Funktion vmStep nicht gef<strong>und</strong>en!");<br />
...<br />
if (vm_init)<br />
nr=vm_init(robot,NULL,NULL,Get,Put);<br />
else<br />
nr=-1;<br />
Der Simulator Easybot von O. Michel ist sehr gut geeignet, um Algorithmen zur Steuerung von<br />
Robotern zu testen, die nur aus einem Antrieb <strong>und</strong> Entfernungssensoren bestehen. Er bietet gute<br />
Möglichkeiten, um eine reale Umgebung nachzuempfinden. In diese können Roboter gesetzt werden,<br />
die einen Satz Sensoren enthalten, die aber in erster Linie nur die Entfernung zum nächsten Objekt<br />
angeben. Über eine Schnittstelle können diese Sensoren abgefragt <strong>und</strong> der Roboter bewegt werden.<br />
Dies wird durch die Schnittstelle Easybot in Lightvision3D realisiert.<br />
7.3.1. Lightvision3D<br />
Lightvision3D ist ein einfacher 3D-Modellierer. Er ermöglicht das Erzeugen einfacher 3D-Welten, die<br />
als Testumgebung <strong>für</strong> Roboter dienen können.<br />
Erzeugt werden die Objekte direkt im Programm. Hier<strong>für</strong> steht eine Reihe von Gr<strong>und</strong>körpern wie zum<br />
Beispiel Dreieck, Kugel oder Pyramide zur Verfügung. Um auch komplexere Objekte erzeugen zu<br />
können <strong>und</strong> gleichzeitig eine größtmögliche Dynamik zu erreichen, ist der Modellierer mit mehreren<br />
freien Schnittstellen versehen. Diese ermöglichen sowohl die Anbindung komplexerer<br />
Konstruktionswerkzeuge als auch spezieller Lade- <strong>und</strong> Speicherfunktionen <strong>für</strong> andere Dateiformate,<br />
wie zum Beispiel .3ds, einem Format des professionellen 3D-Modellierers 3D-Studio Max von Kinetix.<br />
Diese Erweiterungen müssen als DLL vorhanden sein. Jedes Objekt kann mit Materialeigenschaften<br />
26.07.2004 Seite 53 von 85