Arte de guerra

Texto completo

(1)TECNOLÓGICO. DE MONTERREY•. BiSL;O T.E C A. ITESM-CCM Proyectos de Ingeniería Computacional. "Arte de Guerra". Integrantes:. Pablo Ayala Sarmiento Yamil Ramos Tueme Rodrigo Eddy Ochoa Asesor: Marco Antonio Paz Ramos Enero-Mayo 2006.

(2) ÍNDICE ,. l. INTRODUCCION .......................................................................3 i.. Objetivos y Metas ..............................................................3. ii.. Estado del Arte ..................................................................5 ,. 11. TEORIAS ................................................................................. 7 i.. Hardware ........................................................................ 7 a. Componentes .......................................................... 7 b. Diagramas de bloques .............................................. 13 c. Conexiones ............................................................ 17. ii.. Software ........................................................................ 21 a. Idea básica ............................................................ 21 b. Diagramas de flujo .................................................. 22. 111. RESULTADOS .........................................................................30 i.. Resultados Hardware ........................................................30. ii.. Resultados Software ......................................................... 31. iii.. Estudio de mercado y análisis financiero ................................32. IV. CONCLUSIONES ..................................................................... 33 V. REFERENCIAS ........................................................................34 VI. ANEXOS .................................................................................34 2 TECNOLOOCO DE MONTERREY..

(3) I. INTRODUCCIÓN La robótica comienza a ser un concepto de dominio público, el conocimiento sobre sus aplicaciones y el potencial que ofrece está en aumento; el diseño de un Robot va desde la tracción y locomoción que tendrá así como los distintos dispositivos electrónicos que le permitirán comunicarse con el mundo para interactuar con él. Hay diferentes tipos de robots, los de velocidad, seguidores de línea, luchadores de sumo, de fútbol, etc. En nuestro caso hemos decidido trabajar con robots que pelean mediante transmisores y receptores infrarrojos, detectan obstáculos y a su enemigo mediante la ayuda de una cámara que permite la interpretación de imágenes a través de un microprocesador; de esta forma englobamos la mayoría de las funciones de los robots antes mencionados. A lo largo del siguiente documento explicaremos todo el diseño y desarrollo del proyecto antes descrito.. i.. Objetivos y Metas. Los objetivos planteados para la creación de los robots son los siguientes: a. Diseño de hardware eficiente que permita desplazar a los robots e interactuar con el entorno, el diseño incluye: 1. Selección correcta de los motores que proporcionen tanto potencia como torque suficiente para mover todo el mecanismo. 2. Acoplamiento de las llantas a los motores 3. Selección indicada de los sensores que van a detectar los obstáculos en el espacio del robot. 4. Selección de los motores que moverán a los sensores (servos). 5. Selección de los disparadores y receptores. 6. Selección de la cámara para el seguimiento de color y procesamiento de imágenes. 3 TECNOLÓGICO DE MONTERREY ...

(4) 7. Integración de todos los elementos de Hardware mediante la creación de un sistema mínimo. b. Diseño de software para lograr la integración funcional de todos los elementos antes mencionados en la parte de hardware, el diseño incluye: 1. Lógica correcta para manejar las señales del puente h que permita el giro en ambas direcciones de los motores según la necesidad del robot 2. Lógica para el manejo de los sensores mediante interrupciones externas, evitando choques constantes del robot. 3. Creación de dos señales PWM para los servos que maneJan los sensores, controlándolos para mantener sólo el rango de movimiento deseado (lateral y frontal). 4. Después de detectar al enemigo a una distancia segura de disparo (menos de 30 cm), crear un tren de pulsos para generar el disparo a través de los transmisores. 5. Lógica para recibir los disparos y deshabilitar al robot después de su muerte (50 flancos de subida recibidos= muerte). 6. Con la cámara tenemos como objetivos la detección y seguimiento del color deseado (rojo, verde) y la medición de la mediana de valores RGB de cada imagen; al mencionar seguimiento como objetivo tenemos que el robot sea capaz de dirigirse hacia el centro de masa del color que tenga programado. 7. Integración de los elementos de Software. La meta principal es la correcta integración tanto del software como del hardware mediante la implementación de cada uno de los objetivos. Como objetivo adicional se pretende programar lógica difusa para permitir que el robot haga la selección del rango válido de detección del enemigo o para diferir entre obstáculos del mismo color que su enemigo mediante la detección de movimiento.. 4 TECNOLÓC1CO DE MONTERREY ...

(5) ii.. Estado del Arte a. Robots de Guerra El robot mostrado en la imagen es un prototipo que se utiliza actualmente por el gobierno de USA, lo que se espera es que en un futuro puedan ser dejados caer desde un avión y que tengan la coordinación suficiente para diseñar y ejecutar ataques en el campo Figura I. enemigo. Actualmente pueden recorrer terrenos evitando obstáculos, liberar cortinas de humo, verificar la presencia de armas químicas, además de tener un "cuello" que les permite observar en las esquinas sin ser detectados por el enemigo.. b. Sensores de Proximidad Dentro de la categoría de sensores ultrasónicos encontramos al Massa-Sonic M-5000/95 que es lo último en tecnología ultrasónica ya que alcanza un rango de 6 metros de detección sin ningún problema, además de tener incluido un microprocesador, para tener un control altamente exacto de la distancia, posición o nivel.. c. Servos. UIJIA: tfRW W\.U'tlB ·iriut f n:. t.JW;A:~. NXCR-m Mt·i•s. Figura 2.. Los servos mostrados arriba son de la marca FANUC líder en el desarrollo de motores, poseen ventajas como la detección de errores dentro de los. t.. TECNOLÓGICO . . DE MONTERREY.,. 5.

(6) equipos mediante un sensado de la temperatura en el motor, además de que ahorran energía detectando estados estacionarios.. d. Cámara. La cámara utilizada en este proyecto es el modelo CMU carn2, en este caso coincide en ser el estado del. arte. en. cuanto. procesamiento. a de. imágenes a bajo costo se refiere,. es. generación. la. segunda. del. modelo. CMU, con las ventajas de que tiene. salidas para. Figura 3. controlar directamente los servos. Detecta movimiento, provee estadísticas de los valores RGB y transmite información de las imágenes captadas hacia la computadora para procesamiento adicional.. 6.

(7) 11. TEORÍAS Como ya se ha manejado anteriormente, y por simplicidad del proyecto y su más fácil comprensión se ha optado por dividir los conceptos en parte de Hardware y parte de Software. La primera parte se narra todo lo que tiene que ver con la parte fisica del diseño así como las interconexiones del dispositivo que permiten que el sistema funcione de manera adecuada. En la segunda parte, que será referente a la parte lógica se expondrá todo lo asociado con el desarrollo de la parte de programación.. l. Hardware Los componentes de la parte del Hardware son muy diversos ya que las tareas que podrá desempeñar también serán muy diversificadas, por lo que debe estar adaptado a distintas situaciones y tener las herramientas necesarias para resolver los problemas que se puedan presentar.. a. Componentes: ~. Sensores ultrasónicos. Para esquivar obstáculos en caso de ser necesario.. ~. Microcontrolador. Parte central de procesamiento (CPU).. ~. Cámara de video. Encargada de efectuar la adquisición digital de imágenes.. ~. Receptores. Fototransistores con una etapa de amplificación para recibir y corregir la señal.. ~. Disparadores. LED Infrarrojo para manar el disparo.. ~. Motores. Motores acoplados con llantas para desplazar al robot.. ~. Circuitos Integrados. Encargados de manejar la lógica de disparo en el hardware.. ~. Puente 'H'. Encargado de polarizar los motores.. ~. Fuente de Alimentación. Batería de l 2V. i. Sensores ultrasónicos Los sensores para la detección de obstáculos son ultrasónicos conocidos corno sensores de sonar de bajo costo SRF04 7 TECNOLÓGtCO DE MONTERREY.,.

