Estudio y Diseño de un Oscilador Caótico para Aplicación en Robot Móvil
Ramos López Hugo César
Junio 2013
Índice general
Resumen 1
1. Introducción 2
1.1. Concepto de caos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Osciladores caóticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Concepto de generador de números aleatorios . . . . . . . . . . . . . . . . 5
1.4. Descripción del problema . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5. Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.1. Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Simulación de osciladores caóticos (MATLAB) 8
2.1. Conceptos generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1. Circuito de Chua . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2. Función no-lineal saturada . . . . . . . . . . . . . . . . . . . . . . 9
2.1.3. Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.4. Simulación con MATLAB . . . . . . . . . . . . . . . . . . . . . . 13
2.2. Circuito de Chua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3. Función no-lineal saturada (SNLF) . . . . . . . . . . . . . . . . . . . . . 15
2.3.1. SNLF para dos enrollamientos . . . . . . . . . . . . . . . . . . . . 16
3. Diseño de osciladores caóticos basados en amplificadores operacionales 18
3.1. Implementación de las variables de estado . . . . . . . . . . . . . . . . . 18
3.1.1. Generalidades de los opamps . . . . . . . . . . . . . . . . . . . . 18
3.1.2. Configuraciones básicas . . . . . . . . . . . . . . . . . . . . . . . 18
Configuración seguidor . . . . . . . . . . . . . . . . . . . . . . . . 18
Configuración inversor . . . . . . . . . . . . . . . . . . . . . . . . 19
Configuración sumador . . . . . . . . . . . . . . . . . . . . . . . . 19
Configuración integrador . . . . . . . . . . . . . . . . . . . . . . . 20
Configuración restador . . . . . . . . . . . . . . . . . . . . . . . . 20
Configuración comparador de voltaje . . . . . . . . . . . . . . . . 20
i
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Configuración derivador . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.3. Implementación electrónica del sistema . . . . . . . . . . . . . . . 21
Oscilador con funciones saturadas con opamps . . . . . . . . . . . 21
Oscilador con diodo de Chua implementado con opamps . . . . . . 23
3.1.4. Pruebas de los sistemas . . . . . . . . . . . . . . . . . . . . . . . 27
Comparación de los osciladores de Chua y el basado en SNLF . . . 27
4. Diseño de generador de números aleatorios 29
4.1. Generador de números aleatorios . . . . . . . . . . . . . . . . . . . . . . 29
4.2. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.1. Aleatoriedad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Prueba de mono-bits . . . . . . . . . . . . . . . . . . . . . . . . . 30
5. Leyes de control, simulación y pruebas 32
5.1. Leyes de control retroalimentadas . . . . . . . . . . . . . . . . . . . . . . 33
5.2. Control simple y discontinuo . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3. Programación de la ley de control . . . . . . . . . . . . . . . . . . . . . . 35
5.4. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.4.1. Programa en el microcontrolador . . . . . . . . . . . . . . . . . . 35
6. Conclusiones y trabajos futuros 38
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2. Trabajos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bibliografía 40
Apéndices 43
A. Código MATLAB para el modelado de SNLF de dos enrollamientos 43
B. Ley de control MATLAB 47
C. Ley de control PIC 48
D. Test de mono-bits MATLAB-arduino 53
ii
Índice de figuras
1.2.1.Oscilador caótico de Chua . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1.Curva caracteristica del diodo de Chua . . . . . . . . . . . . . . . . . . . . . 9
2.1.2.Descripción PWL de una SNLF con 5 y 7 segmentos . . . . . . . . . . . . . . 10
2.1.3.Representación grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1.Representación gráfica del diodo de Chua . . . . . . . . . . . . . . . . . . . 14
2.2.2.Circuito de Chua generando 2 enrollamientos . . . . . . . . . . . . . . . . . 14
2.2.3.Señales en cada variable de estado en el tiempo . . . . . . . . . . . . . . . . 15
2.3.1.Grafica de 3 segmentos para generar dos enrollamientos . . . . . . . . . . . . 16
2.3.2.Oscilador caótico de dos enrollamientos, Graficas en el tiempo de las variables . 17
3.1.1.Modelo de un opamp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.2.Configuración seguidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.3.Configuración inversor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.4.Configuración sumador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.5.Configuración integrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.6.Configuración restador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.7.Configuración comparador de voltaje . . . . . . . . . . . . . . . . . . . . . . 21
3.1.8.Configuración derivador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.9.Diagrama del sistema caótico . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.10. Implementación con opamps . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.11.a) SNLF con TL082, b) Grafica de la SNLF . . . . . . . . . . . . . . . . . 23
3.1.12.Configuración genérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.13.Convertidor de impedancias generalizado . . . . . . . . . . . . . . . . . . . 24
3.1.14. Inductor con convertidor generalizado . . . . . . . . . . . . . . . . . . . . 25
3.1.15.Esquema del diodo de Chua con opamp . . . . . . . . . . . . . . . . . . . 25
3.1.16.a) Diodo de Chua y b) Su pendiente . . . . . . . . . . . . . . . . . . . . 26
3.1.17.Circuito de Chua completo . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.18.Pruebas en laboratorio: a) Diodo de Chua y b) SNLF . . . . . . . . . . . . . 27
3.1.19.FFT SNLF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1.1.Generador de bits aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . . 30
iii
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
4.1.2.Señal del generador de bits . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.1.Test de mono-bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.0.1.Descripción del movimiento en un plano . . . . . . . . . . . . . . . . . . . . 32
5.1.1.Configuración del control cinemático . . . . . . . . . . . . . . . . . . . . . . 33
5.2.1.Diagrama del sistema físico completo . . . . . . . . . . . . . . . . . . . . . 35
5.4.1.Prueba del control de motores . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.4.2.Móvil funcionando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
iv
Resumen
El conocimiento de nuevas herramientas aplicables al diseño de prototipos electrónicos para
desarrollar avances en la autonomía robótica día con día evoluciona, formando así una gran
gama de opciones para la realización experimental de proyectos en ingeniería en general .En
esta investigación se describe el modelado, la simulación y la implementación experimental
de un sistema dinámico que se ha nombrado robot móvil autónomo para desplazarse en un
terreno delimitado en coordenadas y área, por las características físicas del sistema, tales
como numero de bits, circunferencia de la rueda del robot móvil y numero de pasos de los
motores del sistema. El prototipo que se presenta, se trata de un robot cuyas coordenadas
son controladas por un generador de números aleatorios, el cual se ha desarrollado con base
en la teoría de los osciladores caóticos para darle autonomía. De esta manera, se describe el
oscilador caótico basado en series de funciones no lineales saturadas (NLSF por sus siglas
en inglés). Básicamente, este oscilador caótico se usa para generar números aleatorios, los
cuales se introducen a un bloque electrónico que ejecuta una ley de control, otorgándole
autonomía al robot. El oscilador caótico que se usa como caso de estudio para gobernar
al robot autónomo se ha diseño con amplificadores operacionales. Asimismo, se describen
las leyes de control implementadas, las cuales son útiles para sistemas que consisten de
osciladores caóticos para poder iniciar el estudio de nuevas aplicaciones. Parte de ello se
menciona al final de esta investigación como trabajo a futuro.
Capítulo 1
Introducción
A lo largo de la historia de la tecnología y la evolución de herramientas para la creación
de aparatos llamados robots, han existido muchos modelos, pero la mayoría diseñado y
construido con CPU’s o Microcontroladores a los cuales se les programa para que realicen
una función especifica [16]; Los investigadores se han propuesto una idea revolucionaria: “
Construir un robot autónomo” libre de programación, y que su control este a cargo de un
sistema con la capacidad de explorar todo un espacio de posibilidades de movimiento. En
ese sentido, en esta investigación se describe la utilidad de los osciladores caóticos. Esto
es una novedad que esta ubicada en la tecnología de control del caos para aplicaciones
múltiples[2].
El caos es un fenómeno muy amplio y universal existente en varios sistemas no lineales.
Por mucho tiempo fue confundido con ruido, no fue hasta que en el campo de la ingeniería
se anuncio oficialmente su existencia en sistemas eléctricos en el año de 1980. Por otra
parte las comunidades de científicos e ingenieros se dieron cuenta que el caos podía ser
controlado[1,2].
Los sistemas caóticos se han vuelto de gran interés en las telecomunicaciones, partiendo
de la teoría del caos; la cual involucra un “orden dentro del desorden“, es decir es un sistema
dinámico no lineal que a partir de ciertas condiciones iniciales se podrían tener resultados
prácticamente impredecibles, dichas condiciones son extremadamente sensibles puesto que
la más mínima alteración repercute en su comportamiento, como es el caso de la bolsa de
valores, la meteorología, en la dinámica poblacional, etc. Pero por otra parte si se conocen
las condiciones iniciales podemos intentar determinar la trayectoria del sistema[1,2].
La comunidad académica y científica siempre ha estado obsesionada por el control,
se cree que cuantas más técnicas se desarrollen, más control se tendrá sobre el mundo.
Es lo que ocurre en la Tierra: es un sistema caótico, siempre cambiante y adaptándose,
pero si uno se excede el sistema cambiará impredeciblemente o colapsará. Un ejemplo son
los problemas con la capa de ozono, el aumento de la temperatura global y el deshielo,
problemas con los recursos como el petróleo, etc.[1].
2
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Con base en lo anteriormente mencionado, un campo de investigación muy activo hoy
en día es el estudio de sistemas dinámicos no lineales y, particularmente, el de los sistemas
caóticos [3,7]. A pesar de que esta rama de investigación es relativamente joven, no hay la
menor duda de que está llegando a adquirir cada vez más importancia en una gran variedad
de disciplinas[4,5,6,8].
El fenómeno caótico es fascinante para muchos investigadores en varios campos como
en las matemáticas, física, ingeniería y otras mas.
Un robot móvil es un dispositivo electromecánico capaz de desplazarse dentro de un
espacio de trabajo (laboratorio, nave industrial, corredor, habitación, etc.) con diferentes
niveles de autonomía.[12]
En la robótica el primer robot móvil caótico que podía navegar atraves de un patrón
caótico fue propuesto por nakamura y Sekikuchi[2,9,10,11]
1.1. Concepto de caos
Antes de comenzar a analizar las bases de esta teoría es importante profundizar en
lo que significa caos. Proviene del griego “khaos” que significa abismo o abismo abierto.
Por lo tanto es común pensar que el caos es aquello que carece de orden, algo confuso
e incoherente. Sin embargo para la teoría del caos el enfoque difiere de los conceptos
mencionados ya que en realidad el caos es la misma esencia del orden [1,13].
“Caos” es un comportamiento aperiódico a largo plazo en un sistema determinista que
exhibe una dependencia muy sensible a las condiciones iniciales[14].
1. “Comportamiento aperiódico a largo plazo” significa que las trayectorias no tienden
a un punto fijo, órbitas periódicas u órbitas cuasi-periódicas conforme t→∞.
2. “Determinista” significa que el sistema no tiene entradas o parámetros aleatorios. El
comportamiento irregular surge de las no linealidades del sistema.
3. “Dependencia sensible a las condiciones iniciales” significa que las trayectorias que
son cercanas, con el tiempo se separan exponencialmente.
Uno de los puntos más interesantes en el estudio de los sistemas caóticos es si la presencia
del caos puede producir estructuras ordenadas y patrones a gran escala pero así mismo el
control del caos tiene dos inconvenientes: la supresión y la sincronización del caos [15].
El uso del caos es posible cuando un oscilador caótico puede ser implementado por medio
de circuitos electrónicos tales como Amplificadores Operacionales, dispositivos capacitivos,
inductores y resistivos;
3
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
1.2. Osciladores caóticos
Un oscilador caótico es producido por un sistema caótico y no tiene ningún período.
Los sistemas caóticos son deterministas y dinámicos [14].
Un sistema determinista siempre llega a los mismos puntos a partir de una condición
inicial, lo que significa que la dinámica de ese sistema es reproducible. En contraste,
un sistema no determinista puede presentar un comportamiento diferente cada vez
que se ejecuta .
Un sistema dinámico es un sistema que describe la evolución del estado de un sistema
en función del tiempo o alguna variable continua o discreta.
Existen distintos tipos de osciladores caóticos, iniciando por lo discretos que se implementan
con interruptores o circuiteria digital, y los continuos que se describen con al menos 3
ecuaciones diferenciales de primer orden. Un oscilador caótico exhibe distintos tipos de
comportamiento, y en cuanto a los atractores, estos pueden generar uno, dos, o múltiples
enrollamientos y en varias direcciones. La generación de varios enrollamientos se realiza
modificando la función perturbadora (o no-lineal). Lo que conlleva a la modificación de
componentes o ecuaciones que lo describen.
Un ejemplo claro es el famoso oscilador caótico de Chua, el cual se muestra en la fig.1.1,
y consiste de tres elementos dinámicos para describir el sistema de tercer orden, un resistor
lineal cuyo valor varia para generar distintos comportamientos caóticos, y el diodo de Chua
(NR), que es una función no-lineal que puede describirse por tramos (PWL).
Figura 1.2.1: Oscilador caótico de Chua
Aplicando análisis de nodos, dicho circuito lo describen las siguientes ecuaciones
4
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
C1dVC1
dt= G(VC2 − VC1)− g(VC1)
C2dVC2
dt= G(VC1 − VC2) + IL
LdILdt
= −VC2 (1.1)
g(Vc1) = G1VC1 +1
2(G2 −G1)(|VC1 + E| − |VC1 − E|) (1.2)
Con estos conceptos de osciladores caóticos pueden construirse circuitos para implemen-
taciones en diversas áreas de la electrónica, industria, robótica, etc. Entre tales aplicaciones
de dichos circuitos sobresale el diseño de un generador de números aleatorios.
1.3. Concepto de generador de números aleatorios
En estadística, un número aleatorio es un resultado de una variable al azar especifi-
cada por una distribución. Los algoritmos para la generación de valores uniformemente
distribuidos están presentes en todas las calculadoras y lenguajes de programación.
1.4. Descripción del problema
En el campo de la robótica actualmente existen un sinnúmero de estrategias para lograr
que un robot simule ser autónomo, es decir se han elaborado métodos de programación sofis-
ticados para implementarse en autómatas; dichos métodos requieren de un tiempo extenso
de diseño para distintos fines, siendo estos tediosos para personas con poca experiencia en
programación.
Entonces £como se puede evitar que el diseño de un autómata sea pesado y tardado?.
Una idea principal es el uso del caos como método de control, o dicho de otro modo
controlar el caos para dichos fines aplicables a la robótica, de este modo aparte de evitar los
problemas antes mencionados, se pueden solucionar otros como son la lentitud de respuesta,
los ciclamientos, la falta de respuesta en situaciones no consideradas, etc.
Los sistemas caóticos han sido un atractivo campo de investigación en diversas áreas,
entre ellas la física, las comunicaciones y la electrónica. Cada nuevo sistema caótico es un
candidato para mejorar las aplicaciones en electrónica . Por ejemplo, atractores caóticos de
múltiples enrollamientos son buenos candidatos en aplicaciones de autonomía móvil porque
presentan comportamientos complejos[14] .
5
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
De esta manera se plantea el diseño e implementación de un robot móvil mediante
el uso de osciladores caóticos de doble enrollamiento. En el desarrollo del proyecto esta
contemplado observar el funcionamiento de dos tipos de osciladores y así mismo analizarlos
para decidir que oscilador sera el elegido para ser implementado en robot móvil.
1.5. Justificación
El uso de robots móviles tiene muchas aplicaciones como, transportación industrial,
limpiadores de piso y hasta como bomberos; Las aplicaciones en la industria y en la vida
cotidiana son mas exigentes, así mismo en el ámbito militar, debido a que se deben hacer
exploraciones de terrenos para lograr una máxima seguridad de las tropas.
Para que el robot pueda satisfacer una seguridad debe cumplir con tres objetivos prin-
cipales[11]:
1. Impredecibilidad de trayectoria
2. Escaneo del terreno completo
3. Rápido escaneo del lugar de trabajo
Dichos objetivos mencionados son los principales por los cuales se puede elegir un diseño
de robot aplicando sistemas o circuitos caóticos, debido a su dinámica de Impredecibilidad.
Como es sabido, los sistemas no-lineales son ricos en comportamientos dinámicos,mostrando
una variedad de fenómenos caóticos. Este comportamiento caótico es la razón por la cual
los sistemas no lineales son usados en muchas otros campos de la ingeniería como las
comunicaciones, criptografia, generador de bits aleatorios y redes neuronales [11,2].
La importancia de usar los sistemas no lineales en robots autónomos es conseguido por
los controladores diseñados, los cuales aseguran el movimiento caótico. Señales, las cuales
son producidas por sistemas caóticos o circuitos, son usadas para guiar robot autónomos
para la exploración de terrenos o para vigilancia, búsqueda etc. La parte mas importante
de los sistemas caóticos es su impredecibilidad, esta es una condición necesaria ya antes
mencionada. En las literaturas son conocidos muchos sistemas caóticos, algunos como el
sistema dinámico de Arnold, mapero de Taylor-Chirikov, sistema de Lorenz y el circuito de
Chua, y todos han sido utilizados. [11].
Por su complejidad, su dinámica impredecible y su extrema sensibilidad a condicio-
nes iniciales, características esenciales de los sistemas caóticos, hacen de estos excelentes
candidatos a emplearse para conseguir un buen planeador de trayectorias usando una señal
caótica generar números aleatorios y conseguir un amplio cubrimiento de área en un espacio
de prueba.
6
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
1.6. Objetivos
1.6.1. Objetivo general
Estudio y diseño de un oscilador caótico para aplicación en robot móvil
Objetivos específicos
- Conocer el funcionamiento de un oscilador caótico
- Diseñar un oscilador caótico con opamps
- Diseñar un generador de números aleatorios basado en un oscilador caótico
- Aplicar ley de control para un robot seguidor de trayectorias basado en oscilador
caótico
Conociendo los objetivos planteados, de manera general, cada uno de los capítulos que
integran el trabajo correspondiente son:
La descripción general del tema principal es presentada en la introducción, de manera
mas detallada en el capitulo 2 se presentan una cuestión importante para el desarrollo del
proyecto y así mismo base del mismo, dicho tema es la simulación de osciladores caóticos
utilizando la muy conocida herramienta MATLAB.
En el tercer capitulo es mostrada la forma de diseño de osciladores caóticos utilizan-
do Amplificadores Operacionales (opamps) y así mismo la simulación en herramientas de
simulación virtual como son MULTISIM y TopSpice.
La cuarta parte esta comprendida por el diseño de un generador de números aleatorios
el cual sera indispensable para convertir los datos obtenidos de la señales de salida del
oscilador seleccionado en secuencias de bits aleatorios para su procesamiento descrito en el
capitulo 5.
La Quinta sección consta de el análisis y comprensión de una ley de control para que
el móvil a diseñar pueda obtener movimiento, así mismo de los métodos utilizados para
capturar y procesar los datos obtenidos del generador de Bits aleatorios.
El ultimo capitulo integra una breve explicación del diseño físico del robot móvil así
como una tabla de comparaciones de pruebas realizadas en el laboratorio.
7
Capítulo 2
Simulación de osciladores caóticos
(MATLAB)
2.1. Conceptos generales
2.1.1. Circuito de Chua
Entre los circuitos caóticos diseñados, el circuito caótico de Chua es un sistema ex-
tremadamente simple que puede ser fácilmente construido y manejable matemáticamente
[3,14,2]. Como se muestra en la fig.1.1, el circuito de Chua contiene tres elementos de al-
macenamiento de energía, un resistor lineal y una resistencia no lineal (NR) llamado diodo
de Chua, dicho circuito es descrito por un sistema de ecuaciones de estado de tercer orden
cuyas variables de estado son la corriente del inductor L y los voltajes de los capacitores C1
y C2 [14,2].
El conjunto de ecuaciones que describen el comportamiento del circuito de Chua se
definen por:
C1dVC1
dt= G(VC2 − VC1)− g(VC1)
C2dVC2
dt= G(VC1 − VC2) + IL
LdILdt
= −VC2 (2.1)
g(Vc1) = G1VC1 +1
2(G2 −G1)(|VC1 + E| − |VC1 − E|) (2.2)
La ecuación (2.2) describe la función desestabilizante g(Vc1)=iD, donde G1 y G2 son las
8
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
pendientes de los tres segmentos controlados por voltaje que definen el resistor no lineal y
±E son los puntos de quiebre para generar el fenómeno caótico, como se muestra en la fig.
2.1.
Figura 2.1.1: Curva caracteristica del diodo de Chua
2.1.2. Función no-lineal saturada
La función de saturación se basa en el uso de aproximaciones linealizadas por tramos
(PWL), como se muestra en la fig.2.2 .En (2.3) se describe una aproximación PWL llamada
serie de una función no lineal saturada (SNLF, por sus siglas en ingles), donde k ≥2 es
la pendiente de la función saturada y un factor multiplicador para plateaus saturadas (en
este trabajo se utilizara el concepto de plateau, en lugar de su traducción, debido a que las
expresiones utilizadas tienen un trasfondo científico con ese concepto), plateau=±nk, con
n = entero impar para generar enrollamientos pares, y n = entero par, para generar enrolla-
mientos impares. h = retraso saturado del centro de las pendientes y debe estar de acuerdo
con hi = ±m donde i = 1,..., [(enrollamientos- 2)/2] y m = 2,4,..., (enrollamientos-2) para
enrollamientos pares; e i = 1,..., [(enrollamientos -1)/ 2] y m = 1,3,..., (enrollamientos -2)
para enrollamientos impares; p y q son enteros positivos [18,14].
f(x; k, h, p, q) =
q∑
i=−p
fi(x; h, k) (2.3)
9
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 2.1.2: Descripción PWL de una SNLF con 5 y 7 segmentos
Consideremos el siguiente sistema lineal autónomo de tercer orden:
.x = y.y = z.z = −ax− by − cz (2.4)
donde x, y y z son las variables de estado y a,b,c son constantes positivas. Para que el
sistema lineal (2.4) genere un comportamiento caótico, es necesario añadir un controlador
no lineal como se muestra en (2.5), donde f(x; k,h,p,q) está definido por (2.6), y se debe
satisfacer que 0<a b c d<1 para cumplir las condiciones de caos [14].
.x = y.y = z.z = −ax − by − cz + df(x; k, h, p, q) (2.5)
f(x; k, h, p, q) =
(2q + 1)k x > qh+ 1
k(x− ih) + 2ki |x− ih| ≤ 1;
−p ≤ i ≤ q
(2i+ 1)k ih+ 1 < x < (i+ 1)h− 1;
−p ≤ i ≤ q − 1
−(2p + 1)k x < −ph− 1
(2.6)
aplicando un factor de escala α a (2.6) se representa de la siguiente manera
10
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
f(x;α, k, h, p, q) =
(2q + 1)k x > qh+ α
k/α(x− ih) + 2ki |x− ih| ≤ α;
−p ≤ i ≤ q
(2i+ 1)k ih+ α < x < (i+ 1)h− α;
−p ≤ i ≤ q − 1
−(2p+ 1)k x < −ph− α
(2.7)
2.1.3. Método de Euler
La idea del método de Euler es muy sencilla y está basada en el significado geométrico
de la derivada de una función en un punto dado. Este método de integración numérica
se usa para resolver el sistema de ecuaciones diferenciales descritas en (2.5). se supone la
curva solución de una ecuación diferencial y se traza la recta tangente a la curva en el
punto dado por la condición inicial[14]. Debido a que la recta tangente aproxima a la curva
en valores cercanos al punto de tangencia, se puede tomar el valor de la recta tangente en
el punto X1 como una aproximación al valor deseado y(x1), como se muestra en la fig.2.3.
Figura 2.1.3: Representación grafica
Así, se puede calcular la ecuación de la recta tangente a la curva solución de la ecuación
diferencial dada en el punto (x0,y0) . Se sabe que la ecuación de la recta es:
y = m (x− x0) + y0 (2.8)
donde m es la pendiente. En este caso, se sabe que la pendiente de la recta tangente
se calcula con la derivada:
11
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
m = y′|(x0,y0) = f(x0, y0) (2.9)
Por lo tanto, la ecuación de la recta tangente es:
y = f (x0, y0) (x− x0) + y0 (2.10)
Ahora bien, se supone que x1 es un punto cercano a x0, y por lo tanto estará dado
como x1 = x0 + h. De esta forma, se tiene la siguiente aproximación:
y (x1) = y (x0 + h) ∼= f (x0, y0) (x0 + h− x0) + y0 ∼= y0 + hf (x0, y0) (2.11)
Esta aproximación puede ser suficientemente buena, si el valor de h es realmente pe-
queño. Ahora bien, si:
y1 = y0 + hf (x0, y0) (2.12)
Para obtener y2 únicamente hay que pensar que ahora el papel de (x0, y0) lo toma el
punto (x1, y1), y por lo tanto, al sustituir los datos se tiene:
y2 = y1 + hf (x1, y1) (2.13)
Por lo tanto se puede observar claramente que la fórmula recursiva general, está dada
por:
yn+1 = yn + hf (xn, yn) (2.14)
Esta es la conocida fórmula de Euler que se usa para aproximar el valor de y (xn)
aplicándola sucesivamente desde x0 hasta xn en pasos de longitud h.
Conociendo (2.14) se puede elaborar un algoritmo de integración conocido como método
numérico, para el análisis de los osciladores caóticos (ver apéndice A).
12
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
2.1.4. Simulación con MATLAB
MATLAB (abreviatura de MATrix LABoratory, por sus siglas en ingles) es un software
matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de pro-
gramación propio (lenguaje M). Entre sus prestaciones básicas se hallan: la manipulación
de matrices, la representación de datos y funciones, la implementación de algoritmos, la
creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes
y con otros dispositivos hardware.
2.2. Circuito de Chua
En la fig.2.4 se muestra la gráfica para dos enrollamientos y en la fig.2.5 se muestra
la respuesta del circuito con valores g1=-1/1358, g2=-1/2464, C1=450pF, C2=1.5 nF,
L=1mH, R=1655 Ω, Bp1=±.114, Bp2=±.4, condiciones iniciales Vc1=0.01 V, Vc2= 0 V,
IL=0 A y el tamaño de paso h=0.0000001; correspondiente a la fig.1.1 se realiza el análisis
del circuito para obtener (2.15)[19]:
dvc1dt
= −vc1 − vc2RC1
−mvc1 − iNR
C1,
dvc2dt
= −vc1 − vc2RC2
+ilC2, (2.15)
diLdt
= −vc2L
Teniendo la ecuaciones que definen al circuito, se suma la parte del elemento no lineal
formando de esta manera la matriz que servirá para la programación (Apéndice A)
vc1
vc2
iL
=
− 1RC1
− mc1
1RC1
01
RC2
− 1RC2
1C2
0 − 1L
0
vc1
vc2
iL
+
iNR
C1
0
0
(2.16)
13
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 2.2.1: Representación gráfica del diodo de Chua
Figura 2.2.2: Circuito de Chua generando 2 enrollamientos
Así mismo se puede obtener la gráfica de la señal en el tiempo de cada variable de
estado para observar la generación del caos como se muestra en la fig.2.6
14
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 2.2.3: Señales en cada variable de estado en el tiempo
2.3. Función no-lineal saturada (SNLF)
De manera generalizada se puede decir que el modelado de un oscilador caótico con
funciones no lineales saturadas, es similar al modelado del oscilador de Chua.
Para el caso citado en este trabajo el circuito modelado contiene un factor de escala
para funcionamiento con circuitos electrónicos.
La simulación numérica de (2.5) y (2.7) se lleva a cabo creando un programa en
MATLAB aplicando (2.14). (ver apéndice A) Si se considera el sistema de variables de
estado de la forma:
x
y
z
=
0 1 0
0 0 1
−a −b −c
x
y
z
+
0
0
−df(x;α, k, h, p, q)
(2.17)
Cuya solución aplicando (2.14) está dada por:
xn+1
yn+1
zn+1
= h
0 1 0
0 0 1
−a −b −c
x
y
z
+
0
0
−df(x;α, k, h, p, q)
(2.18)
Se puede observar que para el caso de xn+1 y yn+1 la solución se obtiene de manera
15
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
simple, pero para zn+1 se tiene un caso particular, muestra dependencia de f(x;α,k,h,p,q)
que es la SNLF, la cual cambia conforme el número de enrollamientos que se desea generar.
2.3.1. SNLF para dos enrollamientos
La fig.2.7 muestra la gráfica que contiene 3 segmentos, para generar dos enrollamientos
el cual sera el punto de enfoque en el proyecto, analizando dicha gráfica la SNLF se describe
como:
f(x;α, k, h, p, q) =
k x > qh+ α
sx −α ≤ x ≤ α
−k x < −ph− α
(2.19)
Figura 2.3.1: Grafica de 3 segmentos para generar dos enrollamientos
De (2.19) se obtienen los parámetros de condicionales necesarios para elaborar el pro-
grama (ver Apéndice A), y tomando valores a=b=c=d=0.7, k=1, ∝=6.4e-3, s=156.25,
h=2, p=q=1, para evaluar (2.19) se tiene como resultado la fig.2.8.
16
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 2.3.2: Oscilador caótico de dos enrollamientos, Graficas en el tiempo de las variables
17
Capítulo 3
Diseño de osciladores caóticos basados
en amplificadores operacionales
3.1. Implementación de las variables de estado
3.1.1. Generalidades de los opamps
El opamp mostrado en la fig.3.1, es básicamente un amplificador de voltaje con la
particularidad de tener dos entradas y amplificar sólo la diferencia entre ellas.
Figura 3.1.1: Modelo de un opamp
El opamp amplifica el voltaje Vi con una ganancia Av llamada también ganancia di-
ferencial de voltaje de lazo abierto produciendo un voltaje de salida V0=Av(V1-V2). Las
entradas V1 y V2 pueden alimentarse por dos voltajes referidos a tierra, o por un voltaje
flotante Vi, aplicado directamente entre las entradas. Idealmente el opamp tiene una ga-
nancia infinita de voltaje diferencial (Av), una resistencia de entrada infinita, una resistencia
de salida cero, CMRR y ancho de banda infinitos [20].
3.1.2. Configuraciones básicas
Configuración seguidor
La configuración en modo seguidor de voltaje para el opamp se muestra en la fig.3.2
18
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 3.1.2: Configuración seguidor
Configuración inversor
La configuración en modo inversor de voltaje para el opamp se muestra en la fig.3.3
Figura 3.1.3: Configuración inversor
Configuración sumador
La configuración en modo sumador de voltaje para el opamp se muestra en la fig.3.4
Figura 3.1.4: Configuración sumador
19
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Configuración integrador
La configuración en modo integrador de voltaje para el opamp se muestra en la fig.3.5
Figura 3.1.5: Configuración integrador
Configuración restador
La configuración en modo restador de voltaje para el opamp se muestra en la fig.3.6
Figura 3.1.6: Configuración restador
Configuración comparador de voltaje
La configuración en modo comparador de voltaje para el opamp se muestra en la fig.3.7
20
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 3.1.7: Configuración comparador de voltaje
Configuración derivador
La configuración en modo derivador de voltaje para el opamp se muestra en la fig. 3.8
Figura 3.1.8: Configuración derivador
3.1.3. Implementación electrónica del sistema
Oscilador con funciones saturadas con opamps
El sistema descrito por (2.5) tiene una representación en diagrama de bloques dada
en la fig.3.9. la cual puede implementarse con tres integradores, un sumador, bloques de
ganancia y la SNFL .
21
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 3.1.9: Diagrama del sistema caótico
Este sistema puede implementarse utilizando opamps como se muestra en la fig.3.10
Figura 3.1.10: Implementación con opamps
La figura 3.11 muestra la implementación de la función no lineal saturada con el am-
plificador operacional TL082 y la grafica de voltaje contra corriente de la misma.
22
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
a
b
Figura 3.1.11: a) SNLF con TL082, b) Grafica de la SNLF
Oscilador con diodo de Chua implementado con opamps
Diseño del inductor con operacionales
Para el diseño del inductor se opto por utilizar un convertidor de impedancias generaliza-
do[21].
Un convertidor de impedancias también se puede llamar simulador de impedancias, en
este caso usando el modelo genérico mostrado en la fig.3.12
Figura 3.1.12: Configuración genérica
La ecuación que define esta configuración esta dada en (3.1)
23
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Zin =V1I1
=Z1Z3Z5
Z2Z4(3.1)
Así tomando : Z1 = R1 ; Z3 = R3 ; Z5 = R5 y una de las dos Z2 ó Z4 como un
capacitor y la otra resistiva, se tiene:
L =R1R3R5
R2
Cs (3.2)
Como el valor del inductor es conocido simplemente se hace un arreglo en (3.2) propo-
niendo el valor de 3 de las resistencias y un capacitor quedando solo una resistencia como
incógnita para quedar de este modo:
R4 =R1R3R5
LCs (3.3)
Figura 3.1.13: Convertidor de impedancias generalizado
Una vez conocido el modelo de un convertidor de impedancias generalizado se pro-
pone que R1=R3=R5=1KΩ y el C=2.2nF teniendo a R4=2200Ω, como el opamp no es
ideal al momento de simular se hacen las mediciones necesarias para hacer correcciones de
funcionamiento teniendo así el siguiente modelo:
24
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 3.1.14: Inductor con convertidor generalizado
Diseño del diodo de Chua con opamps
Esta es determinado por la fuente de alimentación y por la estructura interna del opamp,
necesariamente se debe conocer este valor ya que el valor de la pendiente y los puntos de
rompimiento son muy importantes para el optimo funcionamiento del circuito[22].
Figura 3.1.15: Esquema del diodo de Chua con opamp
Tomando como referencia la fig.3.15:
Se escoge a R1 lo suficientemente grande (por decir 330Ω)
Se propone R2=R1
25
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Se evalúa
R3 =Esat
(Bp1 − Esat)g2 −Bp1g1(3.4)
Se calcula
R4 =Esat
(Bp1)(g2 − g1)(3.5)
R4=R5
Se evalúa
R6 =Esat
(Esat − Bp1)(g2 − g1)(3.6)
a
b
Figura 3.1.16: a) Diodo de Chua y b) Su pendiente
26
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 3.1.17: Circuito de Chua completo
3.1.4. Pruebas de los sistemas
Comparación de los osciladores de Chua y el basado en SNLF
Teniendo el diseño de los dos osciladores en cuestión, la correspondiente simulación y
pruebas en laboratorio, se tomaron en algunos criterios de selección tales como:
a) b)
Figura 3.1.18: Pruebas en laboratorio: a) Diodo de Chua y b) SNLF
Factibilidad para el diseño de un generador de números aleatorios
Fácil manejo de la frecuencia
27
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 3.1.19: FFT SNLF
De tal modo al observar dichos parámetros, se opto por trabajar con el oscilador de
funciones saturadas mostrado en la fig.3.10.
28
Capítulo 4
Diseño de generador de números
aleatorios
4.1. Generador de números aleatorios
Los números aleatorios tienen aplicaciones en muchas áreas: simulación, criptografia,
evaluación de múltiples integrales etc.
Generadores que producen secuencias aleatorias pueden ser clasificados en dos tipos:
generador de números verdaderamente aleatorios (por sus siglas en ingles TRNGs) y genera-
dor de números pseudo-aleatorios(PRNGs). TRNGs toman ventaja de la fuente de entropia
impredecible la cual verdaderamente produce números aleatorios.
Todos los sistemas criptograficos requieren de valores impredecibles, por lo tanto los
TRNG son un componente fundamental para mecanismos criptograficos.
El propósito de esto se basa en el diseño de un generar bits de manera aleatoria,
aprovechando la Impredecibilidad del oscilador en cuestión . Para lograr dicho objetivo se
opto por usar una configuración de opamps conocida como comparador de voltaje como se
muestra en la fig.3.7 combinado con un sumador el cual tendría como objetivo colocar la
secuencia obtenida de un par de comparadores a valores de lectura digital, es decir de 0 a
5 volts.
29
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 4.1.1: Generador de bits aleatorio
Figura 4.1.2: Señal del generador de bits
4.2. Pruebas
4.2.1. Aleatoriedad
Prueba de mono-bits
Para comprobar la aleatoriedad del generador de bits, se necesito ayuda de la plataforma
arduino debido a su fácil comunicación en modo serial, así mismo el apoyo de MATLAB fue
indispensable ya que fue ahí donde se elaboro el scritp de recopilación de datos, para realizar
una prueba de mono-bits (ver apéndice D), la cual consta en recolectar una muestra de
20000 bits y hacer una comparación respecto a datos preestablecidos en normas de pruebas
de aleatoriedad [27].
Una vez realizada la prueba se pudo comprobar que el generador paso la prueba, teniendo
en cuenta que el rango de “unos” debe ser 9725-10275.
30
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 4.2.1: Test de mono-bits
31
Capítulo 5
Leyes de control, simulación y pruebas
Un gran numero de trabajos en control cinemático de robots caóticos están basados en
un típico movimiento diferencial con dos grados de libertad, compuesto por dos activas, pa-
ralelas e independientes ruedas y una tercera rueda con función exclusiva de equilibrio[12,24-
27].
El chasis del robot es considerado como un cuerpo rígido operando en un plano horizon-
tal, el movimiento del robot móvil propuesto esta descrito por la velocidad lineal v(t) y la
velocidad angular w(t), la velocidad lineal provee un movimiento lineal de punto medio del
ejes de las llantas, mientras la velocidad angular provee un movimiento rotacional del robot
sobre el mismo punto. En la fig.5.1 se muestra la descripción del movimiento del robot en
un plano. El sistema de la ecuación 5.1 describe el control de movimiento del robot.
Figura 5.0.1: Descripción del movimiento en un plano
32
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
x(t)
y(t)˙θ(t)
=
cosθ(t) 0
sinθ(t) 0
0 1
[
v(t)
ω(t)
]
(5.1)
donde x(t) y y(t) son las posiciones del robot y θ(t) es la orientación.
Estas ecuaciones constituyen un sistema dinámico nonholomico; El control de este siste-
ma ha sido estudiado extensamente por varios grupos de investigación y diversas soluciones
son posibles por ejemplo[26,28].
En este trabajo la trayectoria del robot es producida por una secuencia de coordenadas
(x,y), dos diferentes leyes de control son usadas por otros investigadores [24-27]
5.1. Leyes de control retroalimentadas
Figura 5.1.1: Configuración del control cinemático
El modelo cinemático del robot descrito por (5.1), donde x(t) y y(t) son las posiciones
del robot y θ(t) es la orientación. Se puede definir el angulo ϕ entre el eje XR y el vector
respecto al centro del robot y la posición deseada como se muestra en la fig.5.2. La otra
configuración de variables, ρy ψ, describen la distancia entre la posición presente y la
deseada y el angulo entre la dirección al objetivo y el eje X0 respectivamente. considerando
un cambio de coordenadas definido por:
33
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
ρ =√
∆x2 +∆y2
ϕ = 180 + θ − ψ
la descripción del movimiento en la nuevas coordenadas son:
[
ρ
ϕ
]
=
[
−cosϕ 01ρsinϕ 1
][
v
ω
]
(5.2)
Considerando esta descripción del sistema de coordenadas polares, es necesario remarcar
que la transformación de la coordenada no esta definida en x=y=0. El propósito de la ley
de control define una realimentación para determinar la entrada del sistema, v y ω:
v = k1ρcosϕ;ω = −k1sinϕcosϕ− k2ϕ (5.3)
5.2. Control simple y discontinuo
Un segundo control cinemático esta basado en un esquema de control muy simple y
discontinuo. en este esquema, el robot ejecuta dos fases de acción de control: la primera
consiste en un movimiento de rotación exclusivamente con una velocidad angular respecto
al su centro, con esto la dirección del robot apunta hacia el siguiente punto:
x
y
θ
=
0
0
ω
(5.4)
Completada esta fase, el robot puede ejecutar el movimiento hacia el punto deseado
con una velocidad constante:
x
y
θ
=
cosθ
sinθ
0
[
v]
(5.5)
Evidentemente, si un obstáculo es encontrado en la trayectoria, el robot chocara.
Analizando las dos leyes de control, tomando en cuenta la facilidad de realizar dos
movimientos, el giro y traslación de la segunda ley analizada se procede a la escritura del
algoritmo en MATLAB para la simulación de la ley (ver apéndice b).
34
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 5.2.1: Diagrama del sistema físico completo
En la fig. 5.3 se muestra una representación del sistema completo:
La parte principal se constituye por el oscilador caótico, el cual es el encargado de
brindarle datos a la siguiente etapa, es decir, a un generador de bits aleatorio, este interpreta
la pequeña señal del oscilador caótico y la transforma a una señal de datos lógicos (1 y 0),
mismos que son interpretados por el microcontrolador para enviar una serie de ordenes a
los motores encargados de brindarle movimiento al sistema.
5.3. Programación de la ley de control
Una vez hecho el algoritmo en MATLAB, se procede a la escritura de la ley de control
en un microcontrolador (16f887) (ver apéndice C), utilizando el modulo de lectura analó-
gica para capturar los datos arrojados por el generador de bits aleatorios, guardarlos para
procesarlos y ser estos datos las coordenadas de trabajo para el movimiento del robot.
5.4. Pruebas
5.4.1. Programa en el microcontrolador
Una vez programada la ley de control, junto con el lector de bits se realizaron pruebas
en el laboratorio para verificar que dicho funcionamiento fuera eficaz.
35
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 5.4.1: Prueba del control de motores
Las pruebas realizadas arrojaron resultados positivos, es decir que el algoritmo elaborado
y el funcionamiento físico del hardware funciono de manera adecuada para proseguir con el
paso próximo.
Una vez realizadas las pruebas necesarias de la ley de control, el siguiente paso es una
prueba especifica, es decir construir un pequeño prototipo para realizar las pruebas a nivel
2D.
Para el diseño del robot móvil se opto por usar un material liviano pero resistente,
así mismo se usaron dos motores a paso, y una rueda loca para el equilibrio ya antes
mencionado.
En esta etapa del proyecto se necesito ingenio para visualizar la dimensión del móvil y así
no exceder la capacidad de esfuerzo de los motores y que el móvil se moviera tranquilamente.
Tabla 5.1: Comparación de pruebas realizadas.
Prueba/parametros #1 #2 #3 #4 #5 #6
% erroneo Rotación 80 65 30 5 3 3
% erroneo Traslación 90 75 20 3 3 3
% erroneo Permanencia (1.5m2) 85 80 60 10 6 2
% erroneo Permanencia (2m2) 80 55 25 8 3 2
% erroneo Permanencia (3m2) 70 60 35 10 3 2
El proceso de pruebas físicas del sistema permiten presentar resultados positivos del
nivel de control que se puede tener de dicho sistema para distintas áreas a explorar.
36
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
Figura 5.4.2: Móvil funcionando
37
Capítulo 6
Conclusiones y trabajos futuros
6.1. Conclusiones
El uso del caos tiene muchas aplicaciones, tales como comunicaciones seguras, encrip-
tación, aparatos de aplicación medica, construcción de robots móviles planeadores de tra-
yectorias; aun falta mucho por desarrollar y experimentar con respecto a robots planeadores
implementando osciladores caóticos.
El uso de osciladores para aplicación en robots móviles es una gran alternativa para
ahorrar hardware computacional, es decir la el corazón del robot planeador sera un oscila-
dor caótico, acompañado de dispositivos como sensores que apoyaran el mejor desempeño
dependiendo de la aplicación a la cual este destinada el móvil.
El uso de osciladores mas complejos podría mejorar la eficiencia de cobertura de área
de un robot móvil en un plano, es decir si el uso de un oscilador de dinámica simple puede
cubrir un área considerable, que no haría uno de dinámica mas compleja.
A continuación se presentan las conclusiones relacionadas con el desarrollo de este
trabajo, de acuerdo al orden de los puntos que se tratan en cada capítulo.
Se presentó el modelado matemático del sistema caótico mediante el uso de variables
de estado y aproximaciones PWL. Se propuso una nueva estructura de la SNLF,
con la cual se reducen los niveles de voltaje para su implementación con dispositivos
comerciales.
Para la síntesis, se partió del sistema en variables de estado y su representación en
diagrama de bloques, la cual se implementó con tres integradores y un sumador,
mismos que se realizaron utilizando opamps comerciales.
Se demostró que la SNLF puede sintetizarse con opamps, debido a que su comporta-
miento en modo voltaje puede ser modelado mediante el uso de funciones saturadas,
38
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
ajustándose al modelo de ganancia finita del opamp, lo cual permitió controlar los
puntos de quiebre y pendientes de la función no lineal.
Se presento el diseño de un generador de Bits aleatorios para constituir coordenadas
de desplazamiento del robot móvil, así mismo se demostró que el generador cumple
algunas de las normas establecidas para identificar la aleatoriedad de un generador
de ese tipo.
Para el control, se partió del análisis de un sistema cinemático, así como el análisis
de leyes de control ya antes utilizadas por algunos investigadores aplicadas a robots
móviles con implementación de osciladores caóticos.
Los motores usados en la estructura del móvil fueron motores a pasos de 7.5 grados por paso
y por tal motivo la exactitud del prototipo no es 100 % eficiente, así mismo la tracción de
la ruedas fue otro factor en contra del optimo funcionamiento del prototipo móvil, factores
que son puntos específicos de mejora para trabajos futuros.
6.2. Trabajos futuros
Se proponen las siguientes actividades por realizar en trabajos posteriores:
Realizar un estudio para cuantificar la calidad de la aleatoriedad y validar la utilidad
de exploración de un robot móvil en un campo.
Buscar otras aplicaciones al sistema diseñado.
Continuar experimentando con diferentes sistemas caóticos de dinámicas más com-
plejas, como sistema caótico de n-enrollamientos en 2D.
Mejora del diseño en este proyecto:
1. Motores a pasos como una mayor cantidad de pasos
2. Ruedas de mayor tracción
3. Armazón resistente a diferentes medios
4. Diseño de un circuito integrado que integre el oscilador caótico
39
Bibliografía
[1] Claude E. Shannon, “Communication Theory of Secrecy Systems”. Bell System Tech-
nical Journal, Vol 28, Oct 1949, pgs 656-715
[2] P. Sooraska, K. Klomkarm, No-CPU Chaotic Robots: From Classroom to Commerce,
IEEE Circuits and Systems Magazine 10(2010)46-53.
[3] J. Lü, G. Chen, “Generating Multiscroll Chaotic Attractors: Theories, Methods and
Applications”, International Journal of Bifurcations and Chaos, vol. 16, no. 4, 2006,
pp. 775-858.
[4] Yu, S. M., Ma, Z. G., Qiu, S. S., Peng, S. G. & Lin, Q. H. “Generation and synchro-
nization of nscroll chaotic and hyperchaotic attractors in fourthorder systems”, Chin.
Phys. 13, 2004, pp. 317328.
[5] J. Lü, S. Yu, H. Leung and G. Chen. “Experimental verification of multidirectional
multiscroll chaotic attractors”, IEEE Trans. Circuits Syst.-I 53, 2006, pp. 149-165.
[6] Chen W. K., Vandewalle J. and Vandenberghe L., “Piecewise-linear circuits and
piecewise-linear analysis: Circuits and Filters Handbook”, CRC Press/IEEE Press,
(1995).
[7] C. Liu, T. Liu, L. Liu, Y. Su, “A New Nonlinear Chaotic System”, International Journal
of Nonlinear Sciences and Numerical Simulation, 7(3): 345-352 (2006).
[8] H. Sira-Ramírez and C. Cruz-Hernández, “Synchronization of Chaotic Systems: A
Generalized Hamiltonian Systems Approach”, International Journal of Bifurcations and
Chaos, vol 11, no. 5, 2001, pp. 1381-1395.
[9] Ashraf Anwar Fahmy ment of Computer Engine,Chaotic Mobile Robot Workspace
Coverage Enhancement, Journal of Automation, Mobile Robotics & Intelligent Systems
VOLUME 6, N° 1 2012
[10] A. Sekiguchi and Y. Nakamura, “The Chaotic mobile robot”, in: Proc. IEEE/RSJ. Int.
Conf. Intelligent Robots and Systems, vol. 1, 1999, pp. 172-178.
40
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
[11] CHRISTOS K. VOLOS AND N.G. BARDIS, Implementation of Mobile Robot by Using
Double-Scroll Chaotic Attractors, Recent Researches in Applications of Electrical and
Computer Engineering, ISBN: 978-1-61804-074-9
[12] A.B. Eduardo, S.J. Tomás, V.V. Martín, Control no Lineal Discontinuo de un Robot
Móvil, Computación y Sistemas, número especial, Marzo 2002, pp. 042-049.
[13] Mainzer, K. Thinking in Complexity: The Complex Dynamics of Matter, Mind, and
Mankind. Springer-Verlag, 1994.
[14] V.H. Carbajal-Gómez, Diseño de Osciladores Caóticos para Comunicaciones Seguras,
Tesis de Ingenieria en electronica y comunicaciones, BUAP, México 2009.
[15] Juan A. Rodríguez Liñán & Jesús de L. Morales. “Control de Sistemas Caóticos”.
Ciencia UANL Enero-Marzo 2008; vol. (IX).
[16] Robot autónomo controlado por CPU
[17] J. Lü, G. Chen, X. Yu and H. Leung, “Design and Analysis of Multiscroll Chaotic At-
tractors From Saturated Function Series”, IEEE Transactions on Circuits and Systems,
vol 51, no. 12, 2004, p. 2476-2490.
[18] J.M. Muñoz-Pacheco and E. Tlelo-Cuautle, “Synthesis of n-Scroll Attractors using
Saturated Functions from High-Level Simulation”, Journal of Physics- Conference Se-
ries: 2nd Int. Symposium on Nonlinear Dynamics, 96(1) (2008). DOI: 10.1088/1742-
6596/96/1/012050.
[19] E. Tlelo-Cuautle, M.A. Duarte-Villaseñor, Designing Chua’s circuit from the beha-
vioral to the transistor level of abstraction,Science Direct, Applied Mathematics and
Computation 184 (2007) 715–720
[20] Adel A. Sedra, Kenneth C. Smith, “Circuitos Microelectrónicos”. Oxford University
Press.1998.
[21] Análisis y sintesis de circuitos,Departamento de Teoría de la Señal y Comunicacio-
nes. Universidad de Alcalá,Michael Peter kennedy, Robust opamp realization of chuas
circuit, National Science Foundation
[22] Adoracion Hermoso Fernandez,Circuitos con amplificadores operacionales
[23] L.S. Martins-Filho, E.E.N. Macau, R. Rocha, R.F. Machado, L.A. Hirano, Kinematic
control of mobile robots to produce chaotic trajectories, in: Proc. of the 18th Int.
Congress of Mechanical Engineering, Ouro Preto, November 2005.
41
Instituto Tecnológico de Tuxtla Gutiérrez INAOE
[24] Martins-Filho, L.S. and Macau, E.E.N., Patrol mobile robots and chaotic trajectories.
Mathematical Problems in Engineering. v2007. 1
[25] S.-O. Lee, Y.-J. Cho, M. Hwang-Bo, B.-J. You, S.-R. Oh, A stable target-tracking
control for unicycle mobile robots, in: Proc. of the IEEE/RSJ International Conference
on Intelligent Robots and Systems, Takamatsu, Japan, vol. 3, October-November
2000, pp. 1822-1827.
[26] Ch.K. Volos, I.M. Kypriandis, I.N. Stouboulos, A Chaotic Path Planning For Autono-
mous Mobile Robots, Robotics and Autonomous Systems, Vol. 60, Enero 2012, pp.
651-656.
[27] C. Canudas de Wit and O. J. Sordalen, “Exponential Stabilization of mobile robots
with nonholomic constraints”, IEEE Transactions on Automatic Control, vol. 37, no.
11, pp. 1791-1797, 1992.
[28] J. Lü, G. Chen, “Generating Multiscroll Chaotic Attractors: Theories, Methods and
Applications”, International Journal of Bifurcations and Chaos, vol. 16, no. 4, 2006,
pp. 775-858.
[29] Katsuhiko Ogata, “Ingieneria de Control Moderna”. Prentice Hall Hispanoamericana,
S.A., 3a edición, México 2000.
[30] Data Sheet TL082,
http://www.datasheetcatalog.net/es/datasheets_pdf/T/L/0/8/TL082.shtml
[31] Data Sheet LF356N,
http://www.datasheetcatalog.com/datasheets_pdf/L/F/3/5/LF356N.shtml
[32] Data Sheet PIC16F887,
www.engr.usask.ca/classes/EE/391/notes/PIC16F886.pdf
[33] Moriello, S.A. “Sistemas complejos, caos y vida artificial”.
http://redcientifica.com/doc/doc200303050001.html
[34] Y. Nakamura and A. Sekiguchi, The Chaotic Mobile Robot, IEEE Trans. Robot. Au-
tom., Vol. 17, 2001, 898–904.
[35] Andrés Cánovas López , MANUAL DE USUARIO DEL COMPILADOR PCW DE CCS
[36] Eduardo García Breijo , COMPILADOR CCS y SIMULADOR PROTEUS PARA MI-
CROCONTROLADORES PIC, Primera Edición, Alfa omega Grupo Editor. S.A . de
c.v., México, ISBN:978-97015-1397-2, pp-276
[37] Michael Margolis and Nicholas Weldin, Arduino Cookbook, primera edición, marzo
2011, O’Reilly Media, Inc., ISBN: 978-0-596-80247-9
42
Apéndice A
Código MATLAB para el modelado de
SNLF de dos enrollamientos
código en MATLAB para el Modelado del circuito de chua para dos enrollamientos
clear
clc
disp(’2 enrollamientos’)
h=1e-7;
g1 = -1/1358;
g2 = -1/2464;
BP1 = 0.114;
C1 = 450e-12;
C2 = 1.5e-9;
L = 1e-3;
R = 1655;
n=0;
Xn=[0.01;0;0];
Xn1=Xn;
Vc1=Xn1(1);
Vc2=Xn1(2);
iL=Xn1(3);
A=[-1/(R*C1) 1/(R*C1) 0;1/(R*C2) -1/(R*C2) 1/C2;0 -1/L 0];
B=[-1/C1;0;0];
43
APÉNDICES
disp(’ GENERANDO GRAFICA ’)
while n<20000
if Xn(1)<-BP1
fb=g2*Xn(1)+((g2 - g1)*BP1);
elseif Xn(1)<BP1
fb=g1*Xn(1);
else
fb=g2*Xn(1)+((g1 - g2)*BP1);
end
%******************
Xn=Xn+h*((A*Xn)+(B*fb));
Xn1=[Xn1 Xn]; n=n+1;
end
Vc1=Xn1(1,:);
Vc2=Xn1(2,:);
iL=Xn1(3,:);
plot3 (Vc1,iL,Vc2)
grid on;
Código MATLAB para el modelado de SNLF de dos enrolla-
mientos
clc
clear
disp(’2 enrollamientos’)
s=2;
k=1;
alpha=6.4e-3;
a=.7;
h1=.05;
t0=0;
tf=2000;
44
APÉNDICES
disp(’GENERANDO GRAFICA’)
switch (s)
%****************************************************
case 2
%CONSTANTES
a=a; b=a; c=a; d=a;
%CONDICIONES INICIALES
xn0=.1; yn0=.1; zn0=.1;
%PROGRAMA
t=t0;
tab1=[t,xn0,yn0,zn0];
int=[t0:h1:tf];
for i=1:length(int)-1
%APROXIMACIÓN POR EULER
xn=xn0+h1*(yn0);
yn=yn0+h1*(zn0);
%SNLF
if xn0 > alpha
zn=zn0+h1*(-a*xn0-b*yn0-c*zn0+d*k);
elseif xn0 >= -alpha & xn0 <= alpha
zn=zn0+h1*(-a*xn0-b*yn0-c*zn0+d*(k*xn0));
elseif xn0 < -alpha
zn=zn0+h1*(-a*xn0-b*yn0-c*zn0-d*k);
end xn0=xn; yn0=yn; zn0=zn;
%ARREGLO
t=t+h1;
p1=[t,xn,yn,zn];
tab1=[tab1;p1];
end
%GRAFICA
subplot(2,2,1),plot(tab1(:,2),tab1(:,3),’blue’)
45
APÉNDICES
xlabel(’xn’)
ylabel(’yn’)
grid
subplot(2,2,2),plot(tab1(:,2),’blue’)
xlabel(’t’)
ylabel(’x’)
grid
subplot(2,2,3),plot(tab1(:,3),’blue’)
xlabel(’t’)
ylabel(’y’)
grid
subplot(2,2,4),plot(tab1(:,4),’blue’)
xlabel(’t’)
ylabel(’z’)
grid
%plot3(tab1(:,2),tab1(:,3),tab1(:,4),’blue’)
otherwise
end
46
Apéndice B
Ley de control MATLAB
% Calculo de frecuencia angular o angulo de giro y distanciaclear
clc
x0=0;
y0=0;
teta0=0;
x=[5 3 6 0 8 0 8];
y=[5 2 8 0 8 0 8];
n=1;
while n<8
xx=abs(x(n)-x0);
yy=abs(y(n)-y0);
r=sqrt(xx^2 + yy^2)
teta=((atan2((y(n)-y0),(x(n)-x0))))*(180/3.141593)
w=teta-teta0 x0=x(n);
y0=y(n); teta0=teta;
n=n+1;
end
47
Apéndice C
Ley de control PIC
#include <16f887.h>
#fuses NOWDT,HS,NOMCLR,NOLVP
#device adc=10
#use delay (clock = 20MHZ)
#include <math.h>
#include "flex_lcd.c"
#use standard_io(A)
//#use standard_io(B)
#use standard_io(C)
int16 valor; float volts; int i,j,xa,a,b,c,d,x,y,hh;
SIGNED int ii;//Variable con signo que nos sirve para recorrer el array pasos
int1 giro; int captura[8]; float teta;
float hipotenusa;////distancia a recorrer
float w;////angulo de rotacion
//////////////////////////////////////////////
void rotacion(void)/// rotación en propio eje
set_tris_b(0b00000000);// 1= Entradas ; 0 = Salidas
const int8
pasos[8]=0b10000001,0b1100011,0b01000010,0b01100110,00100100,00111100,10011001;
if(giro==0)//Si x vale 0 el motor gira en un sentido, si vale 1 girara en el contrario
for(ii=0;ii<8;ii++) // Recorremos el array pasos haciendo girar el motor
output_b(pasos[ii]);
delay_ms(100);
48
APÉNDICES
if(giro==1)
for(ii=8;ii>=0;ii–)// Recorremos el array pasos haciendo girar el motor en sentido
contrario
output_b(pasos[ii]);
delay_ms(100);
void movimiento(void)//// recorrido de distancia
set_tris_b(0b00000000);// 1= Entradas ; 0 = Salidas
const int8
pasos[8]=0b10001000,0b11001100,0b01000100,0b01100110,00100010,00110011,10011001;
for(ii=0;ii<8;ii++) // Recorremos el array pasos haciendo girar el motor
output_b(pasos[ii]);
delay_ms(100);
////////////////////////////////////////////////
void main()
lcd_init();
int x0=0, y0=0; float teta0=0;
enable_interrupts(INT_CCP2);
enable_interrupts(GLOBAL);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(sAN0);
setup_adc_ports(VSS_VDD);
set_adc_channel(0);
setup_ccp2(CCP_COMPARE_RESET_TIMER);
ccp_2=1200; // cuenta hasta 220us setup_timer_1(T1_INTERNAL |T1_DIV_BY_1);
set_timer1(0);
output_low(PIN_A2); //para mostrar que la lectura adc es cada 200us
for(;;)
49
APÉNDICES
for(i=0;i<8;i++)
volts=(valor*5.0)/1023;
if (volts<4.5)
xa=0;
output_low(PIN_A3);
else
xa=1;
output_high(PIN_A3);
captura[i]=xa;
///////////////////////////////////////////////
if (captura[0]==1)
a=8;
else a=0;
if (captura[1]==1)
b=4;
else b=0;
if (captura[2]==1)
c=2;
else c=0;
if (captura[3]==1)
d=1;
else d=0;
x=a+b+c+d;
if (captura[4]==1)
a=8;
else a=0;
if (captura[5]==1)
b=4;
else b=0;
if (captura[6]==1)
c=2;
else c=0;
if (captura[7]==1)
d=1;
50
APÉNDICES
else d=0;
y=a+b+c+d;
/////////////////////////////////////////////////// ////////////////////
/* for(j=0;j<4;j++)
printf(lcd_putc," %d",captura[j]);
delay_ms(20);
lcd_gotoxy(1,2);
printf(lcd_putc,"y= ");
for(j=4;j<8;j++)
printf(lcd_putc," %d",captura[j]);
delay_ms(20); */
//////////////////////// ////////////////////////// cálculos
float x1=x;///se guarda el valor actual en la variable x1 y y1
float y1=y;
float xx=(x1-x0);
float yy=(y1-y0);
float hipo=((xx*xx)+(yy*yy));/// distancia
hipotenusa=(SQRT(hipo));//4;//// calcula la distancia a recorrer
teta=((ATAN2((y1-y0),(x1-x0)))*(180/3.141593));
w=teta-teta0;
printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
//printf(lcd_putc,"xx= %d",xx);
//printf(lcd_putc,"teta= %f",teta);
printf(lcd_putc,"hip= %f",hipotenusa);
printf(lcd_putc,"w= %g",w); lcd_gotoxy(1,2);
printf(lcd_putc,"x= %d",x);
printf(lcd_putc,"y= %d",y);
///printf(lcd_putc,",w= %f",w);
//lcd_gotoxy(1,2);
//printf(lcd_putc,"yy= %d",yy);
//printf(lcd_putc,"w= %g",w);
//lcd_gotoxy(1,8);
//printf(lcd_putc,"x0= %d",x0);
/// imprime valor para verificar angulo
x0=x1;
51
APÉNDICES
y0=y1;
teta0=teta;
if(w<=0)
giro=1;
else
giro=0;
if(w==0 && x==0 && y==0)
set_tris_b(0b00000000);
/////// ((250cm / 25cm)*(12))/sqrt(225) (12 es el numero de veces que se //repite
el for de movimiento para alcanzar 25 cm // para 250 X 250 cm el factor= 8 //para 200
X 200 cm el factor= 6.4 //
for(j=0;j<=abs(w/30);j++)////este lo debe dar w
rotacion();
for(hh=0;hh<=(hipotenusa*8);hh++)//// hipotenusa y depende del radio de la rueda
movimiento();
set_tris_b(0b00000000);
///////////////////////////////
delay_ms(200);
#INT_CCP2
void lectura_adc() // interrupción cada 200us
valor=read_adc();
output_high(PIN_A2);
// para ver que se esta ejecutando cada 200us
delay_us(10);
output_low(PIN_A2);
52
Apéndice D
Test de mono-bits MATLAB-arduino
% % % % Código MATLABclear
clc
S=serial(’/dev/ttyUSB4’,’BaudRate’,9600,’StopBits’,1,’Terminator’,’CR/LF’,’DataBits’,8,’Parity’,’none’,’Timeout’,3);
fopen (S);
zeros=0;
unos=0;
n=1;
y=0;
a=0;
x=20000;
while n<=20000
x(n)=fscanf(S,’ %d’);
if x(n)==1
y=y+1;
else
a=a+1;
end
n=n+1;
end
x
zeros=a
unos=y
fclose(S);
53
APÉNDICES
delete(S);
clear S;
% INSTRFIND
///////// Codigo Arduino// set pin numbers:
const int buttonPin = 2;
// the number of the pushbutton pin
const int ledPin = 13;
// the number of the LED pin
// variables will change:
int buttonState = 0;
// variable for reading the pushbutton status
void setup()
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
Serial.begin(9600);
void loop()
// read the state of the pushbutton
value: buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. // if it is, the buttonState is HIGH:
if (buttonState == HIGH)
// turn LED on:
//digitalWrite(ledPin, HIGH);
else
// turn LED off:
//digitalWrite(ledPin, LOW);
Serial.println(buttonState);
54
APÉNDICES
///////// Codigo PIC16f887#include <16f887.h>
#fuses NOWDT,HS,NOMCLR,NOLVP
#device adc=10
#use delay (clock = 20MHZ)
#include <math.h>
#use standard_io(A)
//#use standard_io(B)
#use standard_io(C)
int16 valor; float volts; int xa;
//////////////////////////////////////////////
////////////////////////////////////////////////
void main()
enable_interrupts(INT_CCP2);
enable_interrupts(GLOBAL);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(sAN0);
setup_adc_ports(VSS_VDD);
set_adc_channel(0);
setup_ccp2(CCP_COMPARE_RESET_TIMER);
ccp_2=1200; // cuenta hasta 220us setup_timer_1(T1_INTERNAL |T1_DIV_BY_1);
set_timer1(0);
output_low(PIN_A2);
//para mostrar que la lectura adc es cada 200us
for(;;)
volts=(valor*5.0)/1023;
if (volts<4.5)
xa=0; output_low(PIN_A3);
else
xa=1;
output_high(PIN_A3);
/////////////////////////////////////////////////// ///////////////////////////////
#INT_CCP2
void lectura_adc() // interrupción cada 200us
55
APÉNDICES
valor=read_adc();
output_high(PIN_A2);
// para ver que se esta ejecutando cada 200us delay_us(10);
output_low(PIN_A2);
56