24.11.2012 Aufrufe

Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden

Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden

Diplomarbeit - Hochschule für Technik und Wirtschaft Dresden

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!