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.