(8) Figura4. Beam Pattem. Ver gráfico 1. ¡. ¡Voltaje. 5v. ,Corriente. 30mA Typ. 50mA Max. Frecuencia. ¡40KHz. [Rango Máximo. !3m 1. Rango Mínimo. ¡3 cm. Sensibilidad. ¡Detecta a un tubo de 3cm de diametro a más de 2 m. !. 1. ¡Disparador de entrada¡ 1OuS Min. Pulsos TTL :Pulso de Eco. jPositive TTL level signal, width proportional to range. Tabla I. Gráfico I. 8 TECNOLÓOCO DE MONTERREY ...

(9) En la tabla 1 se encuentran las especificaciones del sensor, en el gráfico uno se describe el rango de alcance que tiene el sensor.. SRF04 Timing Diagram Trigger Pulse 10uS Min ~. Trigger Input To Module. -. 8 Cycle Sanie Sur&. Allow10mS From of Echo To Next Trigger Pulse. 1 - - - - - - - 1 End. Sanie Burst From Module. Echo Pulse Outpli To User Timing C1rcuit. Echo Pulse 100uS to 1BmS. Note. Echo Pulse is .Ap¡:iroK. 36mS if no Object Detected. Figura 5. El diagrama de tiempos mostrado en la figura 7 ejemplifica el funcionamiento del sensor ultrasónico, recibe un pulso de entrada que lo habilita, lanza las señales ultrasónicas y regresa la señal de eco, donde cada 30us igualan a 1 cm de distancia. El precio de cada uno de los sensores es de 25 dólares y como se necesitan 4 sensores en total, dos por cada uno de los carros, haciendo la conversión a pesos el costo de los sensores fue de $1090. Estos dispositivos pueden ser adquiridos en Estados Unidos en la tienda acroname.. ii. Servo-motores Este es el diagrama de un servomotor típico:. 9 TECNOLÓGICO DE MONTERREY~.

(10) ~ V. Cable blanco o .marilo (Nsos). Diámero =o.~ cm. /. Cable negro. (Tierra). D.2011 11. 'c~r(f) :--: (+ sv). 1. 4 c:m. ' '. -----------~- 1.7.S. em-·j. !··· ···. --- 2c:m----. 3.6 cm·····-;. Figura 6. Un servomotor de este tipo consiste básicamente en un motor eléctrico que sólo se puede mover en un ángulo aproximado de 180 grados (no dan vueltas completas como los motores normales) y la posición deseada se le indica al servomotor por medio de pulsos PWM que se generan en el CPU. Los servomotores fueron adquiridos también en Estados Unidos en la tienda acroname y el precio de cada uno de ellos es de 10.90 dólares. El número total de servomotores es de 4, ya que se necesita uno por cada sensor. El costo en pesos de estos dispositivos es de $475.24. iii. Reguladores El regulador utilizado en el proyecto del robot va a ser el LM7805 en la siguiente figura se muestra en encapsulado de un regulador LMXX.. 10 TECNOLÓGICO DE MONTERREY.,.

(11) :1. o. 11:. E] ET S Figura 7. En la figura anterior, se muestra un típico integrado regulador de tensión donde E es la entrada de la fuente de alimentación; T la tierra y S la salida regulada, en el caso de este proyecto, la salida está regulada a 5 volts, para mantener voltajes TTL. Este regulador de voltaje es fácil de encontrar en cualquier tienda de electrónica, como puede ser Steren u Omega. Este dispositivo tiene un costo por unidad de $5.. iv. Cámara. La. cámara. se. comumca. de. manera. serial. con. el. microprocesador, para fines del proyecto se programa para que realice tres funciones. Alta Resolución. Permite tener el doble de pixeles para dar seguimiento a cualquier detección del enemigo. Se envía el Comando HR 1 seguido de un enter. Rastreo de movimiento. Como su nombre lo indica recibe los parámetros RGB del color que se quiere rastrear y regresa un paquete con la información solicitada. Ejemplo: 11 TECNOLÓGtCO DE MONTERREY ...

(12) Enviamos TC 100 120 75 140 200 220 enter De respuesta obtenemos el paquete T con la información. Medianas RGB. Regresa el valor medio RGB de la imagen. Ejemplo: Enviamos GM enter Obtenemos de respuesta el paquete S con la información. La cámara es uno de los componentes más importantes y delicados de la plataforma, es por ello que es el componente más costoso. Cada una de las cámaras tiene un costo de 169 dólares y también pueden ser adquiridas en la tienda acroname.. El costo total de las dos cámaras ascendió a. $3,684.20. v. Disparadores y Receptores de disparo Consisten en una transmisión y recepción infrarroja, el envío se realiza a través de un led infrarrojo (IR 383) con el cátodo (-) conectado a tierra y el ánodo (+) conectado al microprocesador que envía los pulsos de disparo. El receptor es un fototransistor (PT331 C) en el que la base recibe la señal, el colector está alimentado con 6 V y el emisor se manda a la etapa de amplificación que consta de un arreglo de 2 transistores y un rectificador inversor de señal TTL para tener una mayor distancia recepción. Tanto disparadores como receptores pueden ser adquiridos en AG Electrónica.. El precio al público de los disparadores. como de los receptores es de $3.50. El número de receptores 12 TECNOLÓCICO DE MONTERREY ...

(13) por plataforma es de ocho y de disparadores es de cuatro. Por lo que tenemos un total de: $84.00. vi. Batería. La batería utilizada recargable, sellada, de acido-plomo, maneja 12 Volts de corriente directa, 4.0 Ah y hasta 1000 ciclos de carga/descarga, cuenta con sistema de proteccion para carga excesiva. Soporta hasta 300 grados Centigrados. Sus dimensiones son: 90 mm de largo, 70 mm de ancho, 101 mm de alto (Con terminales 106 mm) y peso de 1, 7 kilos. Las pilas anteriormente descritas se pueden encontrar muy fácilmente en las tiendas de electrónica, para este caso las compramos en Steren, donde éstas tienen un valor por unidad de $160, lo que produce un total de $320.. Además se. adquirió un cargador inteligente para las baterías que representó un costo de $140. vii. Motores DC. Los motores utilizados para mover el carro fueron motores de DC con reductor.. Estos motores tienen 14cm de largo y. cuenta con un poste de cada lado. Uno de los postes del motor tiene un reductor, lo que hace que gire a menos revoluciones que el otro poste. Esto es con el fin de que el carro no avance tan rápido. El costo de cada uno de estos motores es de $90, y como se necesitan 4 motores el total generado es de $360.. Los. motores por lo general se pueden conseguir en tiendas de electrónica.. ----. 13 TECNOLÓGtCO DE MONTERREY ...

(14) viii. Puente 'h' El puente 'h' (l298n) es un controlador para motores de corriente directa, que permite su funcionamiento con dos líneas de señales de control. Las entradas de control manejan voltajes normales TTL y tienen la opción de ser habilitados y deshabilitados según sea la conveniencia. Este dispositivo puede ser adquirido en tiendas de electrónica como AG Electrónica a un precio de $27 y se necesita sólo uno por plataforma ya que cada circuito integrado cuenta con dos instancias distintas de puente 'h', por lo que en total nos da $54.. b. Diagrama a Bloques. Etapa de Amplificación Adquisición de Imagen. Receptor de disparo. e. ~BEQ e=). I Identificador de obstáculos Figura 8.. ---. -. TECNOLÓGICO DE MONTERREY.. 14.

(15) i. Bloque de imagen Este bloque constará únicamente de la micro cámara digital la cual se encargará de llevar a cabo la adquisición de imagen en tiempo real. La conexión de la cámara se hará de manera directa al microcontrolador pues a pesar de ser una comunicación. serial,. ambos. dispositivos. mane3an. compatibilidad en sus voltajes de operación. La importancia de este bloque radica en que será el encargado de buscar y dar información necesaria para la identificación del enemigo.. ii. Bloque de identificación de Obstáculos.. El detectar y poder esquivar obstáculos es vital para el buen desempeño del robot, sin este bloque no podria recorrer el circuito de pelea de manera satisfactoria. Con el fin de cumplir con este propósito se utilizaron sensores ultrasónicos, los cuales se encargan de realizar un barrido de los alrededores del carro. Estos sensores se conectan, manipulan e interpretan directamente con la parte central del carro.. Las partes primordiales a revisar para evitar obstáculos son el frente y los costados. Para llevar esto a cabo de una manera exitosa, los sensores tienen movilidad, lo que les permite cubrir las zonas previamente mencionadas.. La. movilidad que se requiere que tengan los sensores es proporcionada por dos servomotores, uno para cada sensor. - - --. -. TECNOLÓCilCO DE MONTERREY~. 15.

