Professional Documents
Culture Documents
DIVISIÓN DE INGENIERÍAS
CAMPUS IRAPUATO - SALAMANCA
“ Instrumentación de un Robot
Móvil de Exterior”
TESIS PROFESIONAL
INGENIERO EN MECATRÓNICA
PRESENTA:
CO-ASESORES:
Dr. Juan Gabriel Aviña Cervantes
Dr. Maximino Antonio González Palacios
i
Agradecimientos
ii
Agradecimientos
Institucionales
iii
Prólogo
iv
Índice general
1. Generalidades 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
v
ÍNDICE GENERAL
3.1. Instrumentación . . . . . . . . . . . . . . . . . . . . . . . . . 23
vi
ÍNDICE GENERAL
4. Resultados Experimentales 58
5. Conclusiones Generales 75
vii
ÍNDICE GENERAL
Bibliografı́a. 82
viii
Índice de figuras
ix
ÍNDICE DE FIGURAS
x
ÍNDICE DE FIGURAS
xi
ÍNDICE DE FIGURAS
4.12. Robot HD2 Treaded ATR Tank con CPU y sensores integrados. 74
xii
Índice de Tablas
xiii
Capı́tulo 1
Generalidades
1.1. Introducción
1
1.2 Antecedentes
1.2. Antecedentes
2
1.2 Antecedentes
3
1.2 Antecedentes
4
1.2 Antecedentes
5
1.2 Antecedentes
6
1.2 Antecedentes
Estos robots son equipados con una cámara estéreo que reproduce con
alta fidelidad la visión humana y con un avanzado panel de instrumentos
con los que se quiere averiguar la existencia de agua en Marte; tiene seis
ruedas y es mucho más grande y sofisticado que el Sojourner y al igual que
éste cuentan con paneles solares que los proveen de energı́a.
Estos vehı́culos han sido aprovechados por la sonda espacial “Mars Ex-
press”, de la Agencia Espacial Europea (ESA), para realizar observaciones
atmosféricas coordinadas con su espectrómetro de emisiones termales y su
cámara panorámica.
7
1.3 Objetivo
1.3. Objetivo
1.4. Justificación
8
1.5 Plan de Trabajo
9
Capı́tulo 2
Los robots de ruedas son los más utilizados por diversas razones [14],
entra las principales se encuentra que:
10
2.2 Robots tipo oruga
Los robots tipo oruga son utilizados para aplicaciones sobre entornos hos-
tiles y entre las principales ventajas que superan a los robots de ruedas [22]
se encuentra que:
11
2.3 HD2 Treaded ATR Tank Robot
En la presente tesis se trabajó con el HD2 Treaded ATR Tank Robot [21]
que es un vehı́culo explorador diseñado para trasladarse en terrenos irregu-
lares y obstaculizados, ver Figura 2.1. Debido a la potencia de sus 4 motores
IG52-02, 24VDC, 290 RPM y el diseño de sus rodaduras tipo oruga
tiene la capacidad de subir escaleras y trasladarse en velocidades que lle-
gan alrededor de los 4ft/s (1.22m/s). El chasis de este robot esta hecho de
aluminio del mismo grado que usan algunas aeronaves, lo que lo hace muy
resistente.
Una caracterı́stica importante del robot HD2 Treaded ATR Tank Robot
son los módulos de potencia integrados MD03 [20], que es un controlador
de motor de corriente continua de mediana potencia, ver Figura 2.2. La
potencia del motor es controlada mediante Modulación de Ancho de Pulso
12
2.3 HD2 Treaded ATR Tank Robot
Modo bus I 2 C.
Entrada analógica 0V - 2.5V - 5V.
Entrada analógica 0V - 5V.
Modo PWM.
Modo RC.
Las señales a utilizar para cada uno de los modos de control del MD03
son recibidas por las entradas SDA, SCL de este módulo, ver Figura 2.3.
13
2.3 HD2 Treaded ATR Tank Robot
Modo I 2 C
Para leer uno o más registros del MD03, primero se envı́a un bit de
comienzo seguido de la dirección del modulo (0XB0, dirección base) con
el bit de lectura/escritura puesto a cero. Después se manda el número del
registro que desea leer seguido de nuevo de un bit de comienzo y otra vez
14
2.3 HD2 Treaded ATR Tank Robot
15
2.3 HD2 Treaded ATR Tank Robot
Modo PWM
Modo RC
16
2.3 HD2 Treaded ATR Tank Robot
17
2.3 HD2 Treaded ATR Tank Robot
18
2.4 Diseño de un gabinete para un CPU
Para tener una idea clara del diseño e instalación del gabinete de la PC
en el robot, se utilizó el programa Autodesk Inventor que es un sistema
de diseño mecánico en 3D para el modelado de piezas sólidas, las cuales
están basadas por lo general en bocetos (Sketch), a los que se le aplica una
operación para la generación del sólido.
19
2.4 Diseño de un gabinete para un CPU
mato del software de dibujo CorelDRAW para mandar cortar estas piezas
en material acrı́lico con láser a un taller de corte y grabado de acrilico ya
que su equipo maneja este formato de dibujo. Posteriormente se procedió a
armar y pegar todas las piezas. Cabe resaltar que se utilizó el material acrı́li-
co ya que por su transparencia y su estética permite visualizar el estado de
los componentes ası́ como errores de conexión en circuitos a simple vista,
ver Figura 2.8. A pesar de que el gabinete de acrı́lico es lo suficientemente
resistente y útil para aplicaciones en entornos interiores y exteriores relati-
vamente planos, una vez asegurado el correcto funcionamiento de la PC ante
las pruebas con los sensores, tarjetas y el movimiento del robot, es recomen-
dable construir un gabinete de aluminio del mismo tipo del robot ya que
ası́ se proporcionará una mayor protección en terrenos más hostiles, trabajo
20
2.5 Diseño de la unidad de potencia
Como todo sistema electrónico, el robot HD2 Treaded ATR Tank Ro-
bot requiere de una unidad de potencia que proporcione la alimentación al
sistema.
21
2.5 Diseño de la unidad de potencia
22
Capı́tulo 3
3.1. Instrumentación
23
3.1 Instrumentación
24
3.1 Instrumentación
25
3.2 Sistema operativo GNU/Linux: OpenSUSE
26
3.2 Sistema operativo GNU/Linux: OpenSUSE
vı́a internet. GNU GPL también significa que cualquier persona que reciba
el software, incluso si se cobra por ello, está protegido por la Licencia Públi-
ca General GNU para tener las mismas capacidades para hacer cambios y
distribuir el software. La GPL de GNU garantiza que ninguna persona u
organización puede realizar un cambio en el kernel sin hacer estos cambios
a disposición del público.
Para elegir una distribución adecuada para el sistema del robot, se tomó en
consideración los requisitos del hardware y software, ası́ como la estabilidad
del kernel para la integración de sensores. Bajo estos requisitos se optó por
la instalación de OpenSUSE 11.0 que opera bajo el kernel 2.6.25.5, uno
de los más estables de Linux, caracterizado por tener compatibilidad con
tecnologı́as de hardware y software actuales.
27
3.3 Instrumentación virtual: LabVIEW
robot.
Cada control o indicador del panel frontal tiene una terminal correspon-
diente en el diagrama de bloques. Cuando un VI se ejecuta, los valores de
los controles fluyen a través del diagrama de bloques, en donde éstos son
usados en las funciones del diagrama, y los resultados son pasados a otras
funciones o indicadores.
28
3.3 Instrumentación virtual: LabVIEW
Los VIs estándar son aquellos VIs (que consisten de un panel frontal y
un diagrama de bloque) que son usados adentro de otro VI.
Las funciones son los bloques de construcción de todos los VIs. Las fun-
ciones no tienen un panel frontal o un diagrama de bloque.
29
3.3 Instrumentación virtual: LabVIEW
30
3.3 Instrumentación virtual: LabVIEW
31
3.3 Instrumentación virtual: LabVIEW
32
3.3 Instrumentación virtual: LabVIEW
Para instalar LabVIEW ası́ como los controladores NI-DAQ base en Li-
nux es requerido el kernel 2.6.2 por ser uno de los más estables, ya que otros
kernel demostraron incompatibilidad con el mal funcionamiento del progra-
33
3.3 Instrumentación virtual: LabVIEW
34
3.4 Instalación de cámaras de alta resolución
IEEE 1394
35
3.4 Instalación de cámaras de alta resolución
IEEE 1394
Debido a la alta velocidad del puerto FireWire, hace que sea la inter-
faz más utilizada para audio y vı́deo digital. Instalar una cámara de alta
definición en este puerto en el sistema del robot no es ningún problema ya
que el kernel 2.6.2 de Linux es muy estable y basta con conectar los cables
de la cámara al puerto y usar algún programa de video para IEEE 1394,
siendo los más comunes el coriander, o el dvgrab por mencionar algunos.
Otra opción para permitir un buen funcionamiento de camaras es instalar
las librerı́as de la interfaz 1394 y programar a gusto propio un algoritmo
para la adquisición de video.
36
3.5 Integración de sensores ultrasónicos
El tipo de superficie.
Tamaño del objetivo.
Distancia del objetivo.
Ángulo del cono sobre la superficie.
También afectan las condiciones ambientales: Temperatura, gases, va-
pores, presión, etc.
37
3.5 Integración de sensores ultrasónicos
Para seleccionar el modo I2C deberá dejar sin conectar el Pin Modo
38
3.5 Integración de sensores ultrasónicos
39
3.5 Integración de sensores ultrasónicos
La dirección I2C del medidor SRF02 por defecto es 0xE0 pero puede
elegir cualquiera de las otras 16 siguientes para conectar otros sensores:
0xE0, 0xE2, 0xE4, 0xE6, 0xE8, 0xEA, 0xECC, 0xEE, 0xF0, 0xF4, 0xF6,
0xF8, 0xFA, 0xFC, 0xFE.
40
3.5 Integración de sensores ultrasónicos
Comandos Descripción
0x50 Iniciar nueva medición real (pulgadas)
0x51 Iniciar nueva medición real (centı́metros)
0x52 Iniciar nueva medición real (microsegundos)
0x56 Iniciar nueva medida falsa (pulgadas)
0x57 Iniciar nueva medida falsa (centı́metros)
0x58 Iniciar nueva medida falsa (microsegundos)
0x5C Transmite una ráfaga de 8 ciclos de 40khz
(no hace cálculos de medición)
0x60 Fuerza un reinicio del sonar SRF02
realizando un ciclo de autoajuste.
0xA0 1o comando de secuencia para cambio de dirección I2C
0xA5 3o comando de secuencia para cambio de dirección I2C
0xAA 2o comando de secuencia para cambio de dirección I2C
41
3.6 Instalación del sensor Laser Range Finder 2D
El sensor está equipado con RS232C y USB para la interfaz con un dispo-
sitivo externo (PC). La comunicación puede hacerse a través de cualquiera
42
3.6 Instalación del sensor Laser Range Finder 2D
43
3.6 Instalación del sensor Laser Range Finder 2D
de estos canales. Si se conectan las dos interfaces del sensor con la PC la co-
nexión USB tendrá prioridad. También es posible pasar de la conexión USB
y RS232C conectado y desconectando el cable USB en el lado del sensor,
incluso cuando el sensor está funcionando.
Codificación de datos
Los datos del sensor son codificados para reducir el tiempo de transmisión
entre la PC y el sensor. Estos datos deben ser decodificados en la PC antes
de ser procesados. Hay tres tipos de técnicas de codificación aplicadas en el
44
3.6 Instalación del sensor Laser Range Finder 2D
UBG-04LX-F01
Paso 0 Primer punto de medición 0
Paso A Paso inicial de medición en el rango de detección 44
Paso B Paso frontal del sensor 384
Paso C Punto final en el rango de detección 725
Paso D Último punto de medición 768
E Rango de detección 239.77
F División de hendidura 1024
45
3.6 Instalación del sensor Laser Range Finder 2D
46
3.6 Instalación del sensor Laser Range Finder 2D
47
3.6 Instalación del sensor Laser Range Finder 2D
48
3.6 Instalación del sensor Laser Range Finder 2D
49
3.6 Instalación del sensor Laser Range Finder 2D
Para leer datos del láser en Linux hay que descargar las librerı́as de
código C o C++ que proporciona el fabricante en su página WEB [1], estas
librerı́as proporcionan funciones para comunicación y adquisición de datos
del láser basándose en los comandos del protocolo SCIP2.0. Una vez obte-
nidas estas librerı́as se puede generar código en C/C++ para obtener los
datos del láser y detectar obstáculos.
50
3.6 Instalación del sensor Laser Range Finder 2D
#define DEG2RAD M PI / 1 8 0 . 0
#define rad 6 0 0 0 . 0
i n t xx , yy ;
float esc =1.5;
#i f d e f MSC
getchar ( ) ;
#endif
exit (1);
}
i n t timestamp ;
int r e t ;
#i f d e f WINDOWS OS
const char d e v i c e [ ] = ”COM3” ; // En Windows
#e l s e
const char d e v i c e [ ] = ” / dev /ttyACM0” ; // En Li nux
#endif
// Conexion d e l l a s e r
u r g t urg ;
r e t = u r g c o n n e c t (&urg , d e v i c e , 1 1 5 2 0 0 ) ;
i f ( r e t < 0) {
u r g e x i t (&urg , ” u r g c o n n e c t ( ) ” ) ;
}
// R e s e r v a r e s p a c i o para d a t o s
data max = urg dataMax(&urg ) ;
data = ( long ∗ ) m a l l o c ( s i z e o f ( long ) ∗ data max ) ;
51
3.6 Instalación del sensor Laser Range Finder 2D
i f ( data == NULL) {
p er r or ( ” malloc ” ) ;
exit (1);
}
// S o l i c i t a r d a t o s medi ante l a i n s t r u c c i o n GD
r e t = u r g r e q u e s t D a t a (&urg , URG GD, URG FIRST , URG LAST ) ;
i f ( r e t < 0) {
u r g e x i t (&urg , ” u r g r e q u e s t D a t a ( ) ” ) ;
}
// Recepci on de d a t o s
n = u r g r e c e i v e D a t a (&urg , data , data max ) ;
p r i n t f ( ”# n = %d\n” , n ) ;
i f ( n < 0) {
u r g e x i t (&urg , ” u r g r e c e i v e D a t a ( ) ” ) ;
}
// Mostrar d a t o s en c o n s o l a y en OpenGL
timestamp = u r g r e c e n t T i m e s t a m p(&urg ) ;
p r i n t f ( ”# timestamp : %d\n” , timestamp ) ;
f o r ( i = 4 4 ; i < n ; ++i ) {
p r i n t f ( ” %d %ld , ” , i , data [ i ] ) ;
}
p r i n t f ( ” \n” ) ;
// i n i c i a l i z a r G r a f i c a n d o
g l u t I n i t (& argc , argv ) ;
g l u t I n i t D i s p l a y M o d e (GLUT DOUBLE | GLUT RGB ) ;
glutInitWindowSize ( 700 ,700) ;
glutInitWindowPosition ( 100 ,100) ;
glutCreateWindow ( ” L a s e r Hokuyo−LABICE” ) ;
init ();
glutDisplayFunc ( d isp lay ) ;
glutCreateMenu ( MenuOpciones ) ;
glutAddMenuEntry( ”Zoom In ” , 1 ) ;
glutAddMenuEntry( ”Zoom Out” , 2 ) ;
glutAttachMenu (GLUT RIGHT BUTTON ) ;
u r g d i s c o n n e c t (&urg ) ;
#i f d e f MSC
getchar ( ) ;
#endif
glutMainLoop ( ) ;
f r e e ( data ) ;
return 0 ;
}
52
3.6 Instalación del sensor Laser Range Finder 2D
53
3.6 Instalación del sensor Laser Range Finder 2D
OpenGL trabaja como una máquina de estados, esto quiere decir que
consiste en activar y desactivar opciones. Estas opciones pueden representar
en pantalla una serie de datos, dependiendo del estado en el que se encuen-
tran.
54
3.6 Instalación del sensor Laser Range Finder 2D
rango menor a 5600 mm. Para poder graficar con las funciones de OpenGL
es necesario transformar las coordenadas a coordenadas rectangurales (ver
Ecuaciones 3.1 y 3.2).
x = rcosθ (3.1)
y = rsenθ (3.2)
55
3.6 Instalación del sensor Laser Range Finder 2D
56
3.6 Instalación del sensor Laser Range Finder 2D
void d i s p l a y ( void )
{
int i ;
g l C l e a r (GL COLOR BUFFER BIT ) ;
g l S c a l e f ( esc , esc , esc ) ;
D r a w c i r c l e ( 0 . 0 , 0 . 0 , rad ) ;
Dibuja circulos ();
ParamCircle ( rad ) ;
f o r ( i =44; i <=725; i ++)
{
i f ( i >100&& i <400){
R ageFinder ( 5 0 0 0 . 0 , i ) ; r e l l e n o o b j ( 5 0 0 0 . 0 , i ) ; }
e l s e i f ( i >=400&&i <=725){
R ageFinder ( 1 0 0 0 . 0 , i ) ; r e l l e n o o b j ( 1 0 0 0 . 0 , i ) ; }
else{
R ageFinder ( 3 6 0 0 . 0 , i ) ; r e l l e n o o b j ( 3 6 0 0 . 0 , i ) ; }
}
centro ( ) ;
comentarios ( ) ;
glutSwapBuffers ( ) ; glFlush ( ) ;
}
57
Capı́tulo 4
Resultados Experimentales
58
4.1 Una CPU de alto rendimiento con el S.O. Linux OpenSUSE 11.0
59
4.2 Cámaras de video de alta resolucion IEEE 1394
Procesador Intel Core 2 Duo 2.8 Ghz y bus de datos a 1066 Mhz.
Memoria RAM 2 GB a 1066 Mhz con posibilidad de expandirse a 16
GB.
Tarjeta de video dedicada 512 MB PCI-Express
Disco duro de 160GB SATA II
Fuente de poder de 500 W
Tarjeta de expansión de puertos FireWire IEEE 1394
Tarjeta de red Inalámbrica Wi-FI
Hasta 12 puertos USB
Un puerto serial RS232
Un puerto paralelo
3 puertos PCI y un puerto PCI-E de 1 slot disponibles para la inte-
gración de tarjetas.
60
4.2 Cámaras de video de alta resolucion IEEE 1394
61
4.2 Cámaras de video de alta resolucion IEEE 1394
62
4.3 Instalación de un anillo de 10 sensores para detección de obstáculos
63
4.3 Instalación de un anillo de 10 sensores para detección de obstáculos
64
4.4 Un sistema Laser Range Finder funcional para detección de
obstáculos
Del análisis de las librerı́as se sabe que los datos de distancia proporcio-
nados por el láser son guardados en un arreglo que contiene 725 datos para
el sensor UBG-04LX-F01 ya que el número de datos depende del máximo
de pasos de medición del sensor. De este arreglo podemos descartar los pri-
meros 43 datos ya que en el UBG-04LX-F01 el paso inicial en el rango de
detección se encuentra en el paso 44. Una vez claro el uso de las librerı́as es
necesario compilar un programa en C o C++ (Dependiendo de las librerı́as
descargadas) seleccionando los pasos de lectura relevantes que abarcan los
240◦ de rango (del paso 44 al 725).
65
4.4 Un sistema Laser Range Finder funcional para detección de
obstáculos
Cada uno de los obstáculos presentes fueron detectados con gran exacti-
tud. La interfaz gráfica de OpenGL muestra con mayor claridad la precisión
de estos resultados.
66
4.4 Un sistema Laser Range Finder funcional para detección de
obstáculos
Figura 4.7: Sala de electrónica sin personas medida con el Laser Hokuyo.
67
4.4 Un sistema Laser Range Finder funcional para detección de
obstáculos
68
4.4 Un sistema Laser Range Finder funcional para detección de
obstáculos
69
4.5 Un robot capaz de operar implementando algoritmos en LabVIEW
y C/C++
Por tanto, este algoritmo en LabVIEW es muy útil ya que puede ser la
primer etapa para el desarrollo de un robot autónomo, pero queda la cuestión
de como acoplar los algoritmos generados para el funcionamiento de los
sensores láser y ultrasónicos si fueron desarrollados en C/C++. La respuesta
se encuentra en un bloque de función de LabVIEW llamado Call Library
70
4.5 Un robot capaz de operar implementando algoritmos en LabVIEW
y C/C++
71
4.5 Un robot capaz de operar implementando algoritmos en LabVIEW
y C/C++
72
4.6 Un robot tipo oruga con una amplia variedad de sensores
73
4.6 Un robot tipo oruga con una amplia variedad de sensores
Figura 4.12: Robot HD2 Treaded ATR Tank con CPU y sensores integrados.
74
Capı́tulo 5
Conclusiones Generales
75
5.1 Trabajo futuro
con una gran velocidad de muestreo, ésto puede ser una herramienta clave
para el desarrollo de algoritmos de navegación.
Una de las herramientas más importantes que serán clave para el desarro-
llo de algoritmos para el robot es la opción de combinar el lenguaje de pro-
gramación C/C++ con la plataforma de instrumentación virtual LabVIEW,
de tal manera que se puede trabajar algoritmos para toma de decisiones del
robot en C/C++ y dejando a LabVIEW la parte de la instrumentación y
adquisición de datos a través de la tarjeta USB-6009 NI.
76
5.1 Trabajo futuro
77
Apéndice A
Instalación de Linux:
OpenSUSE
78
A.2 Paso 2: Partición del disco duro
Para crear las particiones del disco duro, se recomienda una utilidad
llamada PartitionMagic, lo cuál hará fácil y seguro el trabajo de particionar
la unidad desde el entorno de Windows. En caso de no contar con Windows
se recomienda usar el LiveCD GParted cargandolo desde el boot, ésta es una
herramienta muy útil para realizar particiones y formateo de éstas ya que
cuenta con una gran diversidad de formatos (.ext3, .ext4, Fat32, NTFS, etc.)
Una vez que se entienden las particiones que debe tener Linux nos queda
la duda de cuánta memoria debe ser asignada a éstas. Las recomendaciones
para ello son las siguientes:
79
A.3 Instalación de OpenSUSE
Una vez concluidos estos pasos el sistema está listo para la instalación
del S.O. Linux, en este caso la distribución de OpenSUSE 11.0. Para la
instalación de éste, sólo debe cargarse el DVD y seguir las instrucciones
indicadas por el asistente, tal como se harı́a con Windows.
80
Bibliografı́a
[2] Life in the Atacama (Diciembre 2009) [En lı́nea]. Disponible en:
http://www.frc.ri.cmu.edu/atacama.
[3] NASA Atacama Rovers (Diciembre 2009) [En lı́nea]. Disponible en:
http://www.nasa.gov/home/hqnews/2004/sep/HQ 04311 atacama rover.html.
[4] NASA Mars Exploration Rovers (Diciembre 2009) [En lı́nea]. Disponi-
ble en: http://www.nasa.gov/mission pages/mer/index.html.
[5] NASA Mars Pathfinder (Diciembre 2009) [En lı́nea]. Disponible en:
http://marsprogram.jpl.nasa.gov/MPF.
[6] W3Counter: Global Web Stats (Noviembre 2009) [En lı́nea]. Disponible
en: http://www.w3counter.com/.
81
BIBLIOGRAFÍA
[20] Super Droid Robots. Data Sheet MD03 Motor Controller Support, Abril
2009.
[21] Super Droid Robots. Data Sheet SDR H2, Abril 2009.
82