Aldebaran Robots Programmbeispiele

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

[Schlagwoerter: NAO Examples Beispiele ChatBot Chat Bot] Ich weiß noch nicht so recht wie ich diese Seite(n) gestalten soll. Ich habe schon viele Programme aus dem Aldebaran Store, von Github und anderen Quellen ausprobiert. Der Erfolg war durchwachsen. Ich will den Erstellern keine Vorwuerfe machen, es ist ja sehr lobenswert, dass sie den Quellcode ueberhaupt zur Verfuegung stellen, aber sind doch nicht selten Anpassungen notwendig um ein Programm ueberhaupt zum Laufen zu bewegen. Manchmal war der Aufwand sogar so groß, oder das Programm so bescheiden dokumentiert, dass sich jeder weitere Aufwand kaum lohnt.

Ich koennte mir vorstellen, jedes Programm hier im Wiki mit einer Art Steckbrief zu versehen, so dass man moeglichst schnell einen Eindruck des Umfangs und der Leistung bekommt. Dazu koennte ich mir vorstellen einen Parser für die CRG-Files zu schreiben der einem das Grundgeruest des Steckbriefes liefert.

Ich fang mal an einzelne Codeschnipsel zu kommentieren.

AIDA-bot (Github)

So sah das Original aus.

Screenshot 20230224 115407.png

Was ein bisschen Umsortieren zum Verstaendnis beitraegt:-))

Screenshot 20230224 200953.png

Ablauf:

-SetLanguage English
-StandInit
-AIDA-Bot ->onWelcome
    def onInput_onWelcome(self):
        setMessage('WELCOME_MSG') # im template dict hinterlegt
        self.speech(zora['answer'])
        self.Movement(zora['action'])
AIDA-Bot erzeugt ein speech- und Movement-String
'Say Text'-Box stoppt die das parallel angestoszene Movement.(?)
'Motion'-Box Hauptrichtung 'Welcome'-Box oder Exit 'GoodBye'-Box mit 'Crouch'-Box
'Welcome'-Box spielt per Zufall eine der drei Motions (keine Behaviers) ab 'open arms', 'Bow' und 'WideGather'
'Stand'-Box im Hauptpfad ein individueller Ausgang neben success, failure ist dstart # Warum hier dstart gebraucht wird ist mir nicht ganz klar; Die Dialog-Box haette man wohl auch an success haengen koennen
-failure wird nicht ausgewertet
-success und dstart aktivieren geleichzeitig
'Nao_bored'-Box und 'Dialog'-Box
'Dialog'-Box Languages: American English (Add to the package content as collaborative dialog) An example of multilanguage dialog implementation.
'Nao_bored'-Box ist eine Boxgruppe
-active ist mit einer Verzoegerung 'Delay'-Box von 20 Sekunden
-stop
-allstop Wirkung ?



Random-Box

Steckt in der Welcome-Box, in der Nao_bored->Actions-Box und in der GoodBye-Box.

Screenshot 20230223 220616.png

class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        #put initialization code here
        pass

    def onUnload(self):
        #put clean-up code here
        pass

    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        pass
        animations = [self.action1,self.action2,self.action3]
        action = animations[int(random.randint(0, len(animations) - 1))]
        action()

    def onInput_onStop(self):
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box

Interessant sind dabei die 3 folgenden Zeilen:

       animations = [self.action1,self.action2,self.action3]
       action = animations[int(random.randint(0, len(animations) - 1))]
       action()

animations wird eine Liste mit den EInsprungpunkten der drei "Ausgangs-Bangern". action bekommt per Zufall eine der drei Funktionen zugewiesen und ruft diese mit action() dann auf.

Screenshot 20230224 100155.png

Auf die Idee waere ich so nicht gekommen. Ich haette es mit random und nachfolgend einem switch ralisiert.


Request for Comments


Kommentar hinzufügen
TippvomTibb freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, registriere dich bitte oder melde dich an.