(16) Los servomotores se encuentran en la parte frontal del robot y son la base sobre la cual se encuentran los sensores, cabe aclarar que no existe ningún tipo de comunicación entre los servomotores y los sensores; ya que al igual que estos últimos, los servomotores se conectan directamente con el CPU.. iii. Bloque de Transmisión y Recepción de disparo.. El clímax de una contienda ocurre cuando uno de los competidores es blanco de un ataque perpetuado por su rival, ya que finalmente este es la razón de ser de una batalla. Con base en lo anterior es lo que da a este bloque su importancia y trascendencia dentro de la pelea.. Cada uno de los robots. contará con cuatro puntos de disparo, todos ellos se encontrarán al frente del robot, ya que será por donde habrá localizado a su enemigo.. Estos disparadores estarán. conectados todos en paralelo para que operen bajo la misma señal y exista una mayor posibilidad de victoria.. Los receptores se encontrarán colocados en todos los lados del coche esto tendrá como fin darle al robot vulnerabilidad por cualquier lado que sea atacado. Cada uno de los lados tendrá dos receptores, dando como resultado final un total de ocho. Todos los puntos de recepción seguirán el mismo procedimiento para validar la señal recibida. receptores. son. fototransistores,. los. cuales. Los. responden. únicamente a señales de luz infrarroja; debido a que no se tiene la certeza de que la señal que se recibirá será del todo limpia, ésta pasará por un proceso de amplificación y corrección. Esto proceso se compondrá en un inicio por una -·-·16 TECNOLÓOCO. DE MONTERREY..

(17) etapa de amplificación del voltaje, la cual será llevada a cabo por un arreglo de 2 transistores.. Esta parte nos dará una. ganancia en voltaje, la cual servirá para mandar la señal a un rectificador inversor, este será el encargado de darle a la señal cuadrada voltajes TIL, necesarios para ser interpretados por el microcontrolador.. Finalmente cada una de las señales. receptoras será la entrada de una NOR de 8 entradas, así el micro validará la muerte sin importar de donde haya venido el disparo.. La distancia a manejar de los disparadores es de un máximo aproximado de 35 cm. Los cuales tendrán un rango de libertad de ± 15º con respecto al receptor. Así mismo a una distancia mínima de 1O cm., los disparadores tendrán la libertad de estar a una altura de 0.5cm sobre o por debajo de los receptores.. iv. Bloque de Movimiento. En busca de tener una mayor probabilidad de ganar, cada uno de los robots debe tener la posibilidad de desplazarse libremente por todo el "campo de batalla". En función de lograr esto de la mejor manera posible, los carros contarán con un bloque de movimiento que les dará la opción de moverse sin mayores complicaciones. Cada uno de los carros contará con dos motores, los cuales estarán acoplados de manera perfecta a las llantas, esto es muy importante debido a que si no se lleva a cabo un buen acoplamiento, el giro del motor no se verá reflejado correctamente en el giro de las llantas y podrá repercutir en viajar en direcciones no deseadas. 17 TECNOLÓGlCO. DE MONTERREY ...

(18) Los motores utilizados en este punto son motores de DC, los cuales tienen la opción de trabajar alimentados hasta con 12V.. Sin embargo para los fines requeridos estos. operarán con 9V, voltaje que a pesar de ser menor que el máximo permitido se encuentra muy por encima de los voltajes TTL manejados por el microcontrolador. Para poder acoplar los motores al CPU sin problemas se utilizan los Puentes 'H'; estos dispostivos se encargan de alimentar al motor. Otra función muy importante para los Puentes 'H' es que ellos reciben las señales de control de manera directa del microcontrolador y se encargan de mandar el voltaje al motor polarizado de la manera deseada. Podemos imaginar que los Puentes. 'H'. funcionan. como. interfaces. entre. el. microcontrolador y los motores, ya que además de separar los distintos voltajes reciben e interpretan las señales del CPU que harán girar al motor hacia un lado o hacia otro.. vi. Bloque de Alimentación Para que todos los bloques anteriores puedan funcionar, se necesita de una fuente de alimentación. Para alimentar todo el hardware el robot usa una batería recargable de l 2V que puede proporcionar una corriente de hasta 2000mAh.. Para lograr los voltajes menores buscados por. cada uno de los componentes se usan reguladores de voltaje conectados en paralelo para dividir la corriente y evitar perdida de energía por disipación de calor.. c. Conexiones de Hardware.. 18 ,. TECNOLÓG1CO. DE MONTERREY ...

(19) El sistema mínimo es un dispositivo fonnado por varios circuitos integrados como lo son el microprocesador, los reguladores, entre otros más, a continuación se hace una breve explicación.. Como podemos ver en la figura 9 y en el esquemático anexo, las conexiones que existen entre los circuitos lógicos como son las compuertas nand o los inversores schmitt trigger con el microprocesador hacen que el sistema funcione correctamente. Comenzamos el sistema alimentándolo a 12 volts de entrada gracias a la pila la cual nos entrega ese voltaje a 4 Ah, como la mayoría de los circuitos requieren voltaje TIL es necesario bajar el voltaje de entrada, 12 volts, a voltaje de 5 volts, esto se hace mediante los tres reguladores que se encuentran montados sobre la tarjeta, dichos dispositivos. tienen. 3. pmes,. en. uno. entra. el. voltaje. de. alimentación, el otro pm es de tierra y el último es el de salida, dando los 5 volts. Como se pueden dar cuenta se utilizan capacitores entre la entrada de 12 volts y tierra así como la salida de 5 volts a tierra, ésto se hace para que no exista ruido en el sistema. Como los reguladores bajan el voltaje de 12 volts a 5 volts disipando la energía en calor, los 7805 se calientan demasiado, es por eso que utilizamos tres dispositivos para que así la corriente se divida y no se sobrecaliente demasiado el regulador.. Después de haber analizado el sistema de entrada pasamos a las conexiones entre el microcontrolador y las compuertas lógicas. El robot va a disparar a su oponente mediante leds infrarrojos, para poder lograr esto lo único que se hace es conectar la salida del puerto a la parte positiva del led y la parte negativa conectándola a tierra, así se logra que la corriente pase por el led dando como 19 TECNOLÓGICO DE MONTERREY~.

(20) resultado un tren de disparos a su oponente, como el robot también recibe disparos, se tiene una configuración de leds, transistores y resistencias para la recepción. Como la señal que viaja del transmisor al receptor infrarrojo tiende a caer se tiene que levantar ese voltaje para que el microcontrolador lo pueda entender, ésto lo hacemos mediante el ensamblado de una configuración de transistores. El hecho de que la salida del emisor del transistor de. la. izquierda,. esté. conectado. a. la base. del. otro. transistor hace que la ganancia de corriente sea mucho más alta que para un único transistor -de hecho es el producto de las ganancias de corriente individuales de los dos transistores que forman el par- y la corriente que soporta en el emisor-colector sea mayor, ahora como tenemos una resistencia también conectada con tierra, hacemos que la corriente baje y cierta parte se vaya para la base del transistor dos y otra parte se vaya para la resistencia.. Un valor típico de ganancia de corriente puede ser de 1000. Lo que quiere decir que la corriente que pasa por el colector hacia el emisor, es unas mil veces mayor que la corriente que entra por la base, en el caso de que no exista resistencia a tierra en el emisor del primer transistor.. Los transistores se alimentan con voltaje TTL y el fotodiodo se alimenta con 6 volts, para conseguir este valor utilizamos un divisor de voltaje con los 12 volts.. En total son 4 disparadores y 8 receptores por lo que van a ser 8 configuraciones. antes. mencionadas,. todas. las. salidas. están. conectadas a un 74HC14 o inversor Schmitt trigger el cual nos da como resultado una salida TTL la cual va a poder ser entendida por el microprocesador,. pero. antes. de. TECNOLÓGICO. DE MONTERREY~. esto. para. ahorrar. puertos. del 20.

