PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro programmieren-???



Aegis
15.07.2005, 13:01
Hallo ,
ich habe mir den Asuro zugelegt ,nun komme ich aber mit den
programmieren noch nicht so klar.

Ich möchte das der Asuro durch die Gegent fährt , und bei einen Hinderniss ausweicht.

Wäre jemand so nett mir ein solches Programm zur Verfügung zu stellen.

Ich bedanke mich , und wünsche allen ein schönes Wochenende

Aegis

Archi
15.07.2005, 20:30
Hallo Aegis,

bist du schon die einfachen Sachen (Blinken, Fahren, Linie-Folgen) durch?

CU, Robin

stochri
15.07.2005, 20:47
Hallo Aegis,
hier das gewünschte Programm.

Gruss,
stochri

izaseba
15.07.2005, 20:57
Jetzt will ich hier keine Kritik ausüben, aber ich dachte, daß man sich einen Roboter baut,
um selber zu Programmieren und nicht nach Komplettlösungen zu schreien :-k

Gruß Sebastian

stochri
15.07.2005, 23:24
Hallo Izaseba,
Du hast schon recht, eigentlich sollte man die Programme schon selber schreiben. Die Fragestellung von Aegis ist schon ein wenig seltsam: Hey, ich hab grad einen Roboter gekauft, könnt Ihr mir mal das Prgramm schreiben ?

Aber andereseits: Wenn man so frisch programmieren lernt, dann ist eine Vorlage, die man nach Bedarf abändern kann, manchmal gar nicht so schlecht.

Viele Grüße,
stochri

Aegis
16.07.2005, 08:45
Guten Morgen ,
erst mal vielen dank an Storchi !!!

Das Programm ist in in erster Linie zum anschauen und verstehen
gedacht , natürlich werde ich es auch auf den Asuro laufen lassen .

Ich möchte nicht das der eindruck entsteht ich würde hier nur nur
schlauchen.

Ich habe mir ein Buch über c++ gekauft , komme auch gut damit
zu recht ,ich lese dann das was ich an den Programm von Storchi nicht
verstehe in den Buch nach.

Einen schönen Tag noch

Aegis

Aegis
16.07.2005, 09:01
Hallo ,
-------ich bins, schon wieder,,
Ich kann mir das Programm gar nicht anschauen ,ist ja ein Hex File.

@ Storchi , auch wenn die frage dumm klingt --kann man das Hex File
wieder in einen C++ Code umwandeln..

Gruß
Aegis

izaseba
16.07.2005, 14:48
Hallo Aegis,

Ich wollte Dich auch nicht angreifen,
aber wenn Du erst in die C Programmierung einsteigst wirst Du das Programm vielleicht auch nicht so richtig verstehen....

Ich schlag mal vor, Du setzt Dich mal hin, guckst Dir die Beschreibung zu Asuro, und versuchst erstmal Dioden an und auszumachen, den einfach geradeaus fahrenzulassen,
usw. usw.
Es ist auch nicht schwer, glaube mir, und wenn Du irgendein Programm geschrieben hast, kannst Du das hier posten, und dann fragen, ob und was da falsch ist, es wird Dir sicher jemand helfen, und so lernst Du am meisten.

P.S.
Stochri hat das Programm sicher im C und nicht im C++ geschrieben, das sind zwei verschiedene paar Schuhe

Gruß Sebastian

Andun
16.07.2005, 15:30
Moin.

Ich fang ja auch grade erst an zu proggen und dachte mir "Hey, cool, kannste dir das Programm ja auch mal angucken" :D

Könntest du den Source auch noch posten? Dann könnte man da wirklich ein bisschen abgucken. :D

Danke

Andun

stochri
16.07.2005, 21:10
Hallo Miteinander,
hier der Source-Code. Eigentlich wolte ich den ja bis morgen nach dem Wettbewerb zurückhalten, aber was solls:



#include "asuro.h" // bitte die neue Datei benutzen
// asuro.h und asuro.c vom 31.03.05

#define aus MotorDir(BREAK,BREAK)
#define go {MotorSpeed(150,150);MotorDir(FWD,FWD);}
#define backturn { MotorSpeed(150,250);MotorDir(RWD,RWD);Msleep(1000) ;}

/************************************************** ***********************************

ASURO discovers your apartment

program made by stochri july, 2005

************************************************** ***********************************/

int speed()
{
int rightspeed,leftspeed;
int leftold,rightold;

Encoder_Set(0,0); // reset encoder


leftold=encoder[LEFT];
rightold=encoder[RIGHT];
Msleep(300);
leftspeed=encoder[LEFT]-leftold;
rightspeed=encoder[RIGHT]-rightold;

//SerWrite(" speed Left,Right ",19);
//PrintInt(leftspeed);
//PrintInt(rightspeed);
return leftspeed+rightspeed;
}

int main(void)
{
int n,v,nullspeed;

Init();
Encoder_Init();
StatusLED(OFF);
SerWrite("\n\rASURO OK\n\r",8);

go;
Msleep(500);

nullspeed=speed()-10;

while(1)
{
v=speed();
SerWrite("\n\r speed ",9);
PrintInt(v);

if(v<nullspeed)
{
backturn;
go;
Msleep(500);
}

}
return 0;
}


Das Programm hat viel besser funktioniert, als ich es erwartet habe. Gestern habe ich meinen ASURO fast eine Stunde durch die Wohnung fahren lassen. Er hat so ziemlich alle Zimmer erkundet, ohne dass er irgendwo hängen geblieben ist. Übrigens auch erstaunlich, dass die Akkus so lange halten.

Ich habe mir letztes Jahr mal einen heruntergesetzten Roboterstaubsauger im Wal-Mart fuer 20 Euro gekauft. Der bleibt ziemlich oft mal irgendwo stecken. Da funtkioniert der ASURO mit dem Programm schon wesentlich besser. Der Staubsauger hat vorne 2 Schalter, die hinter einem großen Bumper installiert sind. Und meine Meinung ist, dass so ziemlich alle normallerweise für das Problem eingesetzen Sensoren ( Ultraschall, IR-Abstand, Schalter ) das Steckenbleiben des Roboters nicht verhindern können und dass das im obigen Programm angewendete Verfahren wesentlich besser funktioniert.

Das Ganze wirft auch schon einige interssante mathematische Fragestellungen auf: Wie muss ein Roboter, wenn er gegen ein Hindernis im Zimmer prallt, sich verhalten, damit er möglichst die gesamte Fläche des Raumes mindestens einmal befahren hat ( ein wichtiger Aspekt für Roboterstaubsauger ). Wäre vielleicht eine schöne Aufgabe für einen neuen Wettbewerb.

Gruss,
stochri

Aegis
19.07.2005, 10:11
Hallo alle zusammen,
habe euren Rat befolgt und bin mit ganz einfachen Sachen angefangen
(Led ein/ausschalten usw.)
Aber eins möchte ich noch wissen:
Wenn ich ein fertiges Programm in den "Programmers Notepad" einlade
(z.b.das von Storchi bekomme ich immer die Fehlermeldung "
> Process Exit Code: 2".
Nehme ich einen anderen Compiler z.b.Lcc Win 32
bekomme ich immer Exe.Files.
Was mache ich falsch????

Vielen Dank für eure Mühe

Aegis

mattes2406
19.07.2005, 13:50
@aegis
hast du die neue headerdatei (such einfach hier im forum nach asuro.h und dem autor weja....)?
die headerdatei bietet erweiterte funktionen
ansonsten weiß ich so auch nicht weiter bin auch erst seit ein paar tagen dran.

stochri
19.07.2005, 21:44
Hallo Miteinander,
für das Programm muss man tatsächlich ausro.c und asuro.h aus der weja-lib verwenden. In der weja-lib sind die Routinen für die Wegmessung mit den Odometriesensoren.
Bei den beim ASURO mitgelieferten Routinen kann man nur die Helligkeit der Odometriesensoren auslesen, aber nicht den Weg. Deshalb braucht man die Funktionen aus der weja-lib.

Gruss,
stochri

izaseba
19.07.2005, 22:32
Hallo,
Weja hat auch die Wegemessung anhand der Beispieldatei Viereck.c(glaube ich) aufgebaut, die auf der Asuro CD dabei ist,
Eine sehr gute Routine, habe mich auch für meine Assembler Programme für die Odometrie dran orientiert.

Gruß Sebastian