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
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;