HermannSW
26.03.2007, 22:16
Der Asuro meines Sohnes Robert [genannt Robertor :)] konnte leider gar nicht auf der RobotChallenge antreten :( [wegen Problemen mit den Fotosensoren, tags zuvor hat noch alles funktioniert], aber diesen etwas Anderen Asuro wollte ich hier sowieso einmal aufgrund seiner Vorteile vorstellen:
automatischer Schutz der Odometriesensoren vor Außenlichteinstrahlung durch Asuroplatine und Zahnräder
wechselbare, und dennoch stabile Anbringung der Fotosensoren
einfache Lösung für damit verbundene "Softwareprobleme" (LEFT/RIGHT bzw. FWD/RWD)
sehr leicht
extrem schnell
Wegen der großen Reifen ist die Platine zwangsweise etwas höher angebracht als bei einem "normalen" Asuro. Um nun das Gewicht möglichst tief zu legen, war die erste Idee (welche auch schon öfter hier im Forum diskutiert wurde), den Batteriepack auf der Unterseite anzubringen. Diese Idee weiterspinnend stellte sich die Frage: Warum nur den Batteriepack?
Dann kam die einfache, aber gute Idee, den Asuro einfach falsch herum fahren zu lassen! (und somit Alles auf der (neuen) "Unterseite")
Hier die erste Version des Asuro upside down [neuhochdeutsch :)]
http://www.stamm-wilbrandt.de/videos/070306_232857_small.jpg
In der ersten Konstruktion waren die FrontLED und die beiden Fotosensoren noch etwas hoch angebracht, aber die nächsten Fotos zeigen die aktuelle Anbringungshöhe, die eine waagerechte Platine ermöglicht.
http://www.stamm-wilbrandt.de/videos/070325_225803_small.jpg http://www.stamm-wilbrandt.de/videos/070325_225833_small.jpg http://www.stamm-wilbrandt.de/videos/070325_225859_small.jpg
Die Motoren sind nur deshalb nach oben gewandert, da für eine bessere Untersetzung das Zahnrad mit 50 Zähnen durch eines mit 30 Zähnen ersetzt wurde, wobei die Messingachse dem Motor auf der anderen Seite der Platine im Weg war (siehe folgenden Beitrag (https://www.roboternetz.de/phpBB2/viewtopic.php?p=265315#265315)).
Die Untersetzung beträgt jetzt 1:8.1 [25*(30/50)*(38/70), Standard-Asuro 1:25] da die Reifen einen Durchmesser von 70mm anstatt der normalen 38er Asuroreifen haben. [Leider ist durch das 30er-Zahnrad die Odometrie abhanden gekommen, da das (jetzt kleinere) Zahnrad nicht mehr im Sichtbereich des T11 liegt -- warum sind T11 und T12 auch verschieden herum angebracht?? Das Problem ist aber sicher lösbar und taucht gar nicht auf, wenn man das 50er Zahnrad beläßt.]
http://www.stamm-wilbrandt.de/videos/070325_225950_small.jpg
Um dem Asuro upside down auch ohne Ultraschall zu einer Hinderniserkennung zu verhelfen, wurden die IR-Sendediode als auch das IR-Empfänger-IC verpflanzt. Hierbei wird die Asuro-Platine(!) zur Verhinderung der Streueinstrahlung der IR-Sendediode verwendet. Das IR-Empfänger-IC ist einfach (unten in der Mitte) mit Sekundenkleber vor die Buchsenleiste für die Erweiterungsplatine geklebt, und die IR-Sendediode ist (oben) auf der Unterseite der Asuroplatine angebracht.
http://www.stamm-wilbrandt.de/videos/070325_225930_small.jpg
Der (für mich) wichtigste Grund für einen Asuro upside down ist die stabile und wechselbare Anbringung sowohl der FrontLED/Fototransistoren als auch des halben Tischtennisballs. Hierzu wird ein passend zugeschnittenes Stück Lochrasterplatine verwendet, welches mit seinen 10 Stiften genau in die 8 Buchsen vorne und 2 Buchsen hinten der Erweiterungsplatinenbuchsen paßt! Dies ist eine sehr stabile Anbringung, und der halbe Tischtennisball muß nicht mehr auf der Asuroplatine, sondern auf diesem kleinen Stück Lochrasterplatine mit Sekundenkleber angebracht werden. Hierbei ist lediglich die etwas verbogene Anbringung der mittleren vorderen beiden Pins etwas knifflig. Wie man sieht, ist der halbe Tischtennisball sogar Teil der aufhellenden IR-Schürze um die Fototransistoren (siehe folgenden Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=29109)) ...
http://www.stamm-wilbrandt.de/videos/070325_230018_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230052_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230112_small.jpg
Die Räder sind mit der tollen Befestigungstechnik von radbruch (siehe folgenden Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=28345)) angebracht. Wichtig ist es nur, die Kabelbinder nicht zu fest anzuziehen, da ansonsten das kleine Rad gegen den festgeschraubten Stellring gepreßt wird! Die Achse ist nicht durchgängig, und somit hängt das große 70er Rad nur an den drei Kabelbindern. Diese lockere Anbringung realisiert aber nebenbei einen Radsturz (http://de.wikipedia.org/wiki/Radsturz), welcher aus dem Automobilsport als nützlich bei hohen Geschwindigkeiten bekannt ist.
http://www.stamm-wilbrandt.de/videos/070325_230156_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230333_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230351_small.jpg
Softwaremäßig ergibt sich für den Asuro upside down ein kleines (lösbares) Problem:
Nachdem die Unterseite "oben" ist, sind LEFT und RIGHT bzw. FWD und RWD vertauscht! Dies betrifft auch Funktionen wie LineData(), welche Daten für die linke/rechte Seite erwarten oder übergeben.
Dieses Problemchen läßt sich recht einfach durch folgenden einzufügenden Block am Ende der Datei asuro.h lösen:
#ifdef UPSIDE_DOWN
#undef FWD
#define FWD (1 << PB4) /*!< Motor vorwaerts */
#undef RWD
#define RWD (1 << PB5) /*!< Motor rueckwaerts */
#undef LEFT
#define LEFT 1
#undef RIGHT
#define RIGHT 0
#undef LEFT_DIR
#define LEFT_DIR (1 << PB4) | (1 << PB5) /*!< PB4, PB5 Ports fuer Drehrichtung rechter Motor */
#undef RIGHT_DIR
#define RIGHT_DIR (1 << PD4) | (1 << PD5) /*!< PD4, PD5 Ports fuer Drehrichtung linker Motor */
#undef IR_RIGHT
#define IR_RIGHT (1 << MUX0) | (1 << MUX1) /*!< ADC3 A/D Wandler Port fuer Linienfolger Fototransistor links */
#undef IR_LEFT
#define IR_LEFT (1 << MUX1) /*!< ADC2 A/D Wandler Port fuer Linienfolger Fototransistor rechts */
#undef WHEEL_RIGHT
#define WHEEL_RIGHT (1 << MUX0) /*!< ADC1 A/D Wandler Port fuer Odometrie Sensor links*/
#undef WHEEL_LEFT
#define WHEEL_LEFT 0 /*!< ADC0 A/D Wandler Port fuer Odometrie Sensor rechts */
#define BackLED(l,r) BackLED(r,l)
#define MotorDir(l,r) MotorDir(r,l)
#define MotorDir(l,r) MotorDir(r,l)
#define MotorSpeed(l,r) MotorSpeed(r,l)
#define SetMotorPower(l,r) SetMotorPower(r,l)
#endif
Dann noch $(DEFS) in der ersten Zeile von CFLAGS im Makefile einfügen
...
CFLAGS = -g $(DEFS) -O$(OPT) -I../../lib/inc\
...und "make DEFS=-DUPSIDE_DOWN" erledigt den Rest!
Der Asuro upside down mit 4xAAA-Akkus bringt gerade einmal 221g auf die Waage!
http://www.stamm-wilbrandt.de/videos/070326_063140_small.jpg
Außerdem ist Robertor jetzt extrem schnell, ich mußte mich zum drehen des Videos in unserer Küche auf die Arbeitsfläche setzen,
http://www.stamm-wilbrandt.de/videos/070325_234530.frame.jpg
siehe folgendes Video: 3gp (http://www.stamm-wilbrandt.de/videos/070325_234530.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070325_234530.mpg.mpeg)
Eine Rund von ca. 5.7m schaffte er in 4.5s, das sind 1.26m/s inklusive der Kurven, durch die er driftete.
Danach kamen Messungen im Wohnzimmer auf gerader Strecke, im ersten Video sieht man, daß alle 3 Platten eine Markierung auf dem Boden liegt. Hier die drei Videos: 1000ms FWD, dann BREAK, etwas mehr als 3 Platten (3gp (http://www.stamm-wilbrandt.de/videos/070326_001345.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070326_001345.mpeg))
1500ms FWD, dann BREAK, etwas mehr als 6 Platten (3gp (http://www.stamm-wilbrandt.de/videos/070326_001010.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070326_001010.mpeg))
2000ms FWD, dann BREAK, etwas mehr als 9 Platten (3gp (http://www.stamm-wilbrandt.de/videos/070326_000810.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070326_000810.mpeg))
Die Geschwindigkeit betrug also 3 Platten â 30cm in 500ms, oder 1.8m/s!
Robertor hatte dabei eine Untersetzung von 1:8.1 und X-Slot Tuning Motoren (siehe folgenden Beitrag (https://www.roboternetz.de/phpBB2/viewtopic.php?p=262450#262450) von Waste), und die 4 AAA-Akkus hatten noch eine Spannung von 5.15V ...
automatischer Schutz der Odometriesensoren vor Außenlichteinstrahlung durch Asuroplatine und Zahnräder
wechselbare, und dennoch stabile Anbringung der Fotosensoren
einfache Lösung für damit verbundene "Softwareprobleme" (LEFT/RIGHT bzw. FWD/RWD)
sehr leicht
extrem schnell
Wegen der großen Reifen ist die Platine zwangsweise etwas höher angebracht als bei einem "normalen" Asuro. Um nun das Gewicht möglichst tief zu legen, war die erste Idee (welche auch schon öfter hier im Forum diskutiert wurde), den Batteriepack auf der Unterseite anzubringen. Diese Idee weiterspinnend stellte sich die Frage: Warum nur den Batteriepack?
Dann kam die einfache, aber gute Idee, den Asuro einfach falsch herum fahren zu lassen! (und somit Alles auf der (neuen) "Unterseite")
Hier die erste Version des Asuro upside down [neuhochdeutsch :)]
http://www.stamm-wilbrandt.de/videos/070306_232857_small.jpg
In der ersten Konstruktion waren die FrontLED und die beiden Fotosensoren noch etwas hoch angebracht, aber die nächsten Fotos zeigen die aktuelle Anbringungshöhe, die eine waagerechte Platine ermöglicht.
http://www.stamm-wilbrandt.de/videos/070325_225803_small.jpg http://www.stamm-wilbrandt.de/videos/070325_225833_small.jpg http://www.stamm-wilbrandt.de/videos/070325_225859_small.jpg
Die Motoren sind nur deshalb nach oben gewandert, da für eine bessere Untersetzung das Zahnrad mit 50 Zähnen durch eines mit 30 Zähnen ersetzt wurde, wobei die Messingachse dem Motor auf der anderen Seite der Platine im Weg war (siehe folgenden Beitrag (https://www.roboternetz.de/phpBB2/viewtopic.php?p=265315#265315)).
Die Untersetzung beträgt jetzt 1:8.1 [25*(30/50)*(38/70), Standard-Asuro 1:25] da die Reifen einen Durchmesser von 70mm anstatt der normalen 38er Asuroreifen haben. [Leider ist durch das 30er-Zahnrad die Odometrie abhanden gekommen, da das (jetzt kleinere) Zahnrad nicht mehr im Sichtbereich des T11 liegt -- warum sind T11 und T12 auch verschieden herum angebracht?? Das Problem ist aber sicher lösbar und taucht gar nicht auf, wenn man das 50er Zahnrad beläßt.]
http://www.stamm-wilbrandt.de/videos/070325_225950_small.jpg
Um dem Asuro upside down auch ohne Ultraschall zu einer Hinderniserkennung zu verhelfen, wurden die IR-Sendediode als auch das IR-Empfänger-IC verpflanzt. Hierbei wird die Asuro-Platine(!) zur Verhinderung der Streueinstrahlung der IR-Sendediode verwendet. Das IR-Empfänger-IC ist einfach (unten in der Mitte) mit Sekundenkleber vor die Buchsenleiste für die Erweiterungsplatine geklebt, und die IR-Sendediode ist (oben) auf der Unterseite der Asuroplatine angebracht.
http://www.stamm-wilbrandt.de/videos/070325_225930_small.jpg
Der (für mich) wichtigste Grund für einen Asuro upside down ist die stabile und wechselbare Anbringung sowohl der FrontLED/Fototransistoren als auch des halben Tischtennisballs. Hierzu wird ein passend zugeschnittenes Stück Lochrasterplatine verwendet, welches mit seinen 10 Stiften genau in die 8 Buchsen vorne und 2 Buchsen hinten der Erweiterungsplatinenbuchsen paßt! Dies ist eine sehr stabile Anbringung, und der halbe Tischtennisball muß nicht mehr auf der Asuroplatine, sondern auf diesem kleinen Stück Lochrasterplatine mit Sekundenkleber angebracht werden. Hierbei ist lediglich die etwas verbogene Anbringung der mittleren vorderen beiden Pins etwas knifflig. Wie man sieht, ist der halbe Tischtennisball sogar Teil der aufhellenden IR-Schürze um die Fototransistoren (siehe folgenden Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=29109)) ...
http://www.stamm-wilbrandt.de/videos/070325_230018_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230052_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230112_small.jpg
Die Räder sind mit der tollen Befestigungstechnik von radbruch (siehe folgenden Thread (https://www.roboternetz.de/phpBB2/viewtopic.php?t=28345)) angebracht. Wichtig ist es nur, die Kabelbinder nicht zu fest anzuziehen, da ansonsten das kleine Rad gegen den festgeschraubten Stellring gepreßt wird! Die Achse ist nicht durchgängig, und somit hängt das große 70er Rad nur an den drei Kabelbindern. Diese lockere Anbringung realisiert aber nebenbei einen Radsturz (http://de.wikipedia.org/wiki/Radsturz), welcher aus dem Automobilsport als nützlich bei hohen Geschwindigkeiten bekannt ist.
http://www.stamm-wilbrandt.de/videos/070325_230156_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230333_small.jpg http://www.stamm-wilbrandt.de/videos/070325_230351_small.jpg
Softwaremäßig ergibt sich für den Asuro upside down ein kleines (lösbares) Problem:
Nachdem die Unterseite "oben" ist, sind LEFT und RIGHT bzw. FWD und RWD vertauscht! Dies betrifft auch Funktionen wie LineData(), welche Daten für die linke/rechte Seite erwarten oder übergeben.
Dieses Problemchen läßt sich recht einfach durch folgenden einzufügenden Block am Ende der Datei asuro.h lösen:
#ifdef UPSIDE_DOWN
#undef FWD
#define FWD (1 << PB4) /*!< Motor vorwaerts */
#undef RWD
#define RWD (1 << PB5) /*!< Motor rueckwaerts */
#undef LEFT
#define LEFT 1
#undef RIGHT
#define RIGHT 0
#undef LEFT_DIR
#define LEFT_DIR (1 << PB4) | (1 << PB5) /*!< PB4, PB5 Ports fuer Drehrichtung rechter Motor */
#undef RIGHT_DIR
#define RIGHT_DIR (1 << PD4) | (1 << PD5) /*!< PD4, PD5 Ports fuer Drehrichtung linker Motor */
#undef IR_RIGHT
#define IR_RIGHT (1 << MUX0) | (1 << MUX1) /*!< ADC3 A/D Wandler Port fuer Linienfolger Fototransistor links */
#undef IR_LEFT
#define IR_LEFT (1 << MUX1) /*!< ADC2 A/D Wandler Port fuer Linienfolger Fototransistor rechts */
#undef WHEEL_RIGHT
#define WHEEL_RIGHT (1 << MUX0) /*!< ADC1 A/D Wandler Port fuer Odometrie Sensor links*/
#undef WHEEL_LEFT
#define WHEEL_LEFT 0 /*!< ADC0 A/D Wandler Port fuer Odometrie Sensor rechts */
#define BackLED(l,r) BackLED(r,l)
#define MotorDir(l,r) MotorDir(r,l)
#define MotorDir(l,r) MotorDir(r,l)
#define MotorSpeed(l,r) MotorSpeed(r,l)
#define SetMotorPower(l,r) SetMotorPower(r,l)
#endif
Dann noch $(DEFS) in der ersten Zeile von CFLAGS im Makefile einfügen
...
CFLAGS = -g $(DEFS) -O$(OPT) -I../../lib/inc\
...und "make DEFS=-DUPSIDE_DOWN" erledigt den Rest!
Der Asuro upside down mit 4xAAA-Akkus bringt gerade einmal 221g auf die Waage!
http://www.stamm-wilbrandt.de/videos/070326_063140_small.jpg
Außerdem ist Robertor jetzt extrem schnell, ich mußte mich zum drehen des Videos in unserer Küche auf die Arbeitsfläche setzen,
http://www.stamm-wilbrandt.de/videos/070325_234530.frame.jpg
siehe folgendes Video: 3gp (http://www.stamm-wilbrandt.de/videos/070325_234530.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070325_234530.mpg.mpeg)
Eine Rund von ca. 5.7m schaffte er in 4.5s, das sind 1.26m/s inklusive der Kurven, durch die er driftete.
Danach kamen Messungen im Wohnzimmer auf gerader Strecke, im ersten Video sieht man, daß alle 3 Platten eine Markierung auf dem Boden liegt. Hier die drei Videos: 1000ms FWD, dann BREAK, etwas mehr als 3 Platten (3gp (http://www.stamm-wilbrandt.de/videos/070326_001345.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070326_001345.mpeg))
1500ms FWD, dann BREAK, etwas mehr als 6 Platten (3gp (http://www.stamm-wilbrandt.de/videos/070326_001010.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070326_001010.mpeg))
2000ms FWD, dann BREAK, etwas mehr als 9 Platten (3gp (http://www.stamm-wilbrandt.de/videos/070326_000810.3gp) mpeg (http://www.stamm-wilbrandt.de/videos/070326_000810.mpeg))
Die Geschwindigkeit betrug also 3 Platten â 30cm in 500ms, oder 1.8m/s!
Robertor hatte dabei eine Untersetzung von 1:8.1 und X-Slot Tuning Motoren (siehe folgenden Beitrag (https://www.roboternetz.de/phpBB2/viewtopic.php?p=262450#262450) von Waste), und die 4 AAA-Akkus hatten noch eine Spannung von 5.15V ...