- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 47

Thema: ASURO für Robotereinsteiger

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    19.07.2005
    Ort
    Bremen
    Alter
    40
    Beiträge
    45
    Anzeige

    Powerstation Test
    Moin, ich habe ein kleines Problem. Ich habe mein Programm einer Linie zu folgen mit einem Programm zum erkennen und ausweichen von Hindernissen kombiniert. Der ASURO folgt der Linie wie er soll aber sobald er ein Hindernis berührt fährt er die programmierte Zeit zurück und bleibt dann stehen und das Programm zum Linie folgen läuft nicht wieder an. Ich habe schon vieles versucht, muss aber zugeben, dass ich nicht viel Erfahrung mit C habe. Was habe ich vergessen ? Wer kann mir helfen ? Und Danke an stochri für deine Bemühungen.

    mfG Sebastian

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    19.07.2005
    Ort
    Bremen
    Alter
    40
    Beiträge
    45
    Der Code für mein kleines Programm:
    Code:
    #include "asuro.h"
    
    /*************************************************************************** 
    *                                                                          * 
    *   Dieses Programm ist für den ASURO Roboter                              * 
    *                                                                          * 
    *   Linie verfolgen, Hindernisse erkennen und ihnen ausweichen             * 
    *                                                                          * 
    ***************************************************************************/ 
    
    
    /*************************************************************************** 
    *                                                                          * 
    *   Mit diesem Programm soll der ASURO Roboter mit Hilfe seines Linien-    * 
    *   sensors eine dunkle Linie erkennen und ihr folgen können. Außerdem     * 
    *   soll er mit seinen Kollisionstastern Hindernisse bemerken und ihnen    * 
    *   ausweichen und anschließend wieder einer Linie zu folgen.              * 
    ***************************************************************************/ 
    
    
    /***************************************************************************  
    * 
    *   unsigned int data[2]; = Speicher für Liniensensor reservieren 
    * 
    *   data[0] = linker Sensor, data[1] = rechter Sensor
    * 
    *   Das Rückwärtsfahren des Roboters geschieht Zeitgesteuert, da keine
    *   weitere Sensorik vorhanden ist.
    * 
    *   Autor: Sebastian Reiff ,2005
    * 
    ****************************************************************************/ 
    
    int main(void)
    {
        unsigned int data[2];
    	Init();
    	FrontLED(ON);
        MotorDir(FWD,FWD);
    	while(1)
    	{
    	LineData(data);
    	if(data[0]>data[1])
    	{
    	MotorSpeed(200,80);
    	}
    	else
    	{
    	MotorSpeed(80,200);
    	}
    	if(PollSwitch()>=1)
    	{
    	StatusLED(RED);
    	MotorDir(RWD,RWD);
    	if(PollSwitch()>=7)
    	{
    	MotorSpeed(100,200);
    	Msleep(1000);
    	MotorDir(OFF,OFF);
    	}
    	else
    	{
    	MotorSpeed(200,100);
    	Msleep(1000);
    	MotorDir(OFF,OFF);
    	}
    	}
    	}
    	return 0;
    }

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Hallo Bremer,

    if(PollSwitch()>=1)
    {
    StatusLED(RED);
    MotorDir(RWD,RWD);
    if(PollSwitch()>=7)
    Ich habe Dein Programm kurz überflogen, und denke, das ist der Fehler:
    Da hast Du eine Runde Klammer vergessen bzw. irgendwo weiter unten gesetzt, wenn es keinen error beim kompilieren gab.
    Außerdem sollte man bei mehrfach abfragen immer if, else if, else benutzen.

    Sauberer ist es auch anstatt den ganzen if abfragen einen switch zu benutzen.

    Ich hoffe, ich hab mich klar ausgedrückt.
    Gruß Sebastian

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Gefunden, \/
    in der while-schleife wird nirgends die Motorrichtung auf FWD gestellt, die ist vor der Schleife !
    Der letzte Befehl ist immer:
    MotorDir(OFF,OFF)
    mfG

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    16.05.2005
    Beiträge
    734
    @Bremer

    Sehe ich das richtig, dass du rückwärtsfahrend auch die Linienverfolgung einsetzen willst?
    Ich glaube das geht nicht beim Asuro.

    Gruss Waste

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    19.07.2005
    Ort
    Bremen
    Alter
    40
    Beiträge
    45
    Moin,
    erstmal danke für die schnellen Antworten. Ich habe die Motoren in der while-Schleife wieder auf FWD gestellt und ASURO fährt jetzt nach dem Ausweichen wieder der Linie nach, die er findet. Ein paar feinheiten mit der Status LED stimmen noch nicht aber das krieg ich schon hin. Danke @ linux, du hast mir echt geholfen. Ich wusste, dass ich eine Kleinigkeit übersehen hatte.
    @waste: nein, ASURO soll beim Rückwärtsfahren keine Linie verfolgen, sondern die programmierte Zeit zurück fahren und dann wieder vorwärts um eine neue Linie zu Suchen und ihr zu folgen. Ich habe für ASURO einen kleinen Parcours angefertigt. *g*

    mfG Sebastian

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    19.07.2005
    Ort
    Bremen
    Alter
    40
    Beiträge
    45
    @ izaseba,

    was ist ein switch ? ist das eine bedingung wie if, else ?
    Ich habe darüber nichts gefunden.

    mfG Sebastian

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Hallo, ja es ist eine Bedingung, und zwar wenn man eine Variable auf mehrere Zustände abfragen will z.B.

    switch (Bedingung) {

    case fall1 :
    Anweisungen;
    break;

    case fall2 :
    Anweisungen;
    break;

    case fall3 :
    Anweisungen;
    break;

    default wenn nichts zutraf;
    Anweisungen;
    break;
    }

    default ist nicht unbedingt nötig,
    Ist lesbarer als viele if else if ´s
    Das hat aber nichts mit Deinem Programm zu tun, ich habe nur nicht genau hingeguckt...

    Aber vielleicht, kannst Du das für irgendwas brauchen.

    Gruß Sebastian

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    19.07.2005
    Ort
    Bremen
    Alter
    40
    Beiträge
    45
    Moin,
    die Switchbedingung kann man auf jeden fall mal für irgendwas brauchen also erstmal Danke für die Erklärung. ich will ja auch noch andere Programme schreiben, nur im Moment scheitere ich schon an der Sprache. Ist halt alles noch ein bischen neu für mich. Aber wenn ich überlege, dass ich den ASURO erst seit ner Woche habe und er jetzt schon Linien verfolgt und Hindernissen ausweicht, denke ich, dass ich fortschritte mache. Mein nächstes Ziel ist der ASURO Wettbewerb.

    mfG Sebastian

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    19.07.2005
    Ort
    Bremen
    Alter
    40
    Beiträge
    45
    übrigens das Programm läuft mitlerweile. ASURO verfolgt Linien, weicht Hindernissen aus und sucht sich dann wieder neue Linien. Sieht lustig aus *g*

    mfG Sebastian

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen