<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>0123-3033</journal-id>
<journal-title><![CDATA[Ingeniería y competitividad]]></journal-title>
<abbrev-journal-title><![CDATA[Ing. compet.]]></abbrev-journal-title>
<issn>0123-3033</issn>
<publisher>
<publisher-name><![CDATA[Facultad de Ingeniería, Universidad del Valle]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S0123-30332012000200002</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Diseño e implementación de un sistema en un solo chip para la navegación y reconocimiento de señales de tránsito en un sistema robótico móvil]]></article-title>
<article-title xml:lang="en"><![CDATA[Design and implementation of a system on chip for navigating and recognizing transit signals on a mobile robotic system]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Giraldo]]></surname>
<given-names><![CDATA[Juan J.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Estrada]]></surname>
<given-names><![CDATA[Eliud]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Pineda]]></surname>
<given-names><![CDATA[Diego F.]]></given-names>
</name>
<xref ref-type="aff" rid="A03"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[López]]></surname>
<given-names><![CDATA[Alexander]]></given-names>
</name>
<xref ref-type="aff" rid="A04"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad del Quindío Programa de Ingeniería Electrónica Grupo de Investigación GDSPROC]]></institution>
<addr-line><![CDATA[Armenia ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad del Quindío Programa de Ingeniería Electrónica Grupo de Investigación GDSPROC]]></institution>
<addr-line><![CDATA[Armenia ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A03">
<institution><![CDATA[,Universidad del Quindío Programa de Ingeniería Electrónica Grupo de Investigación GDSPROC]]></institution>
<addr-line><![CDATA[Armenia ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A04">
<institution><![CDATA[,Universidad del Quindío Programa de Ingeniería Electrónica Grupo de Investigación GDSPROC]]></institution>
<addr-line><![CDATA[Armenia ]]></addr-line>
<country>Colombia</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2012</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2012</year>
</pub-date>
<volume>14</volume>
<numero>2</numero>
<fpage>9</fpage>
<lpage>23</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S0123-30332012000200002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S0123-30332012000200002&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S0123-30332012000200002&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Dado que los accidentes de tránsito son una de las causales más relevantes de muertes a nivel mundial, este artículo pretende sustentar el diseño de un sistema en un solo chip (SoC), que tiene la capacidad de reconocer algunas señales de tránsito, obstáculos y las líneas blancas que delimitan una carretera en un escenario controlado, proporcionando una perspectiva a futuro para la implementación de pilotos automáticos en automóviles reales que ayuden a disminuir los índices de accidentalidad. El SoC opera sobre un FPGA (Field Programmable Gate Array) con el propósito que los algoritmos de alta velocidad de procesamiento sean implementados en hardware, y los algoritmos de baja velocidad sean implementados en software. Por lo tanto se desarrollaron diversos módulos hardware para la captura de video, pre-procesamiento de imágenes y control del balance de blancos para la captura de video. También se diseñaron algoritmos en software, tales como navegación, visión artificial estereoscópica y el reconocimiento inteligente de las señales de tránsito, conformando un conjunto de procesos que son administrados por un sistema operativo en tiempo real (RTOS). Los resultados del SoC se obtuvieron a partir de simulaciones de una plataforma robótica navegando en una carretera controlada y diseñada a pequeña escala]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[Due to the fact that the traffic accidents are one of the most relevant causes of deaths in the world, this article aims to expose the design of a System on a Chip (SoC) that has the capacity to recognize some transit signals, obstacles and white lines that delimit a road of a controlled scenery, giving a future prospect in order to implement automatic pilots in real automobiles for helping reduce accident rates. The SoC operates on an FPGA (Field Programmable Gate Array), so that the high speed processing algorithms are implemented in hardware and the low speed processing algorithms are implemented in software. Therefore different hardware modules were developed for video capturing, pre-processing images and controlling white balance in video capture. Also, software algorithms were designed, such as navigation, stereoscopy artificial vision and the intelligent recognition of the transit signals, shaping a set of processes administrated by a Real Time Operative System (RTOS). The SoC >results were obtained through simulations in a robotic platform navigating on a road modeled on a small scale]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[FPGA]]></kwd>
<kwd lng="es"><![CDATA[Procesamiento de imágenes]]></kwd>
<kwd lng="es"><![CDATA[Redes neuronales artificiales]]></kwd>
<kwd lng="es"><![CDATA[RTOS]]></kwd>
<kwd lng="es"><![CDATA[SoC]]></kwd>
<kwd lng="es"><![CDATA[Visión estereoscópica]]></kwd>
<kwd lng="en"><![CDATA[Artificial neural networks]]></kwd>
<kwd lng="en"><![CDATA[FPGA]]></kwd>
<kwd lng="en"><![CDATA[Image processing]]></kwd>
<kwd lng="en"><![CDATA[RTOS]]></kwd>
<kwd lng="en"><![CDATA[SoC]]></kwd>
<kwd lng="en"><![CDATA[Stereoscopic vision]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[   <font face="Verdana, Geneva, sans-serif" size="2">       <p align="center"><font size="4"><B>Dise&ntilde;o e implementaci&oacute;n de un sistema en un solo chip para la navegaci&oacute;n y reconocimiento de se&ntilde;ales de tr&aacute;nsito en un sistema rob&oacute;tico m&oacute;vil </b></font></p>      <p align="center"><font size="3"><B>Design and implementation of a system on chip for navigating and recognizing transit signals on a mobile robotic system</B></font></p>      <p><i>Juan J. Giraldo</i>    <br> Universidad del Quind&iacute;o, Programa de Ingenier&iacute;a Electr&oacute;nica, Grupo de Investigaci&oacute;n GDSPROC. Armenia, Quindio.    <br> E-mail: <a href="parrado@uniquindio.edu.co">parrado@uniquindio.edu.co</a></p>      <p><i>Eliud Estrada</i>    <br> Universidad del Quind&iacute;o, Programa de Ingenier&iacute;a Electr&oacute;nica, Grupo de Investigaci&oacute;n GDSPROC. Armenia, Quindio.</p>     <p>  E-mail: <a href="jjgg1987@hotmail.com">jjgg1987@hotmail.com</a></p>      <p><i>Diego F. Pineda</i>    ]]></body>
<body><![CDATA[<br> Universidad del Quind&iacute;o, Programa de Ingenier&iacute;a Electr&oacute;nica, Grupo de Investigaci&oacute;n GDSPROC. Armenia, Quindio.    <br> E-mail: <a href="elestrada44@hotmail.com">elestrada44@hotmail.com</a></p>      <p><i>Alexander L&oacute;pez</i>    <br> Universidad del Quind&iacute;o, Programa de Ingenier&iacute;a Electr&oacute;nica, Grupo de Investigaci&oacute;n GDSPROC. Armenia, Quindio.    <br> E-mail: <a href="picadife1@hotmail.com">elestrada44@hotmail.com</a></p>      <p><b>Eje Tem&aacute;tico:</b> Ingenier&iacute;a el&eacute;ctrica y electr&oacute;nica / Electrical and electronics engineering    <br> Recibido: Diciembre 9 de 2010    <br> Aceptado: Noviembre 19 de 2012</p>  <hr>      <p><font size="3"><b>Resumen</b></font></p>      <p>Dado que los accidentes de tr&aacute;nsito son una de las causales m&aacute;s relevantes de muertes a nivel mundial, este art&iacute;culo pretende sustentar el dise&ntilde;o de un sistema en un solo chip (SoC), que tiene la capacidad de reconocer algunas se&ntilde;ales de tr&aacute;nsito, obst&aacute;culos y las l&iacute;neas blancas que delimitan una carretera en un escenario controlado, proporcionando una perspectiva a futuro para la implementaci&oacute;n de pilotos autom&aacute;ticos en autom&oacute;viles reales que ayuden a disminuir los &iacute;ndices de accidentalidad. El SoC opera sobre un FPGA (<I>Field Programmable Gate Array</I>) con el prop&oacute;sito que los algoritmos de alta velocidad de procesamiento sean implementados en hardware, y los algoritmos de baja velocidad sean implementados en software. Por lo tanto se desarrollaron diversos m&oacute;dulos hardware para la captura de video, pre-procesamiento de im&aacute;genes y control del balance de blancos para la captura de video. Tambi&eacute;n se dise&ntilde;aron algoritmos en software, tales como navegaci&oacute;n, visi&oacute;n artificial estereosc&oacute;pica y el reconocimiento inteligente de las se&ntilde;ales de tr&aacute;nsito, conformando un conjunto de procesos que son administrados por un sistema operativo en tiempo real (RTOS). Los resultados del SoC se obtuvieron a partir de simulaciones de una plataforma rob&oacute;tica navegando en una carretera controlada y dise&ntilde;ada a peque&ntilde;a escala. </p>      ]]></body>
<body><![CDATA[<p><b>Palabras clave:</b> FPGA, Procesamiento de im&aacute;genes, Redes neuronales artificiales, RTOS, SoC, Visi&oacute;n estereosc&oacute;pica.</p>  <hr>      <p><font size="3"><b>Abstract</b></font></p>      <p>Due to the fact that the traffic accidents are one of the most relevant causes of deaths in the world, this article aims to expose the design of a System on a Chip (SoC) that has the capacity to recognize some transit signals, obstacles and white lines that delimit a road of a controlled scenery, giving a future prospect in order to implement automatic pilots in real automobiles for helping reduce accident rates. The SoC operates on an FPGA (<I>Field Programmable Gate Array</I>), so that the high speed processing algorithms are implemented in hardware and the low speed processing algorithms are implemented in software. Therefore different hardware modules were developed for video capturing, pre-processing images and controlling white balance in video capture. Also, software algorithms were designed, such as navigation, stereoscopy artificial vision and the intelligent recognition of the transit signals, shaping a set of processes administrated by a Real Time Operative System (RTOS). The SoC >results were obtained through simulations in a robotic platform navigating on a road modeled on a small scale.</p>      <p><b>Keywords:</b> Artificial neural networks, FPGA, Image processing, RTOS, SoC, Stereoscopic vision.</p>  <hr>      <p><font size="3"><b>1. Introducci&oacute;n</b></font></p>      <p> Los accidentes de tr&aacute;nsito dejan cerca de 1.2 millones de muertes al a&ntilde;o en todo el mundo. El exceso de velocidad, la violaci&oacute;n a las normas de tr&aacute;nsito, el uso de sustancias psicoactivas y el consumo de licor resultan ser las principales causas de tan altos &iacute;ndices de accidentalidad (Bartley, 2008). Desde hace varios a&ntilde;os las empresas ensambladoras de autos han procurado a&ntilde;adir sistemas que protejan la vida del pasajero, pero &eacute;stos &amp;uacute;nicamente reaccionan en el instante de una colisi&oacute;n, m&aacute;s no est&aacute;n en constante an&aacute;lisis del entorno que le permita al auto evitar alg&amp;uacute;n accidente de tr&aacute;nsito. Un ejemplo de estos sistemas es el airbag, que solo se activa en el momento de un choque (Zini, 2004). En los &amp;uacute;ltimos a&ntilde;os ha aumentado el inter&eacute;s por incluir sistemas robustos en los autom&oacute;viles, que logren dar informaci&oacute;n del entorno, como la cercan&iacute;a de un carro que amenace con colisionar, el tipo de se&ntilde;alizaci&oacute;n en las zonas urbanas y/o rurales, la posici&oacute;n espacial en la geograf&iacute;a terrestre y la direcci&oacute;n de las l&iacute;neas de una autopista que le faciliten la navegaci&oacute;n al conductor del autom&oacute;vil o inclusive sean la gu&iacute;a para que &eacute;ste se maneje de forma autom&aacute;tica (Team Berlin, 2007).</p>      <p>Conforme a lo anteriormente expuesto este trabajo presenta el dise&ntilde;o e implementaci&oacute;n de un SoC sobre un FPGA para la navegaci&oacute;n de un sistema m&oacute;vil, que tenga la capacidad de guiarse por las l&iacute;neas que delimitan la carretera, reconocer algunas se&ntilde;ales de tr&aacute;nsito, detectar obst&aacute;culos en el camino y adem&aacute;s lograr obtener una profundidad a la que se encuentren los obst&aacute;culos y las se&ntilde;ales de tr&aacute;nsito. Las pruebas del SoC se realizaron en un escenario controlado y dise&ntilde;ado a escala sobre una plataforma rob&oacute;tica semejante a un autom&oacute;vil que navega en una autopista. El SoC consiste en un complemento hardware/software, donde el hardware hace referencia a los m&oacute;dulos: procesador Nios II, comunicaci&oacute;n serial RS 232 y JTAG (<I>Joint Test Action Group</I>), captura de est&eacute;reo im&aacute;genes, control de memoria SDRAM (<I>Synchronous dynamic random access memory</I>), PLL(<I>Phase lock loop</I>), pre-procesamiento de im&aacute;genes de video y balance de blancos autom&aacute;tico, desarrollados a trav&eacute;s de los lenguajes de descripci&oacute;n de hardware VHDL y Verilog. </p>      <p>Por otra parte el software hace referencia a un RTOS encargado de administrar diversas tareas del SoC como la navegaci&oacute;n de la plataforma rob&oacute;tica, el reconocimiento inteligente de algunas se&ntilde;ales de tr&aacute;nsito a trav&eacute;s de una Red Neuronal Artificial (RNA), y la ubicaci&oacute;n de los centros de masa en un par de est&eacute;reo im&aacute;genes para el c&aacute;lculo de la profundidad a trav&eacute;s de m&eacute;todos de triangulaci&oacute;n (Pineda, et al., 2009).</p>  <font size="3"><b>2. Metodolog&iacute;a</b></font>      <p> Esta secci&oacute;n se divide en 4 sub-secciones que describen en detalle cada uno de los m&oacute;dulos en hardware y aplicaciones en software que componen el SoC. La <a href="#fig1">Figura 1</a> muestra un esquema general del SoC. </p>     <p>Los m&oacute;dulos hardware de captura y preprocesamiento est&aacute;n dise&ntilde;ados para adquirir y filtrar la imagen de entrada, el m&oacute;dulo de procesamiento est&aacute; dise&ntilde;ado para implementar sobre &eacute;l, la aplicaci&oacute;n software del SoC, esta aplicaci&oacute;n, est&aacute; basada en un sistema operativo de tiempo real uC/OS II de Micrium, para ejecutar las 4 tareas principales del RTOS. </p>      ]]></body>
<body><![CDATA[<p><font size="3">2.1 Hardware de captura de im&aacute;genes</font></p>      <p> El m&oacute;dulo TRDB-DC2 proporcionado por Terasic (2006), es el hardware de captura de im&aacute;genes de video en tiempo real utilizado en el sistema, este m&oacute;dulo hardware est&aacute; descrito en lenguaje Verilog y tiene como funci&oacute;n convertir los datos crudos a la entrada del sistema, en datos de salida en formato de colores (RGB, <I>Red, Green and Blue</I>) y escribirlos en memoria (Pineda, et al., 2009). </p>      <p><font size="3">2.2 Hardware de pre-procesamiento de im&aacute;genes</font></p>      <p> Este m&oacute;dulo permite filtrar las im&aacute;genes de entrada por medio de una t&eacute;cnica de transformaci&oacute;n lineal y posteriormente realizar una binarizaci&oacute;n en cada una de sus componentes RGB (Gonzalez &amp; Woods, 2002). Este m&oacute;dulo tambi&eacute;n implementa un balance de blancos autom&aacute;tico que mantiene el nivel de brillo constante en la imagen. La <a href="#fig2">Figura 2</a> muestra un diagrama de bloques correspondiente al sistema de pre-procesamiento. </p>      <p><a name="fig1">Figura 1</a>. Diagrama de bloques del SoC desarrollado</p>      <p align="center"><img src="img/revistas/inco/v14n2/v14n2a02fig1.jpg" width="580"></p>      <p><a name="fig2">Figura 2</a>. Sistema de Pre-procesamiento</p>      <p align="center"><img src="img/revistas/inco/v14n2/v14n2a02fig2.jpg"></p>      <p><font size="3">2.2.1 M&oacute;dulo conversor de RGB a escala de grises</font></p>      <p>Este sistema permite convertir la imagen a color capturada, en una imagen en escala de grises, la Ec. (1) muestra el procedimiento matem&aacute;tico de la conversi&oacute;n (Gonzalez & Woods, 2002).</p>      ]]></body>
<body><![CDATA[<p>A<sup>i,j</sup> = 0.3*<i>R</i><sup>i,j</sup> + 0,59*<i>G</i><sup>i</sup>,j + 0,11*<i>B</i><sup>i,j</sup> (1)</p>     <p>0 &le; <i>i &le; m </i>- 1 0 &le; <i>j &le; n </i>-1</p>      <p>Donde <b>A </b>es una matriz de tama&ntilde;o <i>n*m </i>y cada una de sus componentes corresponde al valor equivalente en escala de grises ubicado en la direcci&oacute;n ( <i>i,j</i>). <i>R, G </i>y <i>B </i>corresponden a las componentes rojo, verde</p>  <img src="img/revistas/inco/v14n2/v14n2a02for1.jpg">      <p>y azul del pixel, que son se&ntilde;ales de 10 bits. La Ec. (1) se puede implementar utilizando variables en    punto flotante, pero demanda muchos recursos para una implementaci&oacute;n en HDL (<i>Hardware Description Language</i>), as&iacute; que el camino m&aacute;s adecuado es encontrar estos valores con desplazamientos aritm&eacute;ticos y multiplicaciones de n&amp;uacute;meros enteros que representan cantidades en punto fijo, pues de esta manera se optimizan recursos y procesamiento en el sistema. Por lo tanto, a trav&eacute;s de c&aacute;lculos aritm&eacute;ticos, se encontr&oacute; que el equivalente en punto fijo de la Ec. (1) corresponde a la Ec. (2).</p>      <p>Donde "<I>b </I>&gt;&gt; <I>n</I>" hace referencia a hacer un desplazamiento aritm&eacute;tico de <I>n</I> bits hacia la derecha del n&amp;uacute;mero <I>b.</I> Entonces, conforme a la Ec. (2) el m&oacute;dulo conversor de RGB a escala de grises (Pajares &amp; Cruz, 2001) resulta ser un circuito combinacional, donde s&oacute;lo operan multiplicadores, sumadores y desplazamientos aritm&eacute;ticos. </p>      <p>En la captura de im&aacute;genes se utilizaron ambos lentes del m&oacute;dulo TRDB-DC2, al igual que una tarjeta de desarrollo DE2-70, la cual almacena las im&aacute;genes en su chip SDRAM, posteriormente env&iacute;a los datos mediante conexi&oacute;n USB a un computador donde son almacenadas en formato BMP (Pineda, et al., 2009). </p>  <font size="3">2.2.2 M&oacute;dulo detector de media aritm&eacute;tica</font>      <p> El objetivo de este m&oacute;dulo es entregar un valor de media aritm&eacute;tica para cada cuadro v&aacute;lido de la imagen en escala de grises, para que los datos del siguiente cuadro de la imagen a color, sean filtrados de acuerdo a este valor de media. Como la c&aacute;mara logra adquirir 15 cuadros/segundo, se puede afirmar que dos cuadros consecutivos tienen caracter&iacute;sticas casi iguales, por lo tanto la referencia para realizar la transformaci&oacute;n lineal y el balance de blancos a cada cuadro es la media aritm&eacute;tica del cuadro anterior. La media aritm&eacute;tica se calcula usando la Ec. (3). </p>  <img src="img/revistas/inco/v14n2/v14n2a02for2.jpg"> <img src="img/revistas/inco/v14n2/v14n2a02for4.jpg">      <p>Se puede observar que la Ec. (3) es un promedio, pues <I>X</I> se obtiene de sumar todos los pixeles de la imagen A y dividir entre el tama&ntilde;o de la imagen. Se generar&aacute; un valor de <I>X</I> real pero no entero, por lo tanto, es necesario hacer una aproximaci&oacute;n similar a la utilizada en el caso del conversor de RGB a escala de grises por medio de desplazamientos. Como la cantidad de brillo que interesa conocer de la imagen es &amp;uacute;nicamente la correspondiente a la mitad inferior de la misma, ya que es la zona donde est&aacute; la informaci&oacute;n &amp;uacute;til de la carretera y la se&ntilde;al de tr&aacute;nsito, se limita <I>n </I>= 512 que es el n&amp;uacute;mero de filas de media imagen capturada y <I>m </I>= 1280 que es el n&amp;uacute;mero de columnas de la imagen, pues es donde estar&iacute;a ubicada la v&iacute;a de navegaci&oacute;n para el sistema m&oacute;vil. As&iacute; que utilizando un conjunto de desplazamientos y multiplicaciones se puede transformar la Ec. (3) en la Ec. (4), teniendo como aproximaci&oacute;n que</p>  <img src="img/revistas/inco/v14n2/v14n2a02for3.jpg">      <p>El detector de media aritm&eacute;tica resulta ser un sistema en lazo abierto no combinacional, que posee 3 registros en cascada, as&iacute; que las se&ntilde;ales de salida estar&aacute;n retrasadas tantos ciclos de reloj como registros en cascada tenga el sistema. Aunque s&oacute;lo se calcula la media aritm&eacute;tica para la mitad de la imagen, el circuito tarda 1 ciclo de reloj por cada pixel m&aacute;s 3 ciclos de latencia, en total la media aritm&eacute;tica tarda 1280x512+3 ciclos de reloj. </p>      <p><font size="3">2.2.3 M&oacute;dulo de transformaci&oacute;n lineal</font></p>      ]]></body>
<body><![CDATA[<p> El m&eacute;todo de transformaci&oacute;n lineal consiste en cambiar los pixeles de las matrices R, G y B de la imagen a color mediante una funci&oacute;n lineal de la forma Y= mX + b, este m&eacute;todo es frecuentemente usado para aumentar el rango din&aacute;mico de niveles de intensidad en im&aacute;genes con poco contraste (Gonzalez &amp; Woods, 2002).</p>       <p>Como la captura de im&aacute;genes se realiza de manera frontal en direcci&oacute;n de una carretera como lo muestra la <a href="#fig3">Figura 3b</a>, la caracter&iacute;stica principal para elegir el tipo de pendiente es la media aritm&eacute;tica, ya que fue hallada a partir de la informaci&oacute;n del brillo que hay en la mitad inferior de la imagen, o sea conforme al nivel de brillo de la carretera. Quiere decir que la media aritm&eacute;tica hallada en la Ec. (4) es el corte en X de la ecuaci&oacute;n punto pendiente, como lo muestra la <a href="#fig3">Figura 3a</a>. </p>      <p align="center"><a name="fig3">Figura 3</a>. Pre-procesamiento de la imagen en VHDL, a) pendiente para realizar transformaci&oacute;n lineal, b) imagen capturada por el m&oacute;dulo TRDB-DC2, c) imagen luego de someterse a la transformaci&oacute;n lineal, d) imagen binarizada en colores.    <br> <img src="img/revistas/inco/v14n2/v14n2a02fig3a.jpg"></p>      <p>Se puede observar que la <a href="#fig3">Figura 3a</a> consta espec&iacute;ficamente de 2 pendientes, una pendiente igual a cero en Y=0 y una pendiente mayor que 1 que inicia en X = media aritm&eacute;tica hasta el nivel m&aacute;ximo del pixel, por lo tanto eleva los niveles de brillo y de esta manera, la imagen adquiere mayor contraste. El objetivo de aumentar el contraste de la imagen es obtener una frontera amplia entre los niveles bajos y altos de la imagen, para que al binarizar, las caracter&iacute;sticas m&aacute;s importantes se resalten. Teniendo como referencia 2 puntos <I>p</I>1= (<I>a</I>,0) y <I>p</I>2= (2<Sup>10</Sup>, 2<Sup>10</Sup>) de la pendiente que corta en X, la ecuaci&oacute;n punto pendiente que se obtiene y su aproximaci&oacute;n en punto fijo del modelo lineal mostrado en la <a href="#fig3">Figura 3a</a> se describe a continuaci&oacute;n en la Ec. (5).</p>  <img src="img/revistas/inco/v14n2/v14n2a02for5.jpg">      <p>La Ec. (5) punto pendiente depende de la media aritm&eacute;tica calculada, en este caso la variable <I>a </I>es quien la representa y <I>x </I>es el pixel actual a modificar. La implementaci&oacute;n de esta ecuaci&oacute;n en punto fijo se compone de multiplicadores, sumadores y desplazamientos. Luego de la transformaci&oacute;n lineal que se puede visualizar en la <a href="#fig3">Figura 3c</a>, el proceso de binarizaci&oacute;n es sencillo, se toma como umbral la media aritm&eacute;tica <I>a</I>, donde los valores inferiores sean cero y los superiores sean 1023. Se usa un comparador para binarizar el pixel de salida del sub-m&oacute;dulo de transformaci&oacute;n lineal y dos registros de salida que cumplen la funci&oacute;n de sincronizar el proceso con el reloj del sistema <I>clk </I>(Chu, 2006)<I>. </I>La <a href="#fig3">Figura 3c</a> muestra la imagen luego de ser binarizada en las tres componentes RGB, se puede observar que las se&ntilde;ales de tr&aacute;nsito y las l&iacute;neas de la carretera se resaltan al m&aacute;ximo (Pajares &amp; Cruz, 2001).</p>      <p><font size="3">2.2.4 Hardware de balance de blancos</font></p>      <p> La luminancia o brillo es una caracter&iacute;stica muy importante en el procesamiento de im&aacute;genes, adem&aacute;s de la fuente de luz (sol, luz artificial, entre otros), el brillo depende del nivel de apertura del lente de captura, pues son directamente proporcionales. El objetivo del m&oacute;dulo de balance de blancos es mantener constante la cantidad de luz en la imagen, evitando as&iacute;, el incremento de ruido por el exceso de brillo o por el contrario, la p&eacute;rdida de informaci&oacute;n por falta del mismo. El dise&ntilde;o consiste en un controlador difuso (Passino &amp; Yurkovich, 1997; Pineda, et al., 2009), el cual est&aacute; descrito en una m&aacute;quina de estados, donde cada estado suma o resta diferentes niveles de apertura del lente del dispositivo TRDB-DC2, dependiendo de la diferencia existente entre una referencia de brillo y la se&ntilde;al de salida. </p>      <p><font size="3">2.3 Hardware de procesamiento de im&aacute;genes</font></p>       <p> Este m&oacute;dulo proporciona las herramientas de hardware necesarias para realizar las tareas de reconocimiento, navegaci&oacute;n y comunicaci&oacute;n, este m&oacute;dulo se dise&ntilde;&oacute; con la herramienta <I>SOPC Builder </I>de Altera Corporation (2009). <I>SOPC Builder </I>est&aacute; basado en un entorno gr&aacute;fico para crear dise&ntilde;os de <I>sistemas en chip programables (SOPC)</I> basados en el procesador RISC de 32 bits Nios II. Adicionalmente se permite incluir interfaces de memoria, perif&eacute;ricos est&aacute;ndar, DSPs, aceleradores hardware y perif&eacute;ricos personalizados. <I>SOPC builder</I> construye un m&oacute;dulo que instancia estos componentes y genera el sistema necesario para interconectarlos. La <a href="#fig4">Figura 4</a> muestra el diagrama de bloques correspondiente al m&oacute;dulo de procesamiento dise&ntilde;ado en <I>SOPC builder</I>. </p>      ]]></body>
<body><![CDATA[<p align="center"><a name="fig4">Figura 4</a>. M&oacute;dulo de procesamiento de im&aacute;genes en tiempo real.    <br> <a href="img/revistas/inco/v14n2/v14n2a02fig4-grande.jpg" target="_blank"><img src="img/revistas/inco/v14n2/v14n2a02fig4.jpg"></a></p>      <p>Los componentes utilizados para este sistema fueron el Nios II, que es una herramienta &amp;uacute;til para aplicaciones embebidas, desarrollado por Altera. Un m&oacute;dulo Cmos, implementado por el Sr. Clare Hampson (Terasic, 2006a), el cual consiste en un puerto de entrada/salida de datos de 16 bits que permite el acceso a los dos sensores CMOS del dispositivo TRDB-DC2, adem&aacute;s proporciona 3 salidas de control; s<I>tart: </I>se&ntilde;al de inicio de captura, e<I>nd</I>: se&ntilde;al de fin de la captura y <I>read</I>: se&ntilde;al de sincronizaci&oacute;n de lectura de datos con la SDRAM. Las se&ntilde;ales <I>start </I>y <I>end </I>de este m&oacute;dulo fueron bastante &amp;uacute;tiles cuando se capturaron im&aacute;genes para ser almacenadas en formato BMP en diversas dimensiones, pero para el caso particular del prototipo rob&oacute;tico se obtuvieron im&aacute;genes de 160x240 con el fin de realizar el procesamiento en tiempo real, dado que las im&aacute;genes devengan un gran espacio en memoria y sobre todo tiempo en procesamiento. Posteriormente con estas mismas im&aacute;genes se pudo entrenar una RNA para reconocimiento de las se&ntilde;ales de tr&aacute;nsito. La se&ntilde;al <I>read </I>se utiliz&oacute; tanto en la captura y almacenamiento de im&aacute;genes en formato BMP como en la aplicaci&oacute;n en software del SoC, ya que sincroniza autom&aacute;ticamente los datos con el controlador SDRAM haciendo de la lectura de datos una funci&oacute;n transparente para el dise&ntilde;ador. Los m&oacute;dulos Interfaz de comunicaci&oacute;n serial <I>UART, </I>PLL, Temporizador, JTAG <I>UART </I>e interfaz para <I>SSRAM, </I>fueron &amp;uacute;tiles en el dise&ntilde;o para establecer comunicaci&oacute;n y controlar dispositivos externos. </p>      <p><font size="3">2.4 RTOS del sistema</font></p>      <p> Para este trabajo, se utiliz&oacute; el n&amp;uacute;cleo de tiempo real uC/OS II suministrado por Micrium (Labrosse, 2002), este elemento proporciona una organizaci&oacute;n en toda la aplicaci&oacute;n, adem&aacute;s permite sincronizar los procesos y el acceso a variables compartidas, tambi&eacute;n ofrece ventajas al tener un planificador expulsivo basado en prioridades, brindando desempe&ntilde;o en tiempo real a todas las tareas de la aplicaci&oacute;n. El esquema de la aplicaci&oacute;n software del sistema se puede visualizar en el recuadro negro de la <a href="#fig1">Figura 1</a>, con el nombre NIOS II y un subconjunto RTOS que forma parte del SoC. En esta Figura, las elipses blancas describen las tareas de la aplicaci&oacute;n y los c&iacute;rculos con la X en medio describen los sem&aacute;foros que sincronizan el acceso a las variables compartidas. Las tareas implementadas se describen en detalle a continuaci&oacute;n: </p>      <p><font size="3">2.4.1 Comunicaci&oacute;n con el sistema de locomoci&oacute;n y sensorial</font></p>      <p> Esta tarea se encarga de enviar las &oacute;rdenes desde la aplicaci&oacute;n del software hasta el sistema de locomoci&oacute;n. La tarea recibe datos de la tarea <I>navegaci&oacute;n</I> acerca de la direcci&oacute;n por la cual debe navegar el prototipo mec&aacute;nico, de la misma manera, la tarea de <I>reconocimiento de las se&ntilde;ales de tr&aacute;nsito y detecci&oacute;n de obst&aacute;culos</I>, le entregan datos acerca de la posici&oacute;n y tipo de se&ntilde;al de tr&aacute;nsito o el obst&aacute;culo que detecten, en caso que no lo hagan, estas tareas env&iacute;an un dato diferente, indicando la no existencia de se&ntilde;al u obst&aacute;culo (Pineda, et al., 2009)<I>. </I></p>      <p><font size="3">2.4.2 Almacenamiento de im&aacute;genes</font></p>      <p> Esta tarea es la encargada de realizar copias de las im&aacute;genes pre-procesadas en hardware y enviarlas a cada una de las tareas que las utilizan, en total la tarea almacena tres copias del sensor 2 del dispositivo TRDB-DC2 y dos copias del sensor 1 del mismo dispositivo. Esta tarea se encarga de escribir varias copias de cada cuadro capturado por el sistema hardware. Cada una de estas copias tiene asociado un sem&aacute;foro que sincroniza el acceso exclusivo por cada una de las tareas que las solicita (Pineda, et al., 2009). </p>      <p><font size="3">2.4.3 Navegaci&oacute;n</font></p>      ]]></body>
<body><![CDATA[<p> Este algoritmo utiliza la l&iacute;nea blanca del lado derecho de la carretera para guiarse, para esto se utiliza s&oacute;lo un peque&ntilde;o segmento de la imagen como se observa en la <a href="#fig5">Figura 5a</a>. En el segmento se hallan dos puntos que describen la pendiente de la l&iacute;nea blanca, la combinaci&oacute;n de informaci&oacute;n entre los puntos y la pendiente proporcionan informaci&oacute;n precisa acerca de la posici&oacute;n del dispositivo m&oacute;vil dentro de la carretera, en la <a href="#fig5">Figura 5b</a> se muestran los puntos hallados por el algoritmo. Los pixeles que apuntan las flechas en la <a href="#fig5">Figura 5b</a>, corresponden a los puntos caracter&iacute;sticos que describen el sentido de la l&iacute;nea blanca, con esta informaci&oacute;n se dise&ntilde;a un controlador difuso (Passino &amp; Yurkovich, 1998; Pineda, et al., 2009) que env&iacute;a una se&ntilde;al de salida dependiendo del error existente entre las caracter&iacute;sticas detectadas en cada imagen procesada y la referencia propuesta por el dise&ntilde;ador, dicha salida tiene 4 posibles valores que describen la direcci&oacute;n correcta que debe tomar el prototipo m&oacute;vil para navegar correctamente dentro de la carretera como son : adelante, atr&aacute;s, izquierda o derecha. </p>      <p align="center"><a name="fig5">Figura 5</a>. Puntos para hallar la pendiente de la l&iacute;nea    <br> <img src="img/revistas/inco/v14n2/v14n2a02fig5.jpg"></p>      <p><font size="3">2.4.4 Visi&oacute;n est&eacute;reo en la detecci&oacute;n de obst&aacute;culos y el reconocimiento de las se&ntilde;ales de tr&aacute;nsito</font></p>      <p> Estas dos tareas presentan un procesamiento igual, con respecto a la visi&oacute;n estereosc&oacute;pica, ambas tareas ubican el centro de masa de los objetos de inter&eacute;s en la imagen, la tarea de ubicaci&oacute;n de obst&aacute;culos localiza los objetos que obstaculizan la navegaci&oacute;n y la tarea de reconocimiento de las se&ntilde;ales de tr&aacute;nsito ubica las se&ntilde;ales de tr&aacute;nsito. Como el sistema captura dos im&aacute;genes donde las c&aacute;maras presentan ejes &oacute;pticos paralelos con longitud focal de 4,8mm y una distancia inter-ocular de 3,7cm entre s&iacute;, es posible obtener la profundidad de los objetos o se&ntilde;ales de tr&aacute;nsito calculando la disparidad (Pajares &amp; Cruz, 2001; Sabogal, 2007; Pineda, et al., 2009) que es igual a la diferencia entre los centros de masa de las im&aacute;genes de cada lente, la Ec. (6) muestra la funci&oacute;n obtenida en la pr&aacute;ctica que describe la variable profundidad. </p>  <img src="img/revistas/inco/v14n2/v14n2a02for6.jpg">      <p><font size="3">2.4.5 Detecci&oacute;n de obst&aacute;culos</font></p>      <p> La detecci&oacute;n de obst&aacute;culos es una tarea que se encarga de ubicar el centro de masa de los objetos que obstaculicen la ruta de navegaci&oacute;n del prototipo e identifica todo objeto que fue binarizado en el pre-procesamiento en hardware, se debe tener en cuenta que la binarizaci&oacute;n fue en colores, o sea que la tarea ubica todo objeto que sea rojo, verde, azul, magenta y el resto de combinaciones binarizadas en el plano RGB. </p>      <p><font size="3">2.4.6 Reconocimiento de las se&ntilde;ales de tr&aacute;nsito</font></p>      <p> Esta tarea se encarga de extraer las caracter&iacute;sticas que son &amp;uacute;nicas de cada se&ntilde;al de tr&aacute;nsito, para realizar una posterior clasificaci&oacute;n a trav&eacute;s de RNAs (Graupe, 2007). <I>La extracci&oacute;n de caracter&iacute;sticas de las se&ntilde;ales de tr&aacute;nsito </I>consiste en acotar la zona alrededor del centro de masa de la se&ntilde;al y realizar un conteo de pixeles del color rojo y amarillo, ya que son los colores sobresalientes en la mayor&iacute;a de las se&ntilde;ales de tr&aacute;nsito, este conteo se hace en direcci&oacute;n de las filas y en direcci&oacute;n de las columnas, la informaci&oacute;n del conteo sobre cada fila y columna se almacena en vectores de igual tama&ntilde;o a la cantidad de filas y columnas de la imagen respectivamente, en la <a href="#fig6">Figura 6</a> se puede ver una se&ntilde;al de sem&aacute;foro que indica detenerse (sem&aacute;foro en rojo) y la zona acotada en la que se realiza el conteo de pixeles. En este caso la informaci&oacute;n es del color rojo y no existe informaci&oacute;n del color amarillo (Pineda, et al., 2009). </p>      <p align="center"><a name="fig6">Figura 6</a>. Zona de acotamiento para extraer caracter&iacute;sticas de la se&ntilde;al de sem&aacute;foro.    ]]></body>
<body><![CDATA[<br> <img src="img/revistas/inco/v14n2/v14n2a02fig6.jpg"></p>      <p>La informaci&oacute;n de la cantidad de pixeles en direcci&oacute;n de las filas y en direcci&oacute;n de las columnas genera una "<I>firma" </I>que diferencia a cada se&ntilde;al de tr&aacute;nsito de las otras, esta informaci&oacute;n de la "<I>firma</I>" se normaliza dentro de dos vectores patr&oacute;n de 320 posiciones, cada vector patr&oacute;n tiene un tama&ntilde;o constante y hace referencia al color de la se&ntilde;al, o sea un vector patr&oacute;n rojo para las se&ntilde;ales reglamentarias y sem&aacute;foro en rojo, y un vector patr&oacute;n amarillo para las se&ntilde;ales preventivas y sem&aacute;foro en amarillo. La <a href="#fig7">Figura 7</a> y 7b muestran una se&ntilde;al reglamentariay el vector patr&oacute;n respectivamente, este vector patr&oacute;n presenta la informaci&oacute;n del color rojo en direcci&oacute;n de las columnas en las primeras 100 posiciones, la informaci&oacute;n del color rojo en direcci&oacute;n de las filas en las siguientes 100 posiciones, la informaci&oacute;n del color negro al interior de la se&ntilde;al en direcci&oacute;n de las columnas en las siguientes 60 posiciones y las &amp;uacute;ltimas 60 posiciones con la informaci&oacute;n de ese mismo color negro, pero en direcci&oacute;n de las filas, as&iacute; que estas &amp;uacute;ltimas 120 posiciones representan la reglamentaci&oacute;n de disminuir velocidad a 30. El eje vertical esta normalizado entre un rango de -4 y 4. </p>      <p align="center"><a name="fig7">Figura 7</a>. a) Se&ntilde;al reglamentaria y b) su vector patr&oacute;n obtenido. c) Se&ntilde;al preventiva y d) su vector patr&oacute;n obtenido    <br> <img src="img/revistas/inco/v14n2/v14n2a02fig7.jpg"></p>      <p>Las se&ntilde;ales preventivas se caracterizan por ser amarillas y por contener en su interior informaci&oacute;n de color negro acerca de la prevenci&oacute;n, as&iacute; que el vector patr&oacute;n que se llena en este caso es el vector patr&oacute;n amarillo, como se muestra en la <a href="#fig7">Figura 7d</a>, sus primeras 100 posiciones contienen informaci&oacute;n del color amarillo en direcci&oacute;n de las columnas, las siguientes 100 posiciones con informaci&oacute;n del color amarillo en direcci&oacute;n de las filas, y al igual que la se&ntilde;al reglamentaria sus &amp;uacute;ltimas 120 posiciones contienen la informaci&oacute;n del color negro que representa la se&ntilde;al preventiva, para el caso de la <a href="#fig7">Figura 7c</a> un resalto. Es de aclarar que cuando la se&ntilde;al presenta informaci&oacute;n de un solo color, como por ejemplo la se&ntilde;al preventiva, entonces el vector patr&oacute;n amarillo ser&aacute; el &amp;uacute;nico que se llene y el vector patr&oacute;n rojo estar&aacute; vac&iacute;o, pero si fuese el caso de un sem&aacute;foro en rojo y amarillo entonces ambos vectores patr&oacute;n tendr&iacute;an informaci&oacute;n. </p>      <p><I>La clasificaci&oacute;n de las se&ntilde;ales de tr&aacute;nsito</I> se realiza gracias a una RNA. Luego de capturar con la c&aacute;mara del sistema alrededor de 100 fotograf&iacute;as de las se&ntilde;ales en el escenario a diversas distancias, se realiz&oacute; un entrenamiento en Matlab de dos RNAs con una capa oculta y una capa de salida, la capa oculta est&aacute; conformada por 5 neuronas y una funci&oacute;n de activaci&oacute;n <I>tansig </I>(tangente sigmoidal hiperb&oacute;lica), la capa de salida est&aacute; conformada por 2 neuronas y una funci&oacute;n de activaci&oacute;n <I>purelin </I>(la salida es igual al valor de entrada) a la salida, el patr&oacute;n de entrada tiene 320 caracter&iacute;sticas y la salida es de 2 posiciones (Pineda, et al., 2009) como se visualiza en la <a href="#fig8">Figura 8</a>, el tipo de entrenamiento usado fue el <I>backpropagation </I>(Graupe, 2007). </p>      <p align="center"><a name="fig8">Figura 8</a>. RNA implementada en el sistema con una capa oculta y una de salida    <br> <img src="img/revistas/inco/v14n2/v14n2a02fig8.jpg"></p>      <p>Una red propaga el vector patr&oacute;n rojo y la otra propaga el vector patr&oacute;n amarillo. Luego del entrenamiento, fue necesario convertir la informaci&oacute;n de las redes en Matlab a un archivo en lenguaje C, se us&oacute; una herramienta &amp;uacute;til desarrollada como tesis de pregrado (Quintero, 2004), del programa de ingenier&iacute;a electr&oacute;nica de la Universidad del Quind&iacute;o, esta herramienta es una librer&iacute;a para Matlab y lenguaje C llamada <I>"jannl" </I>que permite convertir a lenguaje C descripciones de RNAs hechas en Matlab y permitiendo incluir cada RNA en el Programa principal del SoC. </p>      <p><font size="3"><b>3. Resultados y discusi&oacute;n</b></font></p>      ]]></body>
<body><![CDATA[<p> Los resultados del SoC fueron obtenidos a partir de pruebas sobre una plataforma rob&oacute;tica que navega sobre una carretera modelo, basada en una autopista de doble carril unidireccional, con longitud de 2.2 m y su ancho de 1.06 m, las l&iacute;neas de los extremos de la v&iacute;a son continuas y las del centro son segmentadas, todas estas con un ancho de 2.25 cm, as&iacute; como se muestran en las <a href="#fig3">Figura 3</a>, <a href="#fig5">5</a>, <a href="#fig6">6</a> y <a href="#fig7">7</a>. El prototipo rob&oacute;tico de prueba est&aacute; conformado por una plataforma mec&aacute;nica que se asemeja a un auto de f&oacute;rmula 1, en la cual se encuentran contenidos una tarjeta DE2-70 basada en FPGA y un sistema embebido basado en microcontrolador, dedicado al manejo de los motores actuadores y a recibir &oacute;rdenes del SoC por medio de una conexi&oacute;n serial as&iacute;ncrona. El m&oacute;dulo TRDBDC2 es ubicado en la parte trasera del robot para la captura constante de im&aacute;genes. La fuente de potencia para el funcionamiento general de todo el sistema la conforman bater&iacute;as con celdas de litio para dar completa autonom&iacute;a al sistema, &eacute;ste se puede visualizar en la <a href="#fig9">Figura 9</a>. </p>      <p align="center"><a name="fig9">Figura 9</a>. Prototipo Rob&oacute;tico basado en FPGA y microcontrolador    <br> <img src="img/revistas/inco/v14n2/v14n2a02fig9.jpg"></p>      <p>El hardware del sistema se sintetiz&oacute; sobre un FPGA Cyclone II, y se utiliz&oacute; menos del 10% de los recursos l&oacute;gicos de &eacute;ste. Al sintetizar en hardware las etapas de <I>captura </I>y <I>pre-procesamiento</I>, se minimiz&oacute; el costo computacional y se optimiz&oacute; el funcionamiento del sistema en general, ya que el hardware dise&ntilde;ado usa bloques fragmentados que explotan el paralelismo y presentan baja latencia (Chu, 2006), adem&aacute;s estas etapas son dise&ntilde;adas para el funcionamiento espec&iacute;fico del SoC y de los perif&eacute;ricos que en &eacute;l se conecten. La herramienta SOPC Builder de Altera utilizada para generar la etapa de <I>procesamiento</I>, permite al dise&ntilde;ador implementar todas las herramientas necesarias para el funcionamiento de las aplicaciones en software y proporciona las interfaces necesarias para interactuar con los perif&eacute;ricos necesarios en el SoC. </p>     <p>Se realiz&oacute; un an&aacute;lisis de planificabilidad, para decidir las prioridades y tiempos de ejecuci&oacute;n de las tareas del RTOS que conforma el SoC dise&ntilde;ado y se midieron los tiempos de ejecuci&oacute;n de cada una de las tareas. Es de aclarar que la frecuencia m&aacute;xima con la que se configur&oacute; el modulo TRDB-DC2 para la captura de im&aacute;genes fue de 15 cuadros/segundo, a continuaci&oacute;n se muestran los resultados de las tareas del RTOS: </p>      <p><I>Tarea de almacenamiento de im&aacute;genes en memoria de datos:</I> esta tarea es imprescindible para el sistema, pues en ella se realiza el almacenamiento y copia de las im&aacute;genes necesarias para cada tarea del RTOS, el tama&ntilde;o de las im&aacute;genes de copia en este caso es de 160x240, ya que el procesamiento de im&aacute;genes en software implica mucho tiempo de computo, as&iacute; que se sacrifica significativamente la resoluci&oacute;n para mejorar tiempo de procesamiento. Esta tarea limita el sistema de navegaci&oacute;n a una frecuencia de trabajo m&aacute;xima de 5.917 cuadros/segundo. Su tama&ntilde;o en pila fue de 4096 bytes, el tiempo de c&oacute;mputo igual a 169 ms, con periodo de ejecuci&oacute;n de 500 ms y primer (1er) prioridad del RTOS. </p>      <p><I>Tarea de comunicaci&oacute;n serial con el sistema de locomoci&oacute;n y sensorial:</I> esta tarea se encarga de mantener la comunicaci&oacute;n con un microcontrolador dedicado al movimiento del prototipo Rob&oacute;tico, es una tarea muy veloz y &amp;uacute;til para enviar y recibir las palabras de control. Su tama&ntilde;o en la pila fue de 2048 bytes, el tiempo de c&oacute;mputo igual a 1 ms, con periodo de ejecuci&oacute;n de 50 ms y segunda (2da) prioridad del RTOS. </p>      <p><I>Tarea de toma de decisiones para la navegaci&oacute;n: </I>el dise&ntilde;o del algoritmo de esta tarea minimiz&oacute; el costo computacional, el algoritmo fue m&aacute;s eficiente, ya que s&oacute;lo se recorren los pixeles donde la probabilidad de encontrar la l&iacute;nea correcta es m&aacute;s alta y en caso de existir una curva, la cantidad peque&ntilde;a de pixeles toma solo una porci&oacute;n de la curva, aproxim&aacute;ndola a una recta, de esta manera el resultado de la pendiente es m&aacute;s exacto que considerar la curva completa. La implementaci&oacute;n de este algoritmo junto con la comunicaci&oacute;n serial y el almacenamiento de la imagen pueden hacer que el prototipo Rob&oacute;tico logre hasta una velocidad de 0.724 m/s. Su tama&ntilde;o en pila fue de 2048 bytes, el tiempo de c&oacute;mputo igual a 6 ms, con periodo de ejecuci&oacute;n de 200 ms y tercer (3er) prioridad del RTOS. </p>     <p><I>Tarea de detecci&oacute;n de obst&aacute;culo:</I> esta tarea le permiten al prototipo rob&oacute;tico decidir c&oacute;mo actuar ante la existencia de un obst&aacute;culo o una se&ntilde;al de tr&aacute;nsito. A pesar de que el hardware pre-proces&oacute; im&aacute;genes de 1024x1280, es de aclarar que las im&aacute;genes utilizadas para calcular las profundidades de los objetos y las se&ntilde;ales de tr&aacute;nsito, ten&iacute;an un tama&ntilde;o de 160x240 como se describi&oacute; anteriormente en el titulo "Hardware de Procesamiento de im&aacute;genes", esto debido a que los algoritmos para el c&aacute;lculo de la profundidad en estero im&aacute;genes implican un alto costo computacional (Pajares &amp; Cruz, 2001). Mientras m&aacute;s peque&ntilde;a la imagen menor precisi&oacute;n existe en el c&aacute;lculo de la profundidad pero mejora la velocidad de procesamiento del RTOS. La m&aacute;xima distancia posible de medir es 140cm, ya que para distancias mayores a &eacute;sta las im&aacute;genes capturadas por cada lente del dispositivo TRDB-DC2 resultan ser casi las mismas, imposibilitando el c&aacute;lculo de la profundidad debido a una ausencia de disparidad (Sabogal, 2007). El sistema de visi&oacute;n est&eacute;reo tiene la capacidad de ubicar objetos de distintos colores binarizados, con la caracter&iacute;stica que si existen varios objetos en la carretera con un mismo color, el sistema da la prioridad al obst&aacute;culo m&aacute;s cercano de ser ubicado. El algoritmo es capaz de localizar un objeto que tenga dimensiones mayores a 1.5cm<Sup>3</Sup> a una distancia m&iacute;nima de 10cm del prototipo rob&oacute;tico, la aplicabilidad de este resultado en la realidad depende de un sistema de rocesamiento de alta velocidad que permita realizar el c&aacute;lculo de la profundidad en im&aacute;genes con una resoluci&oacute;n de al menos 1024x1280 pixeles. El tama&ntilde;o en pila de esta tarea fue de 4096 bytes, con tiempo de c&oacute;mputo entre 100 y 600 ms, periodo de ejecuci&oacute;n entre 300 y 800 ms y cuarta (4ta) prioridad del RTOS. </p>     <p><I>Tarea de reconocimiento de se&ntilde;ales de tr&aacute;nsito: </I>Las RNAs utilizadas en el sistema se entrenaron con un total de 40 fotograf&iacute;as cada una y con otras20 se realiz&oacute; el test de acierto, cada red logr&oacute; entrenarse con las siguientes caracter&iacute;sticas: </p>     ]]></body>
<body><![CDATA[<p>N&amp;uacute;mero de &eacute;pocas igual a 1150 para la RNA color rojo y 712 para la RNA color amarillo. Su par&aacute;metro <I>Goal </I>igual a 0.0001 y el porcentaje de acierto obtenido en entrenamiento por ambas RNAs fue de100%. Esta tarea tuvo un tama&ntilde;o en pila de 4096 bytes, con tiempo de c&oacute;mputo entre 120 y 1050 ms, periodo de ejecuci&oacute;n entre 320 y 1250 ms y quinta (5ta) prioridad del RTOS. Las RNAs logran reconocer 6 diferentes clases de se&ntilde;ales; se&ntilde;al reglamentaria, se&ntilde;al preventiva, sem&aacute;foro en rojo, sem&aacute;foro en amarillo, sem&aacute;foro en rojo y amarillo, y la presencia de nada. Las RNAs logran clasificar de manera correcta las 5 se&ntilde;ales de tr&aacute;nsito, con una distancia m&aacute;xima de 150cm. </p>     <p>Por otra parte, la memoria utilizada en variables globales por el SoC fue de 240000 bytes. La velocidad promedio del prototipo Rob&oacute;tico incluyendo todos los sistemas hardware/ software del SoC fue de 0.23 m/s. El hardware de pre-procesamiento y el m&oacute;dulo de balance de blancos alcanzan una velocidad de 15 cuadros/ segundo. El algoritmo de navegaci&oacute;n en el SoC puede actualizarse a una velocidad de 12.5 cuadros/segundo si se opera individualmente. En el mejor de los casos el SoC puede alcanzar una velocidad de procesamiento de 5 cuadros/ segundo. El m&oacute;dulo detector de media aritm&eacute;tica tarda 1280*512+3 ciclos de reloj, como el reloj de sincronizaci&oacute;n de los lentes del m&oacute;dulo TRDB-DC2 es de 25Mhz, entonces el tiempo efectuado para el c&aacute;lculo de media aritm&eacute;tica es igual a 26.21ms. </p>     <p>En la pr&aacute;ctica el sistema se comport&oacute; de manera satisfactoria, cumpliendo con los tiempos dise&ntilde;ados en el an&aacute;lisis de planificabilidad, cada uno de los tiempos de ejecuci&oacute;n y las prioridades se definieron seg&amp;uacute;n la teor&iacute;a de sistemas operativos en tiempo real y las caracter&iacute;sticas funcionales del sistema. Los tiempos de c&oacute;mputo y ejecuci&oacute;n de las tareas <I>detecci&oacute;n de obst&aacute;culos </I>y <I>reconocimiento de se&ntilde;ales de tr&aacute;nsito</I>, son algoritmos cuyos tiempos var&iacute;an dependiendo de los objetos presentes en el entorno y la distancia a la que estos se encuentren (se&ntilde;ales de tr&aacute;nsito u obst&aacute;culos), adem&aacute;s estas tareas se consideran tareas espor&aacute;dicas ya que s&oacute;lo se ejecutan en su totalidad si existe un objeto dentro de la escena, por lo tanto los tiempos de ejecuci&oacute;n de las tareas var&iacute;an proporcionalmente al tiempo de c&oacute;mputo. </p>      <p><font size="3"><b>4. Conclusiones</b></font></p>      <p> La implementaci&oacute;n de un SoC, dise&ntilde;ado para guiar sobre una carretera un prototipo rob&oacute;tico m&oacute;vil, clasificar se&ntilde;ales de tr&aacute;nsito y detectar la distancia a la que se encuentran, hace un gran aporte a la investigaci&oacute;n a nivel nacional, siendo uno de los primeros trabajos que logra implementar este tipo de tecnolog&iacute;as, dando una perspectiva a futuro de posibles implementaciones sobre autom&oacute;viles reales. </p>     <p>Implementar un RTOS dentro de un SoC permite hacer del software un sistema modular donde cada tarea es independiente, logrando controlar variables y recursos compartidos que eviten la corrupci&oacute;n en los datos con el uso de funciones de sincronizaci&oacute;n. </p>     <p>A pesar de la limitaci&oacute;n en la velocidad de respuesta de los lentes del m&oacute;dulo TRDB-DC2, la poca resoluci&oacute;n de las im&aacute;genes de copia para el RTOS y la baja frecuencia de procesamiento de la tarjeta DE2-70; Se logr&oacute; implementar un SoC con caracter&iacute;sticas relevantes que logran guiar un dispositivo m&oacute;vil en una carretera controlada, lo cual indica que una plataforma con mayores cualidades de respuesta permitir&aacute; optimizar las diversas tareas del RTOS y obtener mejores resultados no s&oacute;lo en un entorno controlado, sino tambi&eacute;n en un ambiente real. </p>     <p>La tarea para la clasificaci&oacute;n de se&ntilde;ales de tr&aacute;nsito del RTOS es un dise&ntilde;o que permite reconocer no s&oacute;lo las se&ntilde;ales establecidas en el trabajo sino que tambi&eacute;n puede llegar a reconocer cualquier se&ntilde;al de tr&aacute;nsito preventiva o reglamentaria, pues cada se&ntilde;al de tr&aacute;nsito genera una "firma" &amp;uacute;nica que la identifica. </p>     <p>La implementaci&oacute;n de m&oacute;dulos hardware para el pre-procesamiento de im&aacute;genes, es una alternativa eficaz para el tratamiento de im&aacute;genes, ya que al usar bloques fragmentados que explotan el paralelismo y presentan una baja latencia, se logra el ahorro de c&oacute;mputo que potencializa el desempe&ntilde;o de los sistemas de procesamiento. </p>      <p><font size="3"><b>5. Agradecimientos</b></font></p>      ]]></body>
<body><![CDATA[<p> Los m&aacute;s sinceros agradecimientos a Jes&amp;uacute;s el hermoso Dios, a COLCIENCIAS por el apoyo a la investigaci&oacute;n a trav&eacute;s del programa J&oacute;venes Investigadores e Innovadores "Virginia Guti&eacute;rrez de Pineda" a&ntilde;o 2009, a la Universidad del Quind&iacute;o por avalar j&oacute;venes en la investigaci&oacute;n, al Programa de Ingenier&iacute;a Electr&oacute;nica y al grupo de investigaci&oacute;n GDSPROC de la Universidad del Quind&iacute;o por acoger este tipo de proyectos que generan nuevos conocimientos e innovaci&oacute;n. </p>  <hr>      <p><font size="3"><b>6. Referencias Bibliogr&aacute;ficas</b></font></p>      <!-- ref --><p>Altera Corporation. (2009). <i>Nios II processors reference Handbook</i>. USA: ALTERA CORP.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000115&pid=S0123-3033201200020000200001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Bartley, G.P. (Ed.) (2008). <i>Traffic Accidents: Causes and Outcomes</i>. New York: Nova Science Publishers, Inc.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000117&pid=S0123-3033201200020000200002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Chu, P.P. (2006). <i>RTL HARDWARE DESIGN USING VHDL: Coding for efficiency, Portability, and Scalability</i>. New Jersey: John Wiley &amp; Sons, Inc.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000119&pid=S0123-3033201200020000200003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Gonzalez, R.C., &amp; Woods, R.E. (2002). <i>Digital Image processing</i> (2 ed). New Jersey: Prentice Hall, Inc.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000121&pid=S0123-3033201200020000200004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     ]]></body>
<body><![CDATA[<!-- ref --><p> Graupe, D. (2007). <i>Principles of Artificial Neural Networks</i> (vol. 6). Advanced Series on Circuits and Systems (2 ed). Singapure: World Scientific Publishing Co.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000123&pid=S0123-3033201200020000200005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Labrosse, J.J. (2002). <i>MicroC/OS-II The Real- Time Kernel</i> (2 ed). Lawrence: CMP Books.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000125&pid=S0123-3033201200020000200006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> </p>     <!-- ref --><p> Pajares, G., &amp; Cruz, J.M. (2001). <i>Visi&oacute;n por computador</i>. Madrid: RA-MA, S.A.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000127&pid=S0123-3033201200020000200007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Passino, K.M., &amp; Yurkovich, S. (1998). <i>Fuzzy Control</i>. Menlo Park: Addison Wesley Longman, Inc.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000129&pid=S0123-3033201200020000200008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Pineda, D.F., Giraldo, J.J., &amp; Estrada, E. (2009). <i>Piloto Autom&aacute;tico Implementado en un Robot M&oacute;vil</i>. Tesis de Pregrado. Programa de Ingenier&iacute;a Electr&oacute;nica, Facultad de Ingenier&iacute;a, Universidad del Quind&iacute;o. Armenia, Colombia.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000131&pid=S0123-3033201200020000200009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     ]]></body>
<body><![CDATA[<!-- ref --><p> Quintero, J.J. (2004). <i>Herramienta para redes neuronales en tiempo real</i>. Tesis de Pregrado, Programa de Ingenier&iacute;a Electr&oacute;nica, Facultad de Ingenier&iacute;a, Universidad del Quind&iacute;o. Armenia, Colombia.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000133&pid=S0123-3033201200020000200010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Sabogal, I.D. (2007). <i>Desarrollo de Software y Especificaci&oacute;n de Arquitectura de Hardware para un M&oacute;dulo de Visi&oacute;n Estereosc&oacute;pica</i>. Tesis de Pregrado, Programa de Ingenier&iacute;a Electr&oacute;nica, Facultad de Ingenier&iacute;a, Universidad del Quind&iacute;o. Armenia, Colombia.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000135&pid=S0123-3033201200020000200011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p> Team Berlin. (2007). <i>Spirit of berlin: An Autonomous Car for the DARPA Urban Challenge Hardware and Software Architecture</i>. Berlin: Freie Universit&auml;t Berlin.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000137&pid=S0123-3033201200020000200012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>  Terasic. (2006a). <i>Motion Detection Demo using DE2 with Camera Module</i>. Recuperado 2012/12/15 de <a href="http://www.terasic.com.tw/" target="_blank">http://www.terasic.com.tw/</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000139&pid=S0123-3033201200020000200013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p> Terasic. (2006b). <i>TRDB-DC2 user guide</i>. Taiwan: Terasic.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000140&pid=S0123-3033201200020000200014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>       <!-- ref --><p> Zini, G. (2004). <i>Estudio de innovaciones factibles en el dise&ntilde;o de la seguridad de impacto de un autom&oacute;vil</i>. Tesis de Pregrado. Facultad de Ingenier&iacute;a, Universidad de Buenos Aires. Buenos Aires, Argentina.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000142&pid=S0123-3033201200020000200015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> </p>      <p><img src="img/revistas/inco/v14n2/cc.png">    <br>  Revista Ingenier&iacute;a y Competitividad por Universidad del Valle se encuentra bajo una <a href="https://creativecommons.org/licenses/by/3.0/deed.es_ES" target="_blank">licencia Creative Commons Reconocimiento</a> - Debe reconocer adecuadamente la autor&iacute;a, proporcionar un enlace a la licencia e indicar si se han realizado cambios. Puede hacerlo de cualquier manera razonable, pero no de una manera que sugiera que tiene el apoyo del licenciador o lo recibe por el uso que hace. </font>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<collab>Altera Corporation</collab>
<source><![CDATA[Nios II processors reference Handbook]]></source>
<year>2009</year>
<publisher-name><![CDATA[ALTERA CORP]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bartley]]></surname>
<given-names><![CDATA[G.P.]]></given-names>
</name>
</person-group>
<source><![CDATA[Traffic Accidents: Causes and Outcomes]]></source>
<year>2008</year>
<publisher-loc><![CDATA[New York ]]></publisher-loc>
<publisher-name><![CDATA[Nova Science Publishers, Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chu]]></surname>
<given-names><![CDATA[P.P.]]></given-names>
</name>
</person-group>
<source><![CDATA[RTL HARDWARE DESIGN USING VHDL: Coding for efficiency, Portability, and Scalability]]></source>
<year>2006</year>
<publisher-loc><![CDATA[New Jersey ]]></publisher-loc>
<publisher-name><![CDATA[John Wiley & Sons, Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gonzalez]]></surname>
<given-names><![CDATA[R.C.]]></given-names>
</name>
<name>
<surname><![CDATA[Woods]]></surname>
<given-names><![CDATA[R.E.]]></given-names>
</name>
</person-group>
<source><![CDATA[Digital Image processing]]></source>
<year>2002</year>
<edition>2</edition>
<publisher-loc><![CDATA[New Jersey ]]></publisher-loc>
<publisher-name><![CDATA[Prentice Hall, Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Graupe]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
</person-group>
<source><![CDATA[Principles of Artificial Neural Networks]]></source>
<year>2007</year>
<volume>6</volume>
<edition>2</edition>
<publisher-loc><![CDATA[Singapure ]]></publisher-loc>
<publisher-name><![CDATA[World Scientific Publishing Co.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Labrosse]]></surname>
<given-names><![CDATA[J.J.]]></given-names>
</name>
</person-group>
<source><![CDATA[MicroC/OS-II The Real- Time Kernel]]></source>
<year>2002</year>
<edition>2</edition>
<publisher-loc><![CDATA[Lawrence ]]></publisher-loc>
<publisher-name><![CDATA[CMP Books]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pajares]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Cruz]]></surname>
<given-names><![CDATA[J.M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Visión por computador]]></source>
<year>2001</year>
<publisher-loc><![CDATA[Madrid ]]></publisher-loc>
<publisher-name><![CDATA[RA-MA, S.A.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Passino]]></surname>
<given-names><![CDATA[K.M.]]></given-names>
</name>
<name>
<surname><![CDATA[Yurkovich]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<source><![CDATA[Fuzzy Control]]></source>
<year>1998</year>
<publisher-loc><![CDATA[Menlo Park ]]></publisher-loc>
<publisher-name><![CDATA[Addison Wesley Longman, Inc.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pineda]]></surname>
<given-names><![CDATA[D.F.]]></given-names>
</name>
<name>
<surname><![CDATA[Giraldo]]></surname>
<given-names><![CDATA[J.J.]]></given-names>
</name>
<name>
<surname><![CDATA[Estrada]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
</person-group>
<source><![CDATA[Piloto Automático Implementado en un Robot Móvil]]></source>
<year>2009</year>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Quintero]]></surname>
<given-names><![CDATA[J.J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Herramienta para redes neuronales en tiempo real]]></source>
<year>2004</year>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Sabogal]]></surname>
<given-names><![CDATA[I.D.]]></given-names>
</name>
</person-group>
<source><![CDATA[Desarrollo de Software y Especificación de Arquitectura de Hardware para un Módulo de Visión Estereoscópica]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="book">
<collab>Team Berlin</collab>
<source><![CDATA[Spirit of berlin: An Autonomous Car for the DARPA Urban Challenge Hardware and Software Architecture]]></source>
<year>2007</year>
<publisher-loc><![CDATA[Berlin ]]></publisher-loc>
<publisher-name><![CDATA[Freie Universität Berlin]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="">
<collab>Terasic</collab>
<source><![CDATA[Motion Detection Demo using DE2 with Camera Module]]></source>
<year>2006</year>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="">
<collab>Terasic</collab>
<source><![CDATA[TRDB-DC2 user guide]]></source>
<year>2006</year>
<publisher-loc><![CDATA[Taiwan ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Zini]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Estudio de innovaciones factibles en el diseño de la seguridad de impacto de un automóvil]]></source>
<year>2004</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