(21) microcontrolador, cada salida de los schmitt va a una compuerta nand de ocho entradas (74LS30) logrando utilizar una línea de puerto en lugar de ocho. El reloj del sistema es un cristal de 16 MHz que nos permite un desempeño a una mayor velocidad tanto para la ejecución del código como para la transmisión serial que se realiza a 34800 baudios.. Figura 9. 21. TECNOLÓG1CO DE MONTERREY ...

(22) 2. Software La parte de Software se encontrará implementada en su totalidad dentro del microcontrolador.. Este contará con un programa el cual fue desarrollado para. cumplir específicamente con las tareas que se le puedan presentar al robot dentro de un escenario de batalla. El archivo que puede interpretar el microcontrolador es un archivo hexadecimal (*.hex), el cual es tan sólo una traducción de un archivo en bajo nivel llamado ensamblador (* .asm). Para poder desarrollar estos dos archivos es necesario utilizar el paquete computacional Code Vision, en el cual se escribirá todo el código en lenguaje de alto nivel, en este caso C, y se migrará y ensamblará para tener los archivos necesarios para programar el microcontrolador.. La ventaja de programar en un lenguaje de alto nivel es que es mucho más intuitivo y fácil de interpretar ya que a diferencia de los lenguajes de bajo nivel tiene más parecido con el lenguaje humano. Por otro lado permite el uso de métodos y variables que dan al programador más herramientas para cumplir con los objetivos. Es por ello que el desarrollo de los programas para los robots se llevó a cabo en este ambiente.. i. Idea básica del Programa La idea básica del programa se menciona a continuación. 1. Inicialización de constantes y modo de ejecución. 2. Inicialización y reconocimiento de la cámara de video. 3. Interrupción vía Serial (USART) 4. Recepción de confirmación por parte de la cámara. 5. Envío de configuración y modo de operación. 6. Adquisición y reconocimiento de la imagen. 7. Interrupción vía Serial (USART) 8. Reconocimiento e interpretación de la imagen. 9. Toma de decisión con base en la imagen. a. Realizar Disparo b. Moverse 22 TECNOLÓGICO DE MONTERREY..

(23) 1O. Realizar banido ultrasónico. a. Detectar y esquivar Obstáculos.. 11. Tomar decisiones con base en el resultado del banido. a. Movimiento de Motores. 12. Aplicar lógica difusa en caso de ser necesario. 13. Detección de disparo por medio de Interrupción Externa. a. Validación del disparo b. Muerte.. ii. Descripción del Software por bloques.. e. a. Diagrama General ln'clo. ). !nlclal!za. Sigue rodf;md<, hasta emcornrar éMmlg<>. fntertupc!mies de. contaoor. CooUl:!ttta veloctdar(de rx y RX. lr.icializ.a <:ámara .. Activa inteirup,ciooes. MooltOfes de. tracldng ·. Ois.panul #tití .90. NO. I claliza ir\lerrvp;;ioneS, il'xtemas. Dotocdó de obst.ácutoo co l~. Da Vlfl}il{ls pQt 3. segundos. 1 Figura 10. 23 TECNOLÓOCO De MONTERREY.,.

(24) En una vista general (figura 1O), el programa pasa por el proceso. de. inicialización. de. puertos,. comunicación. serial,. interrupciones, reloj y cámara. Después se mantiene revisando en forma cíclica si hay obstáculos o si se encuentra al enemigo, cuando lo encuentra y nota que está a una distancia de disparo realiza el disparo, a la vez puede recibir disparos del enemigo, mismos que recibe por una interrupción externa, al detectarse muerto gira durante 3 segundos para que el observador note el hecho, después de este punto reinicia los valores y repite la secuencia mencionada.. b. Diagrama de la cámara Joício. l. Envio de seoueooia de inicios de la. cámara. ·mooo de. Envioo,e resolución. cn'<'iópara medias,. l:nvio de tracking. deRGB. SI. $1. NO Recepci6n de confirmación por. parte de la ~mara. R~epcloooo. R~ión de confumación. oonfwmación. 1. $1. +. Figura 11. En la parte de hardware se mencionaron las capacidades de la cámara utilizadas en el proyecto y los comandos que se deben enviar para su funcionamiento. La secuencia consiste primero en detectar 24 TECNOLÓGlCO DE MONTERREY...

(25) que la cámara tiene comunicación con el microprocesador, mientras no se tenga la comunicación se siguen enviando comandos de prueba a través del microprocesador hasta que la cámara responde en la manera indicada. El paso siguiente es el de enviar la resolución al nivel alto para tener una detección más fina de los colores ya que contamos con el doble de pixeles; después de un envío satisfactorio del comando se envían los límites RGB para la detección de los colores que se quieren seguir (amarillo o rojo) y se termina el proceso con el envío del comando que permite obtener las medidas de las medias RGB detectadas en la imagen, utilizadas para la lógica difusa.. c. Diagrama de tracking o monitoreo del color enemigo. • l. Girar izquierda. Recepciór. de dalOSde la. cár?i3ra por interrupción serial. Checar posición. en'Y. '"--··~,.,s,.,..,.,.,...,. .. -···"·. 1. 1. !. l. !. ~. Figura 12. 25 TECNOLÓCICO DE MONTERREY ...

(26) Se realiza la recepción serial del paquete T que se describe a continuación: T mx my xl yl x2 y2 pixeles confianza \r La cámara está colocada en forma horizontal para tener un mayor rango de visibilidad (356 en "y" contra 292 en "x"), de esta forma los valores del paquete T utilizados son: T - Identifica el paquete my - centro de masa en "y" que permite tomar decisiones sobre la posición del enemigo pixeles - Brinda el centro de masa de la imagen detectada, lo que permite tomar la decisión sobre la distancia a la que se realiza un disparo válido (menor a 30 cm).. d. Diagrama de Servos. Manda sefial dePWM. Inicia contador delos de m;iquír.a. El. lr~rernen!a en uno. Valor in ici!l1,. OCR1A•. el oodlo del PINM. OeófQfl)ei\10 i;. NO. u110 el ancho del. PWM. NO. OCR1B (Ancho del P'M'.1). ·'-''''""''''"'. •. !. ~-N01 '=:. 1. SI. Guarda valor. Figum 13. 26 ,,,. TECNOLÓGICO. De MONTERREY...

(27) Los servos son encargados de cambiar la posición de los sensores que detectan obstáculos y como se mencionó en la parte de hardware su posición se determina mediante la modulación de ancho de pulso o PWM. Se utiliza un contador que limita el tiempo en que se incrementa/disminuye el ancho de la señal, si el contador es mantenido constante los servos no cambian de posición, dentro del código lo que se hace es incrementar el ancho de pulso hasta 115 y después disminuirlo hasta 85, permitiendo así que los servos se muevan cíclicamente hacia el frente y a los lados.. e. Diagrama puente h. VSS•5V. Aimenta et puente H. VS• 12V. GNO. EnableA= t Enable B" t. • j. Puente 2: Camino hacia delan!e, 1ll(>l0f' actív~do. •. Puer.te 1; Camino 1--+o. hacia delante, trolClr BC"Jvado. ¡ ¡. NO. NO. ~. ¡. ¡. Puente 2: Camioo hacia attás, motor activado con Polaridad inver.ida. NO. NO. • s1-. !. ¡. Puente 1: Camno hacía atrás, motor activado oon. µolaridad Invertida ¡. NO. NO. ... • i. Poonte 2: Dersnci6n inmediaia de motor. .s,--. Puente 1: Detención Inmediata de molor. Figura 14. El movimiento de llantas se realiza mediante el control de un puente h que recibe una señal de habilitación y 2 de control, la señal 27 TECNOLÓCtCO OE MONTERREY.,.

