05.01.2015 Views

ROBOTS DE EXTERIORES - Centro de Automática y Robótica

ROBOTS DE EXTERIORES - Centro de Automática y Robótica

ROBOTS DE EXTERIORES - Centro de Automática y Robótica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

128 Robots <strong>de</strong> exteriores<br />

1. se pue<strong>de</strong> pedir a un vehículo que siga la trayectoria <strong>de</strong> otro, o que<br />

espere una señal <strong>de</strong> un sensor remoto;<br />

2. pue<strong>de</strong> conectarse dinámicamente un vehículo con diferentes<br />

algoritmos <strong>de</strong> navegación;<br />

3. diferentes sensores pue<strong>de</strong>n mezclarse con los vehículos disponibles,<br />

conectando sus señales mediante comandos AVCL;<br />

4. pue<strong>de</strong> <strong>de</strong>finirse un sensor estándar que encapsule la funcionalidad<br />

básica <strong>de</strong> diferentes sensores, un mecanismo <strong>de</strong> abstracción.<br />

Como ejemplo <strong>de</strong> algunos <strong>de</strong> estos casos se ofrecen los siguientes<br />

segmentos <strong>de</strong> código AVCL:<br />

# seguimiento <strong>de</strong> un vehículo<br />

uavA.TakeOff (5m)<br />

uavB.TakeOff (15 ft)<br />

uavB.FlyTo (p1)<br />

while (uavB.Position != p1)<br />

uavA.RefPosition = uavB.Position + offset<br />

endWhile<br />

# conexión con sensores<br />

uav.Sensors(0) = parser.loadObject (‘camera.lib’)<br />

uav.Sensors(0).LookAt (p1)<br />

uav.Sensors(1) = parser.loadObject (‘laser.lib’)<br />

uav.Sensors(1).TurnOn()<br />

# señales <strong>de</strong> sensores como ban<strong>de</strong>ras <strong>de</strong> control<br />

uav.FlyTo (p1, abortIf = laser.Range < 10m)<br />

2.2.1 Sintaxis básica<br />

El AVCL es un lenguaje interpretado en tiempo <strong>de</strong> ejecución, es <strong>de</strong>cir, no<br />

se compila. Su sintaxis ha sido <strong>de</strong>scrita en una variante <strong>de</strong> la Forma<br />

Backus-Naur Extendida (EBNF), la cual es <strong>de</strong>masiado compleja y extensa<br />

para presentarse aquí. Sin embargo el AVCL es un lenguaje quasiimperativo<br />

muy parecido al C++ y resulta sencillo apren<strong>de</strong>rlo una vez que<br />

se conocen sus tipos <strong>de</strong> datos y operaciones básicas:<br />

1. tipos básicos: bool, número <strong>de</strong> coma flotante, y ca<strong>de</strong>na <strong>de</strong><br />

caracteres;<br />

2. tipos complejos: distancia, velocidad, aceleración, ángulos,<br />

temperatura, coor<strong>de</strong>nadas 3D, actitud (guiñada, cabeceo y alabeo),<br />

vector, etc. Todas ellas con unida<strong>de</strong>s en SI e Inglés;<br />

3. operadores lógicos, <strong>de</strong> comparación y aritméticos, <strong>de</strong>finidos para<br />

todos los tipos, y funciones trigonométricas;<br />

4. variables, constantes y mutables. Las variables pue<strong>de</strong>n <strong>de</strong>struirse, y<br />

la diferencia respecto a un mutable es que tienen un tipo <strong>de</strong>finido<br />

mientras que éstos últimos son contenedores universales;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!