Der Beschleunigungssensor

Vielleicht können sich einige Leser ja noch an den Beschleunigungssensor, den wir letztes Jahr mit dem NXT nicht zum Laufen gekriegt haben, erinnern. Wir haben ihn wieder gefunden und da momentan alles ganz gut klappt, haben wir uns dazu entschlossen, ihn an den RP6 zu bauen. Gesagt, getan. Das Datenblatt angeguckt, die I²C Register und Adressen ins Programm eingetragen… Fertig! Nach dem ersten Programmupload kam im Terminal ständig die Meldung ,,I2C Error“, nach einem kurzen, genaueren Lesen des Datenblattes war der Fehler dann schnell gefunden. Programm geändert, geuploadet und es funktioniert! Unglaublich! Jetzt haben wir innerhalb von 30min einen super genauen, digitalen Beschleunigungssensor für nur 6€ (als wir ihn gekauft haben, hat er noch 5,95€ gekostet) an den RP6 gebaut und programmiert. Hier ein Bild:

und ein kurzer Programmausschnitt:

void get3DBS(void)
{
I2CTWI_transmitByte(I2C_3DBS_ADR,I2C_REG_3DBS); //Senden 0x02 (define; I2C_REG_3DBS) an die Schreibeadresse 0x70 (define; I2C_3DBS_ADR)
   I2CTWI_readRegisters((I2C_3DBS_ADR+1),I2C_REG_3DBS, sensorBuf, 6); //Lese 6 Bytes von der Leseadresse (71; (I2C_3DBS_ADR+1)) vom Register 2 (define; I2C_REG_3DBS) und schreibe diese in das I²C Empfangsarray sensorBuf
threedbs_x = sensorBuf[0]; //übertragen der empfangenen Daten aus sensorBuf in Variablen
threedbs_y = sensorBuf[2];
threedbs_z = sensorBuf[4];
}

Eigentlich ganz einfach nachzuvollziehen, oder? Man kann jetzt Neigungen in die X-Achse und Neigungen in die Y-Achse erkennen. Außerdem kann man erkennen, ob und wie schnell sich der Roboter nach oben oder nach unten bewegt. Für unseren Roboter ist das aber überflüssig. 😀
Nützlich kann so ein Beschleunigungssensor in unserem Einsatzfall zum Erkennen der Rampe sein. Dazu aber noch mehr, wenn es so weit ist. Der Wallfollower funktioniert jetzt übrigens nahezu perfekt, die Lichtsensoren am Boden des Roboters können auch schon ausgelesen werden.

Ein paar Fotos

Wie schon einmal angekündigt, habe ich nun endlich mal ein paar Fotos gemacht und sie hochgeladen:

Oben seht ihr einen leider defekten Sharp IR Sensor. Ich weiß nicht, was passiert ist, aber er hat zum Schluss über 500mA Strom gezogen. Die IR LED hat auch nicht mehr geleuchtet, von daher habe ich ihn mal zerlegt.

Hier seht ihr unseren aktuellen RP6. Man kann gut die beiden Sharp Infrarot Entfernungssensoren auf der Experimentierplatine, von denen einer zur Seite und einer nach vorne zeigt, erkennen.

Auf dem Bild kann man gut die beiden Lichtsensoren zum Erkennen von Sackgassen sehen.

Auf dem letzten Bild seht ihr einen ganz einfachen, aber mehr oder weniger regelkonformen Testparcours. Man kann die Bretter beliebig anordnen. Die Bretter stammen übrigens aus einem alten Regal und bis vor kurzem habe ich sie noch zum Testen unserer Linefollower verwendet. Recycling! 😉 Diese Bretter sind übrigens auch ein schöner Hintergrund  für Detailfotos, siehe oben.

Weitere Fotos folgen hier!

Fortschritte

Wir haben, glaube ich zumindest, schon einmal davon berichtet, dass wir einen Wallfollower Algorithmus für den NXT benutzen wollen und diesen in C umschreiben. Umgeschrieben haben wir ihn soweit und erste Erfolge wurden auch schon erreicht: Den Abstand gleichmäßig zu einer Wand zu halten, funktioniert 1A. Abbiegen in eine Richtung funktioniert, aber das Einpendeln danach funktioniert noch nicht sooo toll. Das liegt daran, dass der NXC Algorithmus auch negative Geschwindigkeiten, also rückwärts fahren, berechnet, was zwingend notwendig ist, um auch sehr enge Kurven fahren zu können. Wenn man aber eine negative Zahl in die moveAtSpeed Funktion eingibt, fährt der RP6, anders als der NXT, nicht rückwärts. Man muss die Richtung mit changeDir angeben. Das ist natürlich fast unmöglich, wenn man mit einem Motor z.B. mit der Geschwindigkeit 100 vorwärts fahren möchte und mit dem anderen mit der Geschwindigkeit 50 rückwärts, um eine leichte Kurve zu fahren. Wir haben aber in einem anderen Forum nachgefragt und werden vermutlich bald eine Antwort bekommen.

.de Domain

So, wie schon einmal angekündet, haben wir uns nun die .de Domain zugelegt. Früher hatten wir ja die .de.vu bzw. .bplaced.net, aber unsere Homepage wurde immer mehr vollgespamt und immer langsamer. Die .de Domain konnten wir sowieso günstig bekommen und haben nun zugeschlagen. Eventuell werden wir bald mal das Design ändern, aber da müssen wir mal gucken, ob wir was passendes finden.

In Sachen Spam haben wir nun ein Plugin installiert, das den größen Teil rausfiltern sollte, so sind jetzt z.B. keine englischen Kommentare mehr möglich.