(28) de habilitación debe estar en alto para que funcione el puente h, el primer bit en alto y el segundo en bajo indican un movimiento hacia delante. e invertidos. un movimiento. hacia atrás,. cualquier. combinación en la que los dos bits de control sean iguales provoca un paro total del motor. Para cada motor es necesario utilizar un puente h, por lo tanto para los 2 robots se utilizan en total 4 puentes h.. f. Receptores de disparo. Aumenta. tu.'ime<o de di paro$. Fí Figura 15.. La recepción de los disparos se realiza a través de una interrupción externa dentro de la cual se incrementa un contador cada vez que se recibe un pulso de entrada, el disparo consta de un tren de pulsos, por lo tanto, cuando el contador alcanza el valor de 50 se considera que el robot ha muerto.. 28 TECNOLÓCi1CO DE MONTERREY..

(29) g. Sensores de proximidad. Reinicia las constantes de tiempo. SI. Figura 16.. El funcionamiento de los sensores de proximidad se divide en dos etapas la primera está en la interrupción de 30 us donde se reinicia el contador y se aumentan los arreglos que guardan la distancia a la que está el obstáculo cada 30us que equivale a un cm de distancia. Cada 30 ms se envía la señal de habilitación a los sensores para que inicien el barrido de obstáculos.. Cambia flanco de .,.____·NO--ínterrupción ~-. •. l-á-1 --~e. cambia flanco de. la inlemlpción. Fin. )+---. Figura 17.. 29 TECNOLÓGICO DE MONTERREY ...

(30) Los sensores mandan su respuesta o eco a través de una interrupción externa, por lo tanto, la segunda parte de la lógica de los sensores consiste en detectar el flanco por el cual entra a la interrupción, si es por flanco de subida reinicia los arreglos de distancia ya que este flanco nos indica que se empezó el sensado, en forma inversa cuando entra por flanco de bajada indica que se terminó el sensado y por lo tanto se guarda la distancia a la que detectó el obstáculo más cercano; este valor de distancia es el que se utilizará para determinar cuando se detectó un obstáculo que pueda significar un peligro para la integridad del robot.. g. Detección de obstáculos.. Reversa y giro. S1. SI Gira Manta izquierda. r-~-·,.,-... ~.u.u,umm,.,,.,h. "'~.. ,----~---~-·-··'·'"'). * ·-{_Fin_)-·Figura 18.. Cuando el robot detecta que hay un obstáculo a una distancia menor al límite establecido de 45 cm gira a la derecha si detectó el obstáculo a la izquierda y viceversa. 30 TECNOLÓC1CO DE MONTERREY ...

(31) 111. RESOL TADOS La mejor forma de evaluar los resultados del proyecto es mediante la revisión del estado de cada uno de los objetivos propuestos y que se describen a continuación:. a. Hardware Motores que proporcionen tanto potencia como torque suficiente para mover todo el mecanismo. Después de realizar las pruebas hemos descubierto que el robot se mueve a una velocidad razonable para las funciones que debe desarrollar, no hay que olvidar que la velocidad de los robots va disminuyendo conforme la carga en las baterías disminuye, de esta forma concluimos que los motores utilizados son óptimos para las funciones a realizar.. Acoplamiento de las llantas a los motores El diseño requirió de la asistencia de un tornero para acoplar las llantas, el resultado no fue el óptimo ya que constantemente hay que apretar las llantas a los motores, sin embargo, con la ayuda de un pegamento se evita este problema.. Propuesta adecuada de los sensores que van a detectar los obstáculos en el espacio del robot. Los sensores funcionan a la perfección y se acoplan correctamente a nuestro diseño ya que no necesitamos que detecten los obstáculos a grandes distancias, el tiempo de respuesta a los obstáculos que nos brindan es óptimo ya que permite que el robot reaccione en el momento indicado para evitarlos.. Selección de los motores que moverán a los sensores (servos). Los servos permiten un desplazamiento correcto de los sensores y no generan ruido al circuito, en proyectos pasados hemos tenido que separar la alimentación del circuito principal de los motores por esta causa. El poder controlarlos mediante PWM nos ayuda a llevarlos a la posición indicada y a detenerlos en el momento deseado.. 31 TECNOLÓOCO. DE MONTERREY~.

(32) Selección de los disparadores y receptores. Los receptores y disparadores funcionan correctamente, sin embargo, la limitación en cuanto al presupuesto nos impidió elegir un modelo con mayor alcance, sin embargo, el modelo actual nos permite demostrar la aplicación funcional del disparo y recepción del mismo. Selección de la cámara para el seguimiento de color y procesamiento de imágenes. La cámara fue la mejor inversión del proyecto ya que después de investigar descubrimos que es uno de los modelos más avanzados en el campo de procesamiento de imágenes a bajo costo, además de que su programación no es tan complicada como en otros modelos. Nos permite seguir los colores contrastantes mismos con los que es posible detectar al enemigo. Integración de todos los elementos de Hardware mediante la creación de un sistema mínimo. La parte más importante dentro del hardware es la de lograr que todos los elementos interactúen entre sí para tomar una decisión o realizar una función específica, el lograr que cada elemento funcione por separado no es suficiente para un proyecto de ingeniería ya que los fabricantes garantizan el correcto funcionamiento, el verdadero valor agregado del proyecto se demuestra al lograr la unión de todos los componentes para un funcionamiento en conjunto, en nuestro caso se realizó esta interacción y correcto funcionamiento.. b. Software Toda la parte del software funciona conforme a los objetivos como se demostró en páginas anteriores en los diagramas de bloques de cada función, la integración de cada parte de la lógica del programa se realizó satisfactoriamente y es por esto que se puede mostrar un diagrama general de cada elemento interactuando con los demás y por lo tanto al unirlo con el hardware tenemos como resultado el correcto funcionamiento de los robots.. 32 . TECNOLÓCICO DE MONTERREY..

(33) Como resultado final tenemos un programa desarrollado en C que puede ser portable para implementarse con algún otro micro controlador.. Así mismo es. mucho más sencillo hacer cambios o anexar trabajos futuros.. c. Estudio de mercado y análisis financiero Antes de comenzar con más detalle la parte del análisis financiero es importante tener en mente que los robots se encuentran en fase de desarrollo e investigación, por lo que en general la inversión se hace mayor. El costo de cada uno de los robots es de $4,365.15 (cuatro mil trescientos sesenta y cinco pesos 15/100 m.n.). El costo de estos robots se atribuye en su totalidad a las piezas de hardware ya que el diseño, desarrollo del software y el armado del mismo fue realizado por nosotros y está libre de cargo. Al momento de realizar un modelo como prototipo o parte de un proceso de investigación y desarrollo, se tienen ciertos errores en los gastos ya sea por materiales no tan provechosos o que de alguna manera pudieran ahorrarse. Todo esto es parte de un proceso de investigación y elaboración por parte de los desarrolladores. A pesar de que el costo pueda sonar un poco excesivo, no lo es del todo si consideramos que tiene tecnología de punta en las cámaras, las cuales son el principal gasto. Si se deseara producir los robots en serie, el costo se bajaría de manera imortante, ya que no será necesario utilizar materiales que sólo sirven para el desarrollo, si no más bien utilizar materiales más baratos y adecuados para su venta.. Un aspecto muy. importante a considerar, es la circuitería del mismo ya que podría ser incluida en su mayoría en un circuito impreso, lo que reduciría notablemente el espacio. Al reducir el espacio de los circuitos se reducirá el volumen de la carcasa, por consiguiente, el peso y la pila podrá reducirse en tamaño y peso. Como nos podemos dar cuenta el proyecto tiene la posibilidad de reducir mucho sus costos, siendo posible una reducción de hasta un 35% del precio original. 33 TECNOLÓGICO DE MONTERREY,,.

