Aseba Playground

Aseba Playground

Questo documento contiene informazioni aggiuntive su come programmare i robot nell'ambiente Playground, un simulatore multi-robot incluso con Aseba

Eventi

Eventi Locali

Sensore di prossimità

Il codice che segue l'istruzione onevent ir_sensors sarà eseguito ad intervalli regolari, appena dopo che la distanza da un'ostacolo (prox) viene aggiornato.

Camera

Il codice che segue l'istruzione onevent camera sarà eseguito ad intervalli regolari, appena dopo che i valori dei pixel camR, camG, camB della telelcamera lineare sono stati aggiornati.

Emit

emit signal [arguments]

emit specifica che un dato robot deve inviare un segnale di evento (signal) a tutti gli altri robot. Il segnale può contenere fino a 32 argomenti. Notare che non è possibile specificare un robot in particolare a cui il segnale deve essere inviato. Il segnale, come un segnale radio è trasmesso a tutti i robot (vedere l'esempio successivo in [args] su come sia possibile indirizzare il singolo robot.). Notare anche che il nome del segnale e il numero di argomenti deve essere dichiarato nel pannello Global Events di Aseba Studio.

Variabili interne

id

Un identificatore univoco per ciascun robot.

source

L'identificatore del robot da cui è stato ricevuto il segnale più recente.

args

Gli argomenti dell'evento più recente ricevuto dal robot.

Esempio: Questo esempio mostra come i segnali possano essere indirizzati ad un robot ben preciso snche se inviati indistintamente a tutti. L'idea è di utilizzare un vettore dove ciascuna posizione sia allocata a uno specifico robot. Quando riceve un segnale il robot leggerà solo una parte specifica del vettore ricevuto.

Codice per il robot 1

Il robot 1 invia un segnale di movimento in avanti al robot 2, attende, quindi invia un segnale di movimento in avanti al robot 3 e di stop al robot 2, attende, ed infine invia un messaggio di stop generale.

# variables
var counter = 0

onevent ir_sensors

if counter == 10 then
    emit move [1,0]
end

if counter == 100 then 
    emit move [0,1]
end

counter += 1

Codice per robot 2

# events
onevent move
    if args[0] == 1 then
        leftSpeed = 400
        rightSpeed = 400
    else
        leftSpeed = 0
        rightSpeed = 0        
    end

onevent stop
    leftSpeed = 0
    rightSpeed = 0

Codice per robot 3

# events
onevent move
    if args[1] == 1 then
        leftSpeed = 400
        rightSpeed = 400
    else
        leftSpeed = 0
        rightSpeed = 0        
    end

onevent stop
    leftSpeed = 0
    rightSpeed = 0

leftSpeed, rightSpeed

Velocità delle ruote. Scegliere 400 per movimento lento.

colorR, colorG, colorB

Le componenti rossa, verde e blu del colore del robot.

prox

La distanza dagli ostacoli percepita dai sensori. Notare che il rumore produce fluttuazioni nella misura. Vedere questo schema.

camR, camG, camB

Array di lunghezza 60. I valori delle componenti rossa, verde e blu restituite dalla telecamera del robot.

energy

Intero: [0 9]. Il livello di energia del robot.

Create il vostro ambiente

Playground consente di definre un ambiente di simulazione specifico per i robot. Per esempio il codice seguente crea una box con 4 robot dentro:

<!DOCTYPE aseba-playground>
<aseba-playground>
    <color name="wall" r="0.9" g="0.9" b="0.9" />
    <color name="red" r="0.77" g="0.2" b="0.15" />
    <color name="green" r="0" g="0." b="0.17" />
    <color name="blue" r="0" g="0.38" b="0.61" />

    <world w="110.4" h="110.4" color="wall"/>

    <e-puck x="40" y="40"/>
    <e-puck x="40" y="60"/>
    <e-puck x="60" y="40"/>
    <e-puck x="60" y="60"/>
</aseba-playground>

Esempio: Scaricate qui un modello del German Pavilion, 1929, disegnato Mies van der Rohe.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License