Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3 Descripcion Del Software
3 Descripcion Del Software
Descripcin del
software
En este captulo se har una introduccin a los entornos de programacin
utilizados que son Matlab y Arduino, luego se presentarn las principales libreras
de software utilizadas que proporcionan una base para implementar el
controlador del robot tanto en el PC como en el robot. Por ltimo se detallar la
programacin del controlador del robot y el PC.
3.1.a. Arduino
Arduino es una plataforma electrnica abierta para desarrollar prototipos.
Se programa a travs de una interfaz tambin de cdigo abierto y libre distribucin
que permite programar, compilar y cargar el programa en el microcontrolador. No
admite cualquier microcontrolador, sino determinados microcontroladores de la
marca Atmel de 8 bits, aunque existen proyectos para extenderlo a diferentes
Captulo 3 Descripcin del software
26
3.1.b. MATLAB
Matlab es la abreviacin de Matrix Laboratory y se trata de un software de
carcter matemtico con un lenguaje de programacin propio (lenguaje M) de alto
nivel. Esta herramienta es escogida en muchas ocasiones para implementar
algoritmos y visualizacin de datos en grficas en 2 o 3 dimensiones, ya que posee
un potente mdulo que permite personalizar su apariencia.
27
28
Cambio
de
modo desde
Matlab
MODO
DE
PARADA
No hay visin
del robot
desde la
cmara
GUIADO
CON
CMARA
MODO
NORMAL
CON GPS
Fallo en la
posicin GPS
29
u0
error
referencia de
direccin
+
-
actuacin
Robot
direccin del
robot
30
( )
( )
0
-30
Gira a la
izquierda
30
Gira a la
izquierda
31
latitud
direccin
norte
(x1, y1)
direccin
deseada
(x0, y0)
longitud
Figura 16. Direccin de referencia en coordenadas geogrficas
32
direccin
norte
y
cmara
Figura 17. Coordenadas obtenidas por la cmara (vista en planta)
direccin
norte
(x0, y0)
direccin
deseada
(x1, y1) = (0, 0)
33
34
35
36
37
Huso
Zona
38
handle=serial(COM4,'Name','Nombre');
Hay que seleccionar el puerto utilizado, en este ejemplo es COM4
pero es necesario consultar en cada caso cual se est utilizando.
Opcionalmente se le puede asignar un nombre a dicho puerto.
2. Seleccionar la tasa de transferencia deseada, en este caso hemos
configurado el Zigbee a 57600bps
set(handle,'Baudrate',57600);
3. Configurar el bit de parada, la paridad y los bits de datos. Esta es una
configuracin estndar y no suele hacer falta modificarla.
set(handle,'StopBits',1);
set(handle,'DataBits',8);
set(handle,'Parity','none');
4. Opcionalmente se pueden leer los datos de entrada desde una
funcin externa al programa principal y que se ejecuta cuando se han
alcanzado un nmero de bytes de entrada o bien cuando se ha
recibido una cadena de texto.
Set(handle, BytesAvailableFcn, {@mycallback,argumento1});
Opcionalmente se pueden aadir argumentos a la funcin llamada en
este caso mycallback colocndolos seguidos en una lista de
corchetes.
Si queremos que se ejecute cada vez que lleguen X bytes desde el
puerto serie aadiremos las lneas:
Set(handle,BytesAvailableFcnCount,X);
Set(handle, BytesAvailableFcnMode, byte);
Si queremos que se ejecute cuando se ha escrito una cadena
terminada en un terminador (retorno de carro o nueva lnea)
aadiremos la lnea:
set(tld.serial,'Terminator',' LF/CR');
Set(handle, BytesAvailableFcnMode, terminator);
En este caso el terminador es una lnea nueva seguida de un retorno
de carro pero puede ser cualquier combinacin de estos o cualquier
otro byte que corresponda a un carcter ASCII (0-127).
Captulo 3 Descripcin del software
39
Para enviar los datos desde el Ardupilot Mega a Matlab se ha optado por
otro modo de comunicacin, enviando toda la informacin codificada en ASCII y
separando las variables con comas. Cada paquete enviado se termina con un
carcter especial llamado retorno de carro, que corresponde en decimal al
nmero 13. Las variables que se envan en cada paquete son: latitud y longitud
actual del robot, nmero de satlites que observa el GPS, 3 ngulos de orientacin
de la IMU y distancia al punto de destino. En el caso de las variables de latitud y
longitud se envan
40
)( )
O en forma compacta
[
41
42
Aunque esta calibracin puede ser vlida para tomar medidas con la cmara
es necesario comprobar a posteriori con el robot que las distancias medidas sean
correctas. Normalmente habr un pequeo desajuste entre la medida de la cmara
y la real que puede eliminarse realizando manualmente un ajuste ms fino de la
transformacin.
Los valores de correspondencia de los 13 puntos medidos en la calibracin
de la cmara son los siguientes, teniendo en cuenta que la resolucin de la imagen
utilizada para calibrar es de 800x600 pxeles y posteriormente se reescalarn los
resultados a 480x640 con que funciona el programa.
Puntos en la imagen
(u, v) (pxeles)
Posicin en la realidad
(X, Y) (metros)
(400, 221)
( 10.5, 0)
(400, 236)
( 8, 0)
43
(400, 279)
( 5, 0)
(400, 204)
( 14, 0)
(311, 229)
( 9, -1.2)
(211, 230)
( 9, -2.4)
(133, 230)
( 9, -3.6)
(249, 278)
( 5, -1.2)
(93, 277)
( 5, -2.4)
(476, 17)
( 11, 1.2)
(548, 214)
( 11, 2.4)
(581, 229)
( 9, 2.4)
(643, 346)
( 3, 1.2)
44
20
1.2 m
45