(34) De esta manera logramos que tenga un precio mucho más accesible. Sin embargo las intenciones inmediatas no es sacarlo al mercado, si no, pretendemos trabajar con el área de desarrollo.. Un posible mercado lo encontramos en las universidades o. empresas que se encargan de investigación, ya que los robots y sus encuentros, podrán simular situaciones bélicas en las que dichos investigadores consideren posibilidades de guerra sin estar inmersos en ella.. IV. CONCLUSIONES Al trabajar con un proyecto tan extenso como lo es este, tuvimos la necesidad de poner en práctica todos aquellos conocimientos que adquirimos estos años en el transcurso de la carrera.. La integración de todo lo aprendido tanto teórico como. práctico tuvo su clímax en el desarrollo de "Arte de Guerra". Podemos decir que nos sentimos satisfechos por haber logrado la integración de tan diversas teorías, conocimientos que fuimos adquiriendo de manera paulatina, dando tiempo de maduración a nuestra capacidad de aprendizaje que en esta ocasión se puso a prueba durante un largo periodo de tiempo.. Un aspecto muy importante es la. organización tanto de tiempos como de trabajo, para un proyecto de la magnitud de este, fue trascendental saber llevar esto a cabo. A pesar de ser capaces para realizar la mayoría de las diversas tareas es importante tener a un encargado de monitorear un bloque específico así se respetarán tanto los tiempos como el ritmo de trabajo. Es importantísimo para nosotros aclarar que "Arte de Guerra" a pesar del nombre no tiene fines bélicos bajo ninguna circunstancia, ya que nosotros nos oponemos rotundamente a la guerra, pero no al desarrollo tecnológico que nace con desarrollo militar. "Arte de Guerra" es un proyecto que busca evitar confrontaciones de manera real, por lo que nos sentimos orgullosos de haber alcanzado casi en su totalidad los objetivos propuestos. En lo que respecta a la parte de los objetivos que propusimos en un inicio, al comenzar este proyecto, podemos estar satisfechos que se cumplieron en su mayoría ya. 34 TECNOLÓCitCO DE MONTERREY ...

(35) que de alguna u otra manera logramos cubrir las necesidades que se fueron presentando a lo largo de todo este desarrollo. Con lo que respecta a la parte de Hardware, todos los objetivos se cumplieron de sobremanera. Esto lo corroboramos fácilmente pues se hizo una adecuada propuesta de Hardware por bloques, que además debían interactuar entre ellos de alguna u otra manera. Parte importante del desarrollo de hardware es saberlo trabajar a la par por bloques que simplifiquen la idea total. Así mismo es de suma importancia que cada uno de los bloques haya funcionado bien para posteriormente unirlo al sistema mínimo. La culminación del buen desarrollo de Hardware concluyó al unir todos los bloques en un mismo sistema donde se integraron todas las partes y gracias a esto y al buen funcionamiento del mismo se pudo concluir que el trabajo fue realizado de manera adecuada y correcta, pues se acertó que las actividades propuestas fueron cubiertas alcanzando el grado de funcionalidad deseado. Por otro lado manejamos los aspectos de los objetivos enfocados más hacia el software o la parte lógica. Para este caso los alcances no fueron tan bastos como en el rubro anterior, sin embargo se concluyó adecuadamente con los puntos más importantes propuestos en un inicio. El hecho de desarrollar un software que controlara la plataforma de manera adecuada hace que los objetivos básicos de la parte lógica se cubran. Todas las señales de control para todo el circuito funcionan de manera adecuada aunque con ciertas limitaciones. Una de las ciertas limitaciones que se tiene en este proyecto es que todas las decisiones que se presentan en el programa son decisiones de Sí o No. Visto de otra forma las decisiones que se pueden tomar son de encendido y apagado. A pesar de cubrir todos los aspectos considerados como importantes con una lógica sencilla en algún momento se contempló como una actividad extra plantear una lógica que diera más versatilidad y robustez al diseño. A pesar de no incluir en el programa ningún tipo de lógica más compleja que la antes mencionada, se realizó una investigación sobre Lógica Difusa y de que manera se podría implementar para nuestro diseño. Para este punto extra no tuvimos el alcance desado debido a la falta de tiempo. Sin embargo el hecho de comenzar a investigar un. 35 TECNOLÓGtCO DE MONTERREY ...

(36) punto como el anterior, puede sentar las bases para que se siga con el proyecto en un futuro, con los objetivos de mejorar las decisiones que se toman en todo el programa. A pesar de que no se cubrieron en tu totalidad los objetivos extra, éstos sentan la base para dar pie a que se siga con la investigación y perfeccionamiento de las plataformas.. Perspectivas y trabajo a futuro. i.. Para nosotros, la fase de desarrollo ha concluido, sin embargo, esto no quiere decir que "Arte de Guerra" tenga por qué quedarse estático en el punto donde nosotros hemos de dejarlo. Gracias a su gran versatilidad tiene la opción de ser retomado en un futuro y seguir por el mismo camino o incluso llegar a ser usado para otras aplicaciones, lo cual dependerá enteramente de los futuros desarrolladores. Como se llegó a mencionar anteriormente, una de las bases más importantes que se puede segur como un trabajo futuro es manejar todo un software de lógica difusa. Ya se ha manejado que la lógica difusa puede ser utilizada para detección de color, comprobación de si es un enemigo o no y casi cualquiera de las actividades que realice la plataforma.. Así mismo otra opción de la lógica difusa es que tiene también. aplicación en el control de los motores, ya que se puede buscar que estos manejen distintas velocidades dependiendo de la situación en la cual se encuentre en un momento determinado. El hecho de que en este momento se mencione la lógica difusa como principal camino de desarrollo no quiere decir que éste sea el único, si no que tan sólo es una sugerencia de nuestra parte.. Finalmente como se mencionó en varias oaciones, la. versatilidad de la plataforma permite que el camino que siga el proyecto no es único, y más bien dependerá de las necesidades que se planteen en un futuro.. ii.. Comentarios Ante una sociedad tan cambiante como lo es en la que vivimos hoy en día, el desarrollo de nuevas ideas, siempre será una vacante para quien quiera ocuparla. Para 36 TECNOLÓGICO DE MONTERREY~.

(37) nosotros conjuntar diversas áreas de conocimiento en ingeniería Fue el área a la cual nosotros pretendimos quitar la bacante, pero que sabemos siempre estará ahí para todos aquellos que quieran tener una oportunidad en ella. Sólo queda agregar que nosotros como desarrolladores de este proyecto nos sentimos realmente satisfechos por la gran calidad de trabajo que logramos a lo largo de este tiempo. Los resultados que se obtuvieron son fruto de muchas horas de trabajo y dedicación, que además repercuten en nuestra alegría ahora que finalizamos esta etapa de nuestras vidas, lo hacemos con un excelente proyecto.. V. REFERENCIAS i. u. m. 1v. v.. vi. vii.. http://www.cbsnews.com/stories/2003/0 l/l 3/tech/main536254.shtml http://www.engineeringtalk.com/news/vyd/vyd 108.html http://www.fanuc.co.jp/en/product/cnc/l 5i l 50i/hrv/hrv.html http://www.acroname.com/robotics/parts/R27 l-SRF05.html http://www.robot-electronics.eo.uk/htm/srfü4tech.htm http://www.creaturoides.com/anterior/srvesp.htm http://www.unicrom.com/Art historiaReguladoresLineales.asp. VI. ANEXOS a. En el cd se encuentra el póster con la descripción del proyecto, éste documento, todos los documentos o data sheets relacionados con el proyecto, video del mismo funcionando y código fuente del mismo.. 37 TECNOLÓCilCO. DE MONTERREY...

(38) b. Esquemático. ~. 38 TECNOLÓGICO. ~ - DE MONTERREY..

(39)

