- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: ASURO und ct-Bot Logik

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3

    ASURO und ct-Bot Logik

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Zusammen,

    hat schon mal jemand von euch versucht, die ct-Bot Logik auf den ASURO zu übertragen? Die Sourcen für den ct-Bot sind ja auf heise Open Source:
    http://www.heise.de/ct/projekte/ct-bot/download.shtml

    Gruss,
    stochri

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Darüber nachgedacht habe ich schon. Ich finde das c't-Bot-Frame allerdings nicht sonderlich gelungen. Daher sehe ich darin wenig Sinn.

    Viel interessanter wäre es ein Programmgerüst für den ASURO in sauberem C++ aufzusetzen. Welches Tool wäre hier sinnvoll?

  3. #3
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    38
    Beiträge
    4.064
    ich würde es evtl von hand versuchen, ich vertraue den tools nicht... allerdings, um speicher zu sparen, wäre es sehr gut die routinen in asm neu zu schreiben... allerdings ist auch das kein pappenstiel.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    12.06.2005
    Ort
    Südwestdeutschland
    Beiträge
    1.147
    Blog-Einträge
    3
    Hallo ehenkes,

    So wie ich auf Deiner Homepage gesehen habe, kennst Du Dich mit dem ct-Bot ja bestens aus.
    Darüber nachgedacht habe ich schon. Ich finde das c't-Bot-Frame allerdings nicht sonderlich gelungen. Daher sehe ich darin wenig Sinn.
    Ich habe mir die Bot-Logik mal ein wenig angeschaut und finde das Verfahren mit den verketteten Listen sehr interessant. Bei der Umsetzung des Verfahrens könnte ich sicherlich noch was lernen.
    Sind die Listen mit der Möglichkeit, neues Verhalten während der Laufzeit hinzuzufüngen oder die Prioritäten zu ändern nicht besonders sinnvoll für die Robtersteuerung? Gefhühlsmässig glaube ich schon, bin mir aber nicht sicher, ob das Verfahren in der Praxis was taugt.

    Vielleicht wäre auch die ct-bot Simulationsumgebung interessant, gerade bei größeren Programmen wird es ja etwas zeitaufwändig, den ASURO bei jeder Änderung neu zu flashen.

    Gruss,
    stochri

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Die Programmstruktur des c't-Bot habe ich einige Zeit analysiert. Hier ist die zentrale Routine:
    Code:
    /* Hauptprogramm des Bots. Diese Schleife kuemmert sich um seine Steuerung. */
    int main (void)
    {
          //...
    
        init(); // enthaelt u.a. bot_behave_init();     
    
        //...
    
        /*! Hauptschleife des Bot */
        for(;;)
        {
              //...
               // Testprogramm, dass den Bot erst links, dann rechtsrum dreht
               #ifdef  TEST_AVAILABLE_MOTOR
                calls++;
                if (calls == 1)           motor_set( BOT_SPEED_SLOW, -BOT_SPEED_SLOW);
                else if (calls == 501)    motor_set(-BOT_SPEED_SLOW,  BOT_SPEED_SLOW);
                else if (calls== 1001)    motor_set( BOT_SPEED_STOP,  BOT_SPEED_STOP);
                else
            #endif
                          //...
            #ifdef BEHAVIOUR_AVAILABLE
                bot_behave(); // <--- Diese Funktion sorgt fuer das Verhalten des c't-Bot
            #endif
            //...   
            #ifdef MCU
                #ifdef BOT_2_PC_AVAILABLE
                    static int16 lastTimeCom =0;
                    bot_2_pc_inform();                // Den PC ueber Sensorern und Aktuatoren informieren
                    if (timer_get_s() != lastTimeCom) // sollte genau 1x pro Sekunde zutreffen
                    {  
                        lastTimeCom = timer_get_s();       
                        bot_2_pc_listen();            // Kommandos vom PC empfangen
                    }
                #endif
            #endif
            //...
        }
        /*! Ende Hauptschleife des Bot */
         //... 
    }
    Den Rest kann man auf meiner Homepage nachlesen. Dort habe ich die Zusammenhänge dargelegt. Hier noch bot_behave_init(), das in diesem Fall bot_simple_behaviour aktiviert.

    Code:
    // Kette:
    // main() ---> init() ---> bot_behave_init ---> bot_...
    
    void bot_behave_init(void) /* Initialisert das ganze Verhalten */ (komplett s.o.)
    {
        // Verhalten zum Schutz des Bots, hohe Prioritaet, Aktiv
        insert_behaviour_to_list(&behaviour, new_behaviour(200, bot_avoid_border, ACTIVE));
        insert_behaviour_to_list(&behaviour, new_behaviour(100, bot_avoid_col, ACTIVE));
        // Verhalten, um Hindernisse besser zu erkennen, relativ hohe Prioritaet, modifiziert nur
        insert_behaviour_to_list(&behaviour, new_behaviour( 60, bot_glance, ACTIVE));
              //...
        // Grundverhalten, setzt aeltere FB-Befehle um, aktiv
        insert_behaviour_to_list(&behaviour, new_behaviour(  2, bot_base, ACTIVE));
        activateBehaviour(bot_simple_behaviour); // hier waehlt man das gewuenschte Verhalten aus
        //...
        return;
    }
    Ich fand dies ziemlich komplex. Da ASURO für Anfänger gedacht ist, wirkt so etwas eher abschreckend. Ob das überhaupt bezüglich Speichergröße beim ASURO machbar ist, weiß ich auch nicht. Aber prinzipiell interessant ist diese Vorgehensweise. Vielleicht lässt sich das vereinfachen.

Berechtigungen

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

12V Akku bauen