El Aseba Playground
Este material proporciona información adicional sobre como programar robots para Aseba Playground, un simulador multi-robot incluido en Aseba.
Eventos
Eventos Locales
Proximity sensors
El código que se encuentra luego de la instrucción onevent ir_sensors será ejecutado periódicamente, inmediatamente después de actualizar la variable (prox) - distancia hasta obstáculos.
Camera
El código que se encuentra luego de la instrucción onevent camera será ejecutado periódicamente, inmediatamente después de actualizar las variables camR, camG, camB - pixeles de la cámara lineal.
Emit
emit nombre [argumentos]
emit sirve para que un determinado robot emita un evento tipo (nombre) a los demás. El evento puede incluir hasta 32 argumentos. El evento no puede ser dirigido a un robot en particular - Este se transmite a todos los robots como si fuese una emisora radial (el siguiente ejemplo en [args] te muestra cómo dirigirse a un robot en especial). Es importante además, que el nombre del evento y el número de argumentos estén declarados en el panel de Eventos Globales de Aseba Studio.
Variables Internas
id
Es el identificador propio de cada robot.
source
Es la {id} del robot del cual se recibió el evento más reciente.
args
Los argumentos del evento más reciente recibido en este robot.
Ejemplo: Este ejemplo muestra como los eventos pueden dirigirse a un robot en especial, incluso si fueron transmitidas a todos. La idea es crear un vector en el que cada posición/casilla se destina a cada robot - al recibir el evento, el robot consultará únicamente su propia casilla.
El robot 1 envía el evento {avanzar} al robot 2, {espera}, luego envía el evento {avanzar} al robot 3 y {detenerse} al robot 2, {espera} y finalmente envía el evento {detenerse} a todos.
Código para el robot 1:
# variables
var counter = 0
onevent ir_sensors
if counter == 10 then
emit avanzar [1,0]
end
if counter == 100 then
emit avanzar [0,1]
end
counter += 1
Código para el robot 2:
# eventos
onevent avanzar
if args[0] == 1 then
leftSpeed = 400
rightSpeed = 400
else
leftSpeed = 0
rightSpeed = 0
end
onevent detenerse
leftSpeed = 0
rightSpeed = 0
Código para el robot 3:
# eventos
onevent avanzar
if args[1] == 1 then
leftSpeed = 400
rightSpeed = 400
else
leftSpeed = 0
rightSpeed = 0
end
onevent detenerse
leftSpeed = 0
rightSpeed = 0
leftSpeed, rightSpeed
Velocidad de las ruedas. Use 400 para avanzar lentamente.
colorR, colorG, colorB
Son los componentes rojo, verde y azul del color del cuerpo del robot.
prox
La distancia a un obstáculo percibida por los sensores de proximidad. Las mediciones pueden fluctuar debido al ruido/interferencias. Consultar el esquema aquí.
camR, camG, camB
Arreglo de 60 elementos. Los componentes rojo, verde y azul entregados por la cámara del robot.
energy
Número entero: [0 9]. El nivel de energía del robot.
Crea tu propio entorno
Playground te permite definir escenarios personalizados. Por ejemplo, el siguiente código crea una caja con cuatro robots en ella:
<!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>
Ejemplo: Encuentra aquí un modelo del Pabellón Alemán, Barcelon 1929, diseñado por Mies van der Rohe.