(40) /********************************************* This program was produced by the CodeWizardAVR VI .23.8a Professional Automatic Program Generator © Copyright 1998-2003 HP InfoTech s.r.l. http://www.hpinfotech.ro e-mail:office@hpinfotech.ro Project: Version: Date : 28/03/2006 Author : Rodrigo Eddy, Yamil Ramos, Pablo Ayala Company: Comments:. Chip type : ATmega32 Program type : Application Clock frequency : 16.000000 MHz Memory model : Small Externa} SRAM size : O Data Stack size : 512. *********************************************/ #include <mega32.h> #include <delay.h> #include <stdio.h> char info[SO]; void valida(); void tracking(); bit dp=O,lectura=O, cam=O,ack,sensorl=O,sensor2=0,servoA,servoB,bdisparo,bservo=O,DERECHA,IZQUIE RDA; unsigned int valorsensor[2],valorsensort[2],habilitasensor=O,contadorA=O,contadorB=O,car=O, golpedelamuerte; unsigned int hit=O; bit enemigo=O, bMUERTO=O; #define sensora PORTC.O //habilita sensor izq #define sensorb PORTC. l //habilita sensor derecha // INTERRUPCION EXTERNA 1 PARA EL SENSOR DERECHO interrupt [EXT_INTI] void ext_intl_isr(void){ if (sensor 1==O){ 40 TECNOLÓG1CO DE MONTERREY..

(41) MCUCR-=OblOO;// cambia entrada a interrupcion por flanco de bajada valorsensort[O]=O; // inicia el conteo de la distancia que detecta el sensor sensorl =l; } else if(sensorl=l){ MCUCR+=OblOO; // cambia entrada a interrupcion por flanco de subida sensorl=O; valorsensor[O]=valorsensort[O]; // guarda el valor de la distancia detectada por el sensor } }. // INTERRUPCION EXTERNA OPARA EL SENSOR IZQUIERDO, realiza las mismas funciones que la interrupcion anterior interrupt [EXT_INTO] void ext_intO_isr(void){ if (sensor2==0){ MCUCR-=l; valorsensort[ 1]=O; sensor2=1; } else if(sensor2=1){ MCUCR+=l; sensor2=0; valorsensor[ 1]=valorsensort[ 1]; } }. /*******************************************. *. FIN SENSORES. *. *******************************************/. #define RXB8 1 #define TXB8 O #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define limitel 45 //45 limite deteccion de pared #define FRAMING_ERROR (1 <<FE) #define PARITY_ERROR (l<<UPE) #define DATA_OVERRUN (l<<OVR) 41 TECNOLÓGICO DE MONTERREY ...

(42) #define DATA_REGISTER_EMPTY (l<<UDRE) #define RX_COMPLETE (1 <<RXC) #define CAMARA PORTA.6 // Led que se enciende cuando el micro logra comunicacion e inicializacion de la camara #define DISPARO PORTD.6 // salida a los leds infrarrojos de disparo #define MUERTO PORTA.7 // led que indica que el robot ha muerto #define phizqe PORTA.O// salida para el puente h #define phizqc PORTA.2 #define phizqd PORTA.3 #define phdere PORTA.1 #define phderc PORTA.4 #define phderd PORTA.5. // Externa} Interrupt 2 service routine interrupt [EXT_INT2] void ext_int2_isr(void). //recibe el disparo. {. // Place your code here //delay ms(50); // if (PORTB.2==1){ golpedelamuerte++;// incrementa cada vez que recibe un disparo if(golpedelamuerte>5) { MUERTO=!; bMUERTO=l; } else{ MUERTO=O; bMUERTO=O; } // } }. // USART Receiver buffer #define RX- BUFFER- SIZE 8 char rx_buffer[RX_BUFFER_SIZE]; unsigned char rx _wr_index,rx_rd_index,rx_counter; // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; // USART Receiver interrupt service routine #pragma savereginterrupt [USART_RXC] void uart_rx_isr(void) { char status,data; #asm push r26 42 TECNOLÓGICO. oe MONTERREY..

(43) push r27 push r30 push r31 in r26,sreg push r26 #endasm status=UCSRA; data=UDR; if((status & (FRAMING_ERROR I PARITY_ERROR I DATA_OVERRUN))==O) { rx- buffer[rx- wr- index]=data; info[car]=data; // guarda en info la informacion recibida por el serial if(data==13){ //revisa si se recibio un retomo de carro que indica el fin de la instruccion car=O; // regresa el valor del apuntador de info lectura= 1;//indica que ya leyo un comando completo valida(); //descifra la informacion recibida } else{ car++; } if(++rx_wr_index = RX_BUFFER_SIZE) rx_wr_index=O; if(++rx_counter = RX_BUFFER_SIZE) { rx_counter=O; rx_buffer_overflow= 1; }; }; #asm pop r26 out sreg,r26 pop r31 pop r30 pop r27 pop r26 #endasm } #pragma savereg+ #ifndef - DEBUG- TERMINAL 10 // Get a character from the USART Receiver buffer #define - ALTERNATE- GETCHAR#pragma used+ char getchar(void) // recibe comando por el puerto serial {. 43 TECNOLÓGICO DE MONTERREY..

(44) char data; while (rx counter==O); data=rx_buffer[ rx_rd_index ]; if (++rx_rd_index = RX_BUFFER_SIZE) rx_rd_index=O; #asm("cli") --rx_counter; #asm("sei") retum data; } #pragma used#endif // USART Transmitter buffer #define TX_BUFFER_SIZE 8 // envia comando por el puerto serial char tx- buffer[TX- BUFFER- SIZE]; unsigned char tx_wr_index,tx_rd_index,tx_counter; // USART Transmitter interrupt service routine #pragma savereginterrupt [USART_TXC] void uart_tx_isr(void) { #asm · push r26 pushr27 push r30 push r31 in r26,sreg push r26 #endasm if (tx_counter) {. --tx_counter; UDR=tx_buffer[ tx_rd_index]; if (++tx_rd_index = TX_BUFFER_SIZE) tx_rd_index=O; }; #asm pop r26 out sreg,r26 pop r31 pop r30 pop r27 pop r26 #endasm }. #pragma savereg+. 44 TECNOLÓC1CO . DE MONTERREY...

(45) #ifndef - DEBUG- TERMINAL 10 // Write a character to the USART Transmitter buffer #define - ALTERNATE- PUTCHAR#pragma used+ void putchar( char c) {. while (tx_counter == TX_BUFFER_SIZE); #asm("cli") if(tx_counter 11 ((UCSRA & DATA_REGISTER_EMPTY)==O)) {. tx_buffer[ tx_wr_index ]=c; if(++tx_wr_index = TX_BUFFER_SIZE) tx_wr_index=O; ++tx_counter; } else UDR=c; #asm("sei") } #pragma used#endif // Standard Input/Output functions int contador-O; // INTERRUPCION DE TIMER CADA 30us interrupt [TIMO_OVF] void timerO_ovf_isr(void) { TCNTO=OxCS; if((habilitasensor++)==966){ // cada 30 ms envía un trigger al sensor para que empiece la medicion habilitasensor=O; sensora=l; sensorb=l; }. else { sensora=O; sensorb=O; } valorsensort[O]++; //incrementa 1 cm la distancia detectada cada 30 us valorsensort[ 1]++; }. void valida() { while(lectura!=l); // espera a que se reciba el comando completo lectura=O; if(info[O]=':'){ //senal para saber que recibio correctamente el comando enviado dp=l; }. else if(info[O]='C'&&info[l]=='M'&&info[2]=='U'){ //letras que indican que se inicio la comu -. 45 TECNOLÓGICO DE MONTERREY...

(46) //nicacion con la camara cam= 1; I/bit que indica que se detecto la camara } else if(info[O]='T'){ tracking(); // se trata de un paquete T y se llama a la funcion tracking }. } void tracking() { int celda=O; // variable para recorrer el arreglo info int unidad=O;// recorre cada uno de los 8 elementos del arreglo T (tracking) int valor=O; // es el valor numerico de cada uno de los elementos int conta=O;// contador de los espacios en el paquete T while(conta<8) { if(info[ celda]=' 'llinfo[ celda]=32){ conta++; if(conta==211conta=7){ unidad=O; celda++; while (info[celda+unidad]!=32llinfo[celda+unidad]!=' '){//recorre cada valor por separado hasta un espacio o CR unidad++;// para saber cuantos digitos tiene el numero } if(unidad=l){//se convierten los caracteres a un int de Oa 255 valor= info[celda]-48; }. else if(unidad==2){ valor= (info[ celda]-48)* 1O+info[ celda+ 1]-48; } else if(unidad==3) { valor = (info[ celda]-48)* 1OO+(info[ celda+ 1]48)* 1O+info[ celda+2]-48; } if(conta==2){ //posicionen la que se detecto al enemigo if(valor<=? 5&&valor> 1) { // se detecto el enemigo a la derecha DERECHA=O; IZQUIERDA=l; } else if(valor>=200){ // detecto enemigo a la izquierda DERECHA=l; IZQUIERDA=O;. } ---. 46. TECNOLÓCICO DE MONTERREY..

(47) else{ // detecto enemigo a la derecha DERECHA=!; IZQUIERDA=l; } } if(conta==7) {// valor de la masa detectada if(valor> 135){// el enemigo esta a una distancia de disparo bdisparo= 1;//se activa el disparo if(DISPARO=l){ DISPARO=O;. } else if(DISPARO=O){ DISPARO=!; delay us(IOO); } } else{ bdisparo=O;. }. } } else{ celda++;. } } else{ celda++;// continua recorriendo el arreglo. } } } // Declare your global variables here. void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // FuncO=Out Func 1=Out Func2=0ut Func3=0ut Func4=0ut Func5=0ut Func6=0ut Func7=0ut // StateO=O Statel=O State2=0 State3=0 State4=0 State5=0 State6=0 State7=0 PORTA=OxOO;. .. 47 TECNOLÓGtCO DE MONTERREY..

(48) DDRA=OxFF; // Port B initialization // FuncO=In Funcl =In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // StateO=T Statel=T State2=T State3=T State4=T State5=T State6=T State7=T PORTB=OxOO; DDRB=OxOO; // Port C initialization // FuncO=In Funcl =In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // StateO=T Statel=T State2=T State3=T State4=T State5=T State6=T State7=T PORTC=OxOO; DDRC=Ox03; // Port D initialization // FuncO=In Funcl=In Func2=In Func3=In Func4=In Func5=In Func6=In Func7=In // StateO=T Statel =T State2=T State3=T State4=T State5=T State6=T State7=T PORTD=OxOO; DDRD=Ox70; // Timer/Counter Oinitialization // Clock source: System Clock // Clock value: Timer OStopped // Mode: Normal top=FFh // OCO output: Disconnected TCCRO=Ox02;//30 us TCNTO=OxC5; OCRO=OxOO; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC 1A output: Discon. // OCIB output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge TCCRlA=OxA2; // PWM TCCR1B=Ox03; TCNTIH=OxOO; TCNTl L=OxOO; OCRIAH=OxOO; OCRIAL=Ox55; OCRIBH=OxOO; OCR1BL=Ox55; --. TECNOLÓGICO DE MONTERREY~. 48.

(49) // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=OxOO; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // Externa} Interrupt(s) initialization // INTO: On // INTO Mode: Falling Edge // INTl: Off // INT2: Off GICRl=OxEO; MCUCR=Ox05;//0F MCUCSR=Ox40; GIFR=OxEO; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=OxOl; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 38400 UCSRA=OxOO; UCSRB=OxD8; //D8 UCSRC=Ox86; UBRRH=OxOO; UBRRL=Ox 19;// 19 // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off. ACSR=Ox80; SFIOR=OxOO; // Global enable interrupts -----. -. TECNOLÓGICO DE MONTERREY-. 49.

(50) #asm("sei") while(cam!=l){ // mientras no haya con la comunicacion con la camara se sigue intentando putchar('g'); putchar('v'); putchar('\r'); delay_ms(l 00); } //envia alta resolucion poniendo un 1 en el registro dp=O; while(!dp) { putchar('H'); putchar('R'); putchar(' '); putchar(' l '); putchar('\r'); delay_ms(l 00); }. //inicializar tracking con TC y RGB min y max dp=O; while(!dp){ //amarillo putchar('T'); putchar('C'); putchar(' '); putchar('9'); //114 240 16 48 43 78 putchar('5'); // putchar('4'); putchar(' '); putchar('l '); putchar('7'); putchar('O'); putchar(' '); putchar('l '); putchar('2'); putchar('O'); putchar(' '); putchar('l '); putchar('7'); putchar('6 '); putchar(' '); putchar('l '); putchar('5'); // putchar('l '); --. TECNOL.ÓOCO DE MONTERREY.,. 50.

(51) putchar(' '); // putchar('2'); putchar('2 '); putchar('5'); putchar(13); dela y_ms( 100); //rojo /* putchar('T'); putchar('C'); putchar(' '); putchar('l '); putchar('2'); putchar('5'); putchar(' '); putchar(' l '); putchar('9'); putchar('5'); putchar(' '); putchar('l '); putchar('5'); putchar(' '); putchar('4 '); putchar('5'); putchar(' '); putchar(' 1'); putchar('l '); putchar(' '); putchar('2'); putchar(' 1'); putchar(13); delay_ms(lOO); */ } CAMARA=l; //termina la inicializacion de la camara bMUERTO=O; MUERTO=O; golpedelamuerte=O;. while (1){ if(bMUERTO=O){ if( contador++==550) { if(bservo==O){ //incrementa el ancho del PWM OCR 1B=OCRI A; if((OCRIA++)=Oxl 15)bservo=l; 51 TECNOLÓGICO DE MONTERREY ...

(52) } if(bservo==l){ //decrementa el ancho del PWM OCR 1B=OCRI A; if( (OCR 1A--)=Ox85)bservo=O;. } contador-O; }. //Deteccion de obstaculos if(valorsensor[ O]<limite 1&&valorsensor[ 1]<limite 1){ //obstaculo detectado en sensor izquierdo contador= 100;// para que no sigan avanzando los servos phizqe= 1;//secuencia de movimiento hacia atras y despues a la izquierda phdere=l; phizqc=O; phizqd=l; phderc=O; phderd=l; delay_ms(SOO); phizqe=l; phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l; delay_ms(SOO); }. else if(valorsensor[O]<limitel){ //obstaculo detectado en sensor izquierdo contador=IOO;// para que no sigan avanzando los servos phizqe=l; // se mueve a la derecha phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l; }. else if(valorsensor[l]<limitel){//obstaculo detectado en sensor derecho contador= 100;// para que no sigan avanzando los servos phizqe=l;//se mueve a la izquierda phdere=l; phizqc=O; phizqd=l; 52 TECNOLÓOCO DE MONTERREY ...

(53) phderc=l; phderd=O; } else{. if(bdisparo==O) { phizqe= 1;//sigue avanzando phdere=l; phizqc=l; phizqd=O; phderc=l; phderd=O; } }. //deteccion de enemigo if(DERECHA&&!IZQUIERDA){//DETECTO AL ENEMIGO A LA IZQ // contador=lOO; //detiene los servos y gira a la izquierda phizqe=l; phdere=l; phizqc=O; phizqd=l; phderc=l; phderd=O;. //. } else if(!DERECHA&&IZQUIERDA){//DETECTO AL ENEMIGO A LA DER contador= 100;// detiene los servos y gira a la derecha phizqe=l; phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l; } else{ if(bdisparo==O) { phizqe=l ;//sigue avanzando phdere=l; phizqc=l; phizqd=O; phderc=l; phderd=O; } }. if(bdisparo==l){//detener al robot. 53 TECNOLÓCtCO. DE MONTERREY..

(54) contador= 100; //para que no sigan avanzando los servos phizqe=l; phdere=l; phizqc=l; phizqd=l; phderc=l; phderd=I; } } else{. phizqe=l;//gira circulos phdere=l; phizqc=l; phizqd=O; phderc=O; phderd=l; delay_ms(8000); bMUERTO=O; MUERTO=O; golpedelamuerte=O;. } }; }. 54 ,. TECNOLÓGICO DE MONTERREY..

(55)

Figure

Actualización...

Referencias

Actualización...