14.11.2012 Aufrufe

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

Projekt Micarpet Projektbericht - artecLab - Universität Bremen

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>Projekt</strong> MiCarpet <strong>Projekt</strong>bericht<br />

Abbildung 14.42: Kollisions-Position und resultierendes SIOS-Kommando<br />

Die Methode bekommt als Übergabeparameter eine Referenz auf die Eventliste event_list<br />

und die Zeitdifferenz timeSinceLastUpdate. Aus der Eventliste wird die aktuell aufgetretene<br />

Kollision geholt und die entsprechende Kollisionsseite auf der Plattform berechnet. Dann gibt<br />

sie es an die Methode positionToCommand() weiter, wo der Befehl für das Anschalten der<br />

Digitalausgaben gewählt wird. Insgesamt gibt es acht Kollisionspositionen. Für jede Position gab<br />

es einen bestimmten Wert und einen bestimmten Befehl für das Anschalten des entsprechenden<br />

Ausgabestrom auf der SIOS. An jeden Ausgabestromport ist ein Relais angeschlossen, wodurch<br />

den Strom für das Anschalten der Druckluft fließt (vgl. 2do).<br />

Es wird die Methode setDigitouput() der SIOS-Schnittstelle aufgerufen, die dafür sorgt,<br />

dass der Rückgabewert (Befehl) der Methode positionToCommand() an die Digitalausgabeporte<br />

als Strom gesendet wurde, um den Anstoß des virtuellen Teppichs an der Plattform zu simulieren.<br />

Für jede erzeugte Stromausgabe wurde eine Dauerzeit 5ms (CollisionTime) gesetzt,<br />

auf welche die Zeit timeSinceLastUpdate bei jedem Aufruf mittels der structTimeCounter-<br />

Methode abgezogen wird. Sobald die CollisionTime sich zwischen 0.0f und -0.1f befindete, werden<br />

die angeschalteten Ports wieder ausgeschaltet.<br />

void CCollisionPlugin::updateOutput( tEventList& event_list, float timeSinceLastUpdate )<br />

{<br />

float xKoord, zKoord;<br />

int positionCollision=-1;<br />

//std::cout = -PLATTFORM_BREITE/2 && xKoord < PLATTFORM_BREITE/2)<br />

6. Januar 2005 Seite 190

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!