PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ideenanstoß gesucht



oderlachs
14.03.2013, 15:31
Hallo Kenner des Faches !
Ich möchte einen Roboter bauen der sich per US-Sensor den freien Weg sucht, der als weitesten befahrbarer freier Weg durch den Ultraschall-Sensor idendifiziert wird.
So habe ich nun erst mal zur Messung/Speicherung der Werte folgendes geschrieben (Arduino-IDE):

/* ================================================== ======================== */
/* In der Suchfunktion dreht das Servo von der Mitte nach links dann nach */
/* rechts und wieder nach links es werden die Entfernungen und Positionen */
/* gemessen und gespeichert, anschliessend dreht das Servo auf Mitte So kann */
/* der darauf positionierte US-Sensor um 180° alle Objekte erfassen */
/* ================================================== ======================== */
void suche()
{
int pos;

{
for ( pos = 1; pos <=179;pos++ )
{
us_servo.write(pos);
if(entfernung()<= obj_min)obj_min = entfernung();
// else ???
if(entfernung()>= obj_max)obj_max = entfernung();
// else ???
}
for (pos = 179;pos >=1;pos--)
{
us_servo.write(pos);
if( entfernung() <= obj_min )
{
obj_min = entfernung(); // speicher min. Enfernung
pos_min = pos; // speicher pos bei min. Entfernung
}
// else ???
if(entfernung()>= obj_max)
{
obj_max = entfernung(); // speicher max. Enfernung
pos_max = pos; // speicher pos bei max. Entfernung
}
// else ???
}
us_servo.write(servcenter);
}
}

Nun kann ja der Zustand kommen, wo alles ringsrum frei ist....wie soll das Programm da reagieren bzw. der Roboter.
da bin ich dort angekommen, wo ich selber "vor einer Wand stehe" und nicht weiter weiss, in Sachen code wie auch Auswertung.

Der aber noch nicht ganz vollständige Code :HIER (http://robot.oderlachs.de/us_sensor/entfernung.c)

Hat da vielleicht Jemand einen Hinweis für mich??
Ich bedanke mich schon mal für event. Hilfe !!

Gruss
Gerhard

JoeM1978
14.03.2013, 17:09
Wenn ringsrum alles frei ist...
umdrehen und nach hinten macht keinen sinn...
also wird der einfachste weg wohl sein:
-> geradeaus weiterfahren

wenn drei seiten frei sind...
-> eine Richtung vorgeben, die er bevorzugt wählen soll
oder -> per zufall eine Richtung wählen

i_make_it
14.03.2013, 17:25
1234567890

danimath
14.03.2013, 17:27
Moin Gerhard,

geradeaus oder eine zufällige Drehung waren auch mein ersten Gedanken - je nachdem, was der Kleine sonst noch für Aufgaben hat. Gestatte mir noch eine Anmerkung und eine Frage:

Warum benutzt Du zwei for-Schleifen, die das gleiche (allerdings in umgekehrter Richtung) machen? (OK -sieht vielleicht symmetrischer aus ;-))

Vor der ersten Schleife würde ich obj_max auf 0 und obj_min auf irgendetwas ganz großes setzen - evtl. meckert sonst der Compiler wegen nicht initialisierter Werte.

viele Grüße
Andreas

Edit: gerade gesehen: obj_min setzt Du ja schon im setup. Trotzdem würde ich die beiden Sachen vor der Schleife setzen. Sonst bleibt obj_min auf dem minimalen Wert, auch wenn der Roboter sich wieder vom Hindernis entfernt - und analog obj_max.

oderlachs
15.03.2013, 10:07
Hallo,
ja erst einmal recht vielen Dank für Eure Hinweise....!!!!!

Also der Robot hat eigendlich in diesem Programm nur einfach die Aufgabe, umherzufahren wo er einen freien Weg findet.
@danimath:

Warum benutzt Du zwei for-Schleifen, die das gleiche (allerdings in umgekehrter Richtung) machen? (OK -sieht vielleicht symmetrischer aus :wink:)
Ja das ist codemässig etwas dumm gemacht, aber ich bin da auch noch nicht so der Fuchs mehr oder schon wieder. Meine wirklich aktive Programmiererzeit lieg schon 10 Jahre zurück. Ja der Sensor soll oder möchte schon mal hin und herdrehen, auch zum Zweck der Optik beim betrachter.. ;)
Dafür mag ich nicht so viel "LED-Reclame" am Bot...

@Alle : Der Robot soll nix vermessen, kein Schnee schieben (oh das wäre zZt gut, ja bestens sogar :) ) usw. Er hat nur die Aufgabe erst mal zu fahren und freie Wege zu sachen...Sollte Später die RF- o. BT-Verbindung zum PC o.ä. fertig sein kann ma was in der Hinsicht überlegen....
Es ist nur erst mal ein Testaufbau und wird danch wieder zelegt...später sollen die Erkenntnisse Grundlage für Robots , die einen Robot-Wettbewerb dienen sollen.
Für Schüler/Jugendliche/Erwachsene in einer Freizeiteinrichtung.
Die Basis bildet ein DAGU-Magican Chassis in der Erprobung, danach sind freie Ideen als Konstruktion gedacht, nur das die Elektronik sich sehr ähneln wird, auch die Antriebe , wegen der Programmkonfiguration..

Gerhard

Ich werde weiter berichten...

i_make_it
15.03.2013, 13:33
1234567890

ichbinsisyphos
15.03.2013, 14:39
Wenn ringsrum alles frei ist, wenn also keine Entscheidung getroffen werden kann, dann einfach alte Bewegungsrichtung beibehalten. Das schadet zum Beispiel am Beginn, wenn er in eine zufällige Richtung schaut, ist aber zwischendrin sogar wichtig, damit er nicht einfach mittendrin zufällig die Richtung ändert, wenn er sich zu weit von Hidnernissen entfernt. Das würd ich zumindest sagen, wenn das Ding nicht irgendeine spezielle Aufgabe hat.

oderlachs
15.03.2013, 16:05
Danke auch Euch Beiden für die Anregungen !! Ich denke im gedachten späteren Wettbewerb, werden in einem grossen Raum an bestimmten Stellen Leere Milchkartons oder andere Kartonwürfel aufgestellt. das Ziel , kann das ein IR Scheinwerfer, oder besser nur eine LED Lampe sein, denn man sollte ja beim Wettbewerb auch ein bestimmtes Ziel und den Startpunkt haben. Denn sonst hätte man ja kein Richtmass woran, sich die Teilnehmer messen sollen. Es darf nur nicht zu Kompliziert und Kostenaufwendig sein. Denn vieles wird von Sponsoren/Spenden bezahlt werden müssen, viele Kinder haben ja nicht ein "paar Scheine" immer vom Taschengeld dafür übrig. Bei der Sache wollen wir keinen Unterschied, abhängig vom Geldbeutel der Familien machen.
Von Linienfolgern möchte ich erst mal absehen, wegen der Linien die ja irgendwo geklebt werden müssen, und dann auch nicht immer gleich wieder abgelöst werden sollen.

Gerhard

i_make_it
15.03.2013, 17:35
1234567890