<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mllofriu</id>
		<title>Proyecto Butiá - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mllofriu"/>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Especial:Contribuciones/Mllofriu"/>
		<updated>2026-04-04T00:30:26Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Rostia&amp;diff=4019</id>
		<title>Rostia</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Rostia&amp;diff=4019"/>
				<updated>2013-02-06T18:27:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mllofriu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Robotic Operating System =&lt;br /&gt;
&lt;br /&gt;
Robotic Operating System (ROS) es una plataforma OpenSource de desarrollo de software de robótica (www.ros.org). Esta plataforma ofrece servicios como comunicación entre procesos, instalación de dependencias y abstracción del hardware. Además, cuenta con bibliotecas de alto nivel que permiten realizar tareas complejas como manejo de sistemas de coordenadas, procesamiento de imágenes, integración de movimientos y visualización 3d.&lt;br /&gt;
&lt;br /&gt;
La ejecución de ROS en la plataforma Butiá brindaría herramientas necesarias para utilizar esta plataforma en contextos de educación terciaria.&lt;br /&gt;
&lt;br /&gt;
= Descripción del proyecto =&lt;br /&gt;
&lt;br /&gt;
El proyecto consta de realizar los pasos necesarios para ejecutar ROS en la plataforma Butiá. Esto incluye&lt;br /&gt;
* Escribir o adaptar drivers que publiquen la información de los sensores y motores como &amp;quot;topics&amp;quot; de ROS.&lt;br /&gt;
* Instalar bibliotecas necesarias para que ROS pueda funcionar correctamente&lt;br /&gt;
* Generar un modelo URDF del robot que describa sus dimensiones y configuración espacial&lt;br /&gt;
&lt;br /&gt;
Una documentación detallada con referencias es esencial para que el proyecto cumpla su propósito.&lt;/div&gt;</summary>
		<author><name>Mllofriu</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Rostia&amp;diff=4018</id>
		<title>Rostia</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Rostia&amp;diff=4018"/>
				<updated>2013-02-06T18:25:37Z</updated>
		
		<summary type="html">&lt;p&gt;Mllofriu: Página creada con '= Robotic Operating System =  Robotic Operating System (ROS) es una plataforma OpenSource de desarrollo de software de robótica (www.ros.org). Esta plataforma ofrece servicios ...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Robotic Operating System =&lt;br /&gt;
&lt;br /&gt;
Robotic Operating System (ROS) es una plataforma OpenSource de desarrollo de software de robótica (www.ros.org). Esta plataforma ofrece servicios como comunicación entre procesos, instalación de dependencias y abstracción del hardware. Además, cuenta con bibliotecas de alto nivel que permiten realizar tareas complejas como manejo de sistemas de coordenadas, procesamiento de imágenes, integración de movimientos y visualización 3d.&lt;br /&gt;
&lt;br /&gt;
La ejecución de ROS en la plataforma Butiá brindaría herramientas necesarias para utilizar esta plataforma en contextos de educación terciaria.&lt;br /&gt;
&lt;br /&gt;
= Descripción del proyecto =&lt;br /&gt;
&lt;br /&gt;
El proyecto consta de realizar los pasos necesarios para ejecutar ROS en la plataforma Butiá. Esto incluye&lt;br /&gt;
 * Escribir o adaptar drivers que publiquen la información de los sensores y motores como &amp;quot;topics&amp;quot; de ROS.&lt;br /&gt;
 * Instalar bibliotecas necesarias para que ROS pueda funcionar correctamente&lt;br /&gt;
 * Generar un modelo URDF del robot que describa sus dimensiones y configuración espacial&lt;br /&gt;
&lt;br /&gt;
Una documentación detallada con referencias es esencial para que el proyecto cumpla su propósito.&lt;/div&gt;</summary>
		<author><name>Mllofriu</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Proyectos_abiertos&amp;diff=4017</id>
		<title>Proyectos abiertos</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Proyectos_abiertos&amp;diff=4017"/>
				<updated>2013-02-06T18:14:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mllofriu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[scratch_butia_2011|Extender a Scratch]]&lt;br /&gt;
&lt;br /&gt;
* [[etoys_butia_2011|Extender a Etoys]]&lt;br /&gt;
&lt;br /&gt;
* [[ide_butia_2011|IDE de programación butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[simulador_butia_2011|Simulador para butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[actividad_medir_butia_2011|Modificar la actividad medir para interactuar con los sensores del butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[actividad_actualizar_firmware_butia_2011|Actividad: Actualizar el firmware butiá]] &lt;br /&gt;
&lt;br /&gt;
* [[actividad_reporte_incidencia_butia_2011|Actividad: Reportar incidencias y bugs]]&lt;br /&gt;
&lt;br /&gt;
* [[firmware_detector_cortos_butia_2011|Firmware: Detector cortos en el Shield v1.0]]&lt;br /&gt;
&lt;br /&gt;
* [[electro_kit_sensores_caseros_butia_2011|Eléctrica: Desarrollo de sensores utilizando materiales caseros para Butia v1.0]]&lt;br /&gt;
&lt;br /&gt;
* [[firmware_hot_plug_butia_2011|Firmware + Software: soporte HotPlug]]&lt;br /&gt;
&lt;br /&gt;
* [[tortugarte_roomba_butia_2011|Paleta roomba tortugarte]]&lt;br /&gt;
&lt;br /&gt;
* [[tortugarte_bloque_enviar_recibir_butia|Bloque enviar_butia recibir_butia para tortugarte]]&lt;br /&gt;
&lt;br /&gt;
* [[firmware_avanzar_motor_x_grados_butia_2011|Firmware + Software + Tortugarte: avanzar motores por grados]]&lt;br /&gt;
&lt;br /&gt;
* [[plugin_tortugarte_reconocedor_habla_2011|Control del robot mediante el habla]]&lt;br /&gt;
&lt;br /&gt;
* [[tortugarte_ejemplos_paleta_sensores_butia_2011|Tortugarte: Ejemplos de programas, posibilidades tortugarte]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_todo_terreno_2011|Mecánica: Estructura para todo terreno en butia]]&lt;br /&gt;
&lt;br /&gt;
* [[chassis_butia_2011|Mecánica: Construcción y diseño de chasis en acrílico/madera/chapa/etc, piezas, ruedas]]&lt;br /&gt;
&lt;br /&gt;
* [[pinza_butia|Mecánica: Construcción de pinza para Butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[porta_lápiz_butia|Mecánica: Construcción de pinza porta lápiz para Butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[api_java_butia_2011|API Java + pack de comportamientos]]&lt;br /&gt;
&lt;br /&gt;
* [[integrar_sensores_lego_butia_2011|Integrar sensores y actuadores LEGO al Butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[driver_potencia_butia_2011|Incluir el driver de potencia]]&lt;br /&gt;
&lt;br /&gt;
* [[paleta_ax12_tortugarte_butia_2011|Paleta Butiá/AX12 para Tortugarte]]&lt;br /&gt;
&lt;br /&gt;
* [[openRAVE_butia_2011|Butiá OpenRAVE]]&lt;br /&gt;
&lt;br /&gt;
* [[asignaturas_2011|Apoyo a asignaturas]]&lt;br /&gt;
&lt;br /&gt;
* [[urbi_butia_2011|Butiá Urbi]]&lt;br /&gt;
&lt;br /&gt;
* [[sensores_jack_micro_butia_2011|Integrar sensores utilizando el jack del micrófono al Butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[ejemplos_butialo_2011|Crear ejemplos de aplicaciones en el entorno Butialo]]&lt;br /&gt;
&lt;br /&gt;
* [[ollo_butia_2011|Integración con kit ollo]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_chat_2011|Butiá Chat]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_android_2011|Butia Android]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_bloque_medir|Butia bloque medir]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_prayer_stage|Butia compatibilidad prayer/stage]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_reconocimiento_marcas|Butia reconocimiento de marcas para navegación en TurtleBlocks]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_gps|Butia bloque para usar gps usb en TurtleBlocks]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_sensores_caseros|Butia haciendo sensores caseros para el Butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_xo_1.75|compatibilidad xo 1.75 para el Butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_visión_global|dar visión globar para el Butiá mediante plugin de sumo implementado y doraemon]]&lt;br /&gt;
&lt;br /&gt;
* [[butialo_con_soporte_python|dar soporte de python a butialo]]&lt;br /&gt;
&lt;br /&gt;
* [[hablando_con_butia|integrar hablando con sara para usar con el robot butiá]]&lt;br /&gt;
&lt;br /&gt;
* [[beagleboard_con_butia|butia sin micro basado en beagleboard y sugar para beagleboard]]&lt;br /&gt;
&lt;br /&gt;
* [[usb4all_sobre_pinguino|estudiar pinguino y prototipar un firmware básico para le butia]]&lt;br /&gt;
&lt;br /&gt;
* [[actividad_telepresencia_butia_xo_1.75|telepresencia utilizando acelerometro y streaming de la cámara]]&lt;br /&gt;
&lt;br /&gt;
* [[butia_kinect|Paleta tortugarte para el sensor kinect]]&lt;br /&gt;
&lt;br /&gt;
* [[followme2|Mejoras para el plugin follow me]]&lt;br /&gt;
&lt;br /&gt;
* [[rostia|Integración de ROS a la plataforma Butiá]]&lt;/div&gt;</summary>
		<author><name>Mllofriu</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Butia_reconocimiento_marcas&amp;diff=4006</id>
		<title>Butia reconocimiento marcas</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Butia_reconocimiento_marcas&amp;diff=4006"/>
				<updated>2013-02-05T18:05:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mllofriu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Integrantes ==&lt;br /&gt;
* Nicolás Fúrquez&lt;br /&gt;
* Rafael Sisto&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
* Utilizando [http://www.hitl.washington.edu/artoolkit/ ARToolKit] construir un plugin para Tortugarte/Tortublocks que permita reconocer las marcas. Esto puede ser utilizado para que el robot se localice y navegue en un entorno.&lt;br /&gt;
&lt;br /&gt;
Ejemplos de marcas:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:StopMark.png]] [[Archivo:YieldMark.png]]&lt;br /&gt;
&lt;br /&gt;
Una de las cosas que nos permite la librería (ARToolKit) es que las marcas no necesariamente tienen que estar en color, permitiendo así imprimirlas en cualquier impresora siempre y cuando se mantenga el tamaño.&lt;br /&gt;
&lt;br /&gt;
== Documentación de la solución ==&lt;br /&gt;
Se desarrolló un api que obtiene la información almacenada de las marcas y mediante la ayuda de ARToolKit se detectan las mismas en las capturas de la cámara.&lt;br /&gt;
&lt;br /&gt;
El código fuente e instrucciones de instalación se pueden encontrar en el repositorio utilizado: &lt;br /&gt;
[https://github.com/rsisto/multiPatternRecognition multiPatternRecognition]&lt;br /&gt;
&lt;br /&gt;
=== Diagrama de componentes ===&lt;br /&gt;
En el siguiente diagrama pueden visualizarse los componentes y su interacción. pattern_detection funciona como plugin de TurtleBlocks, que a su vez utiliza la librería multiPatternDetection (a través de un binding de python a C). Esta última utiliza funciones de ARToolKit para la detección de marcas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arq_pattern_detection.png|centro|500px|Arquitectura de detección de patrones con ARToolKit]]&lt;br /&gt;
&lt;br /&gt;
=== Paleta reconocimiento de marcas ===&lt;br /&gt;
Paleta:&lt;br /&gt;
[[Archivo:Paleta_reco_marcas.png]]&lt;br /&gt;
La paleta posee botones fijos que son:&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Viendo Señal&amp;quot;''':Este icono recibe como parámetro un icono de señal (imagen o texto), y nos dice si la cámara lo esta viendo o no.&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Distancia Señal&amp;quot;''':Este icono devuelve la distancia trigonométrica desde la cámara hasta el centro de la señal, la magnitud utilizada son mm. &lt;br /&gt;
&lt;br /&gt;
El resto se autogenera leyendo el archivo pattern_detection/library/multiPatternDetection/Data/object_data, en este archivo están todos las marcas que se pueden ver con la paleta, uno de los datos que se ponen dentro es un identificador (nombre) que al iniciarse se lee y luego se busca en la carpeta pattern_detection/images/ si tiene el icono correspondiente, si está pone la imagen como aparece en la paleta, sino lo encuentra generara el icono pero con el texto del nombre. En la sección [[Butia_reconocimiento_marcas]] se puede ver las características de estos iconos.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo se puede ver como se utiliza, en el código de la izquierda si la cámara ve, la señal de curva, moverá 100 la tortuga hacia adelante y luego girara a la derecha un angulo aleatorio entre -30 y 30.&lt;br /&gt;
En el ejemplo de la derecha si ve la señal de ''Contramano'' se movera hacia atras y cambiara la pluma a rojo, sino cambiara a azul y se movera 100 hacia adelante&lt;br /&gt;
&lt;br /&gt;
[[Archivo:reconociendo_seniales_Ejemplo.png]]&lt;br /&gt;
&lt;br /&gt;
==== Ejemplos usando la paleta y Butia ====&lt;br /&gt;
Usando la marca de ''Pare'', el Butia detiene la marcha. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:ButiaSenialesEjemplo1.png|400px|left]] &amp;lt;videoflash&amp;gt;vF9ZhQYIwVg&amp;lt;/videoflash&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Usando la marca de ''Seda el paso'', el Butia disminuye la velocidad. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:ButiaSenialesEjemplo2.png|350px|left]]&amp;lt;videoflash&amp;gt;Mbs5GT8vuIM&amp;lt;/videoflash&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Usando la marca de ''Contramano'', el Butia gira hasta no ver la marca y luego sigue adelante. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:ButiaSenialesEjemplo3.png|300px|left]] &amp;lt;videoflash&amp;gt;m04N9YJ7qd4&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Desafíos y problemas encontrados ===&lt;br /&gt;
* La librería ARToolKit requiere la librería libglut.so.3 para funcionar, sin embargo en las XO no es posible instalar la librería en carpetas del sistema. Esto causa que al intentar cargar la librería con C types en python se devuelva el error ''OSError: libglut.so.3: cannot open shared object file: No such file or directory''. Para evitar este problema, se adjunta la librería en la carpeta del plugin y se carga en python previo a cargar la librería de ARToolkit con el siguiente comando: ''cdll.LoadLibrary(&amp;quot;lib/libglut.so.3&amp;quot;)''.&lt;br /&gt;
&lt;br /&gt;
== Instalación de plugin ==&lt;br /&gt;
===Compilar archivos===&lt;br /&gt;
Son necesarias los siguientes paquetes debian para poder compilar:&lt;br /&gt;
libglib2.0-dev, freeglut3-dev, libgstreamer0.10-dev, libxi-dev&lt;br /&gt;
&lt;br /&gt;
===Ejecución===&lt;br /&gt;
Para la ejecución del plugin es necesario instalar el paquete gst-plugins-good.&lt;br /&gt;
&lt;br /&gt;
Si se ejecuta en una máquina configurada en idioma inglés, es necesario substituir &amp;quot;0,0&amp;quot; por &amp;quot;0.0&amp;quot; en el archivo turtle_art_plugin/pattern_recognition/library/multiPatternRecognition/Data/object_data.&lt;br /&gt;
&lt;br /&gt;
===Correr script de prueba===&lt;br /&gt;
Opcionalmente, es posible correr pruebas para asegurarse que la detección de marcas está funcionando correctamente.&lt;br /&gt;
&lt;br /&gt;
En la carpeta turtle_art_plugin/pattern_recognition/doc del código butiá, hay un pdf con la marca NotEnter. Imprimir el pdf.&lt;br /&gt;
&lt;br /&gt;
Luego, ejecutar turtle_art_plugin/pattern_recognition/library/apiTestDetectMarkers.py. Al posicionar la marca impresa frente a la cámara, debería imprimirse un número en consola, que representa la distancia a la marca detectada.&lt;br /&gt;
&lt;br /&gt;
== Generación de nuevas marcas ==&lt;br /&gt;
TODO: Generación de pdf con marca para imprimir.&lt;br /&gt;
&lt;br /&gt;
Luego de generados los archivos para imprimir, se deberán generar los archivos de patrones. &lt;br /&gt;
Para realizar esto:&lt;br /&gt;
# Acceder al [[Generador de patrones para plugin Reconocimento de marcas]]&lt;br /&gt;
# Seleccionar el origen de donde se generará el patrón. Si se utiliza la cámara, seleccionar ''Camera Mode''. Si se carga la imagen del patrón (incluyendo el recuadro negro) desde un archivo, seleccionar ''Load marker Image''&lt;br /&gt;
# Seleccionar tamaño de patrón, por ejemplo, si el patrón (incluyendo el recuadro negro) mide 16x16 cm, seleccionar ''16x16''&lt;br /&gt;
# Seleccionar porcentaje del recuadro que representa el patrón. Por ejemplo, si todo el recuadro mide 16cm y el borde negro mide 2cm, el patrón mide 12x12cm, por lo tanto 75%. &lt;br /&gt;
# Una vez que se vea un recuadro rojo alrededor de la marca con el rectángulo negro, presionar el botón ''Get Pattern''. Aparecerá un recuadro con los patrones reconocidos, navegar con el botón ''next'' al deseado y presionar ''Save current''. Darle un nombre al archivo en minúsculas, con la extensión '''.patt''', por ejemplo mimarca.patt&lt;br /&gt;
&lt;br /&gt;
En este punto se tiene el archivo .patt generado y como último paso se debe configurar el plugin para poder comenzar a utilizarlo. Para esto:&lt;br /&gt;
# Copiar archivo generado (extensión .patt) a la carpeta ''pattern_detection/library/multiPatternDetection/Data/''&lt;br /&gt;
# Editar el archivo '''object_data''' en esa misma carpeta:&lt;br /&gt;
## Incrementar en 1 el número que aparece al principio (Cantidad de marcas a ser detectados). &lt;br /&gt;
## Agregar a continuación en el mismo archivo las líneas correspondientes al patrón, de la siguiente manera:&lt;br /&gt;
### Una línea representando el id de la marca&lt;br /&gt;
### Línea con el nombre de archivo .patt generado anteriormente&lt;br /&gt;
### Línea conteniendo tamaño en milímetros de la marca&lt;br /&gt;
### Línea conteniendo 2 decimales, separados por 1 espacio representando el punto medio de la marca.&lt;br /&gt;
## Guardar el archivo y cerrar.&lt;br /&gt;
# La marca está lista para ser utilizada y aparecerá en la paleta de Tortugarte luego de reiniciar. Por defecto aparecerá un texto con el id de la marca, pero es posible agregar un ícono, generando 1 imagen en formato svg y colocándola en la carpeta '''images/'''. Por ejemplo, para la marca con id '''Stop''' dentro del archivo  '''object_data''', se debe generar 2 imágenes, una nombrándola como '''Stop'''small.svg de 40x40px y creando una copia de la misma con el nombre '''Stop'''off.svg pero de 70x70px.&lt;br /&gt;
&lt;br /&gt;
=== Actividad para agregar marcas ===&lt;br /&gt;
&lt;br /&gt;
Se creo una actividad por la cual se puede agregar o quitar marcas, de una manera mas amena al usuario (docentes o educandos), se puede descargar la misma desde (Agregar link), &lt;br /&gt;
La actividad se puede instalar sin tener el Plugin o Tortugarte/TortuBots, pero al abrirla avisa al usuario que no se encuentra alguno de estos elementos.&lt;br /&gt;
En la primer pestaña se puede ver una lista con los identificadores de las señales que están instaladas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:NewPattersSegundaPestaña.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si existe un icono asociado se muestra a la derecha al seleccionarlo, si no lo tiene se muestra un icono general.&lt;br /&gt;
TODO:Poner imagenes con ambos ejemplos&lt;br /&gt;
[[Archivo:NewPatternsListaConSeleccion.png]]&lt;br /&gt;
&lt;br /&gt;
En la segunda pestaña se encuentran los campos para poder agregar una señal, Identificador, tamaño, ruta al archivo .patt y como opcional la ruta al archivo .svg que servirá de icono en la paleta.&lt;br /&gt;
[[Archivo:NewPattersSegundaPestaña.png]]&lt;br /&gt;
&lt;br /&gt;
En esta pestaña se encuentra el link a la wiki que dice como generar el .patt&lt;br /&gt;
En el caso que se quiera poner una identificador de señal que ya exista, la actividad preguntara si se quiere sobrescribir.&lt;br /&gt;
&lt;br /&gt;
== Trabajos a Futuro ==&lt;br /&gt;
* '''Mayor versatilidad para marcas''': El reconocimiento de marcas con ARToolKit facilitó el desarrollo de la solución, ya que al ser utilizado en otras actividades en las terminales XO acortaba el tiempo del proyecto, ya que no se tuvo que hacer un análisis de factibilidad y se tenía la librería ya compilada para los mismos, además que la generación de patrones ya viene resuelta. Sin embargo, al utilizar este API, las marcas están limitadas a una forma cuadrada y que estén contenidas dentro de un recuadro negro. Para poder evitar estas limitantes se sugiere utilizar un API de más bajo nivel como OpenCV para poder reconocer otros tipos de marcas, como por ejemplo, personas, caras, objetos, etc.&lt;br /&gt;
* &amp;lt;strike&amp;gt;'''Bloque para obtener distancia a marca''': La librería creada en C actualiza el estado de las marcas cuando detecta la presencia de las mismas. Entre esa información, se encuentra una matriz que tiene la posición de la marca respecto a la cámara. Se sugiere que con esta información se cree un nuevo bloque '''Distancia a la marca''', similar al detectar marca, que reciba como parámetro el id de marca y devuelva la distancia a la marca.&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt; '''Internacionalización''': La paleta desarrollada se realizó en idioma español, pero sería recomendable internacionalizar las etiquetas para que pueda ser localizado a otros idiomas de TurtleArt, por lo menos en inglés.&amp;lt;/strike&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mllofriu</name></author>	</entry>

	<entry>
		<id>http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Butia_reconocimiento_marcas&amp;diff=4005</id>
		<title>Butia reconocimiento marcas</title>
		<link rel="alternate" type="text/html" href="http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Butia_reconocimiento_marcas&amp;diff=4005"/>
				<updated>2013-02-05T17:33:47Z</updated>
		
		<summary type="html">&lt;p&gt;Mllofriu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Integrantes ==&lt;br /&gt;
* Nicolás Fúrquez&lt;br /&gt;
* Rafael Sisto&lt;br /&gt;
&lt;br /&gt;
== Objetivos ==&lt;br /&gt;
* Utilizando [http://www.hitl.washington.edu/artoolkit/ ARToolKit] construir un plugin para Tortugarte/Tortublocks que permita reconocer las marcas. Esto puede ser utilizado para que el robot se localice y navegue en un entorno.&lt;br /&gt;
&lt;br /&gt;
Ejemplos de marcas:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:StopMark.png]] [[Archivo:YieldMark.png]]&lt;br /&gt;
&lt;br /&gt;
Una de las cosas que nos permite la librería (ARToolKit) es que las marcas no necesariamente tienen que estar en color, permitiendo así imprimirlas en cualquier impresora siempre y cuando se mantenga el tamaño.&lt;br /&gt;
&lt;br /&gt;
== Documentación de la solución ==&lt;br /&gt;
Se desarrolló un api que obtiene la información almacenada de las marcas y mediante la ayuda de ARToolKit se detectan las mismas en las capturas de la cámara.&lt;br /&gt;
&lt;br /&gt;
El código fuente e instrucciones de instalación se pueden encontrar en el repositorio utilizado: &lt;br /&gt;
[https://github.com/rsisto/multiPatternRecognition multiPatternRecognition]&lt;br /&gt;
&lt;br /&gt;
=== Diagrama de componentes ===&lt;br /&gt;
En el siguiente diagrama pueden visualizarse los componentes y su interacción. pattern_detection funciona como plugin de TurtleBlocks, que a su vez utiliza la librería multiPatternDetection (a través de un binding de python a C). Esta última utiliza funciones de ARToolKit para la detección de marcas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Arq_pattern_detection.png|centro|500px|Arquitectura de detección de patrones con ARToolKit]]&lt;br /&gt;
&lt;br /&gt;
=== Paleta reconocimiento de marcas ===&lt;br /&gt;
Paleta:&lt;br /&gt;
[[Archivo:Paleta_reco_marcas.png]]&lt;br /&gt;
La paleta posee botones fijos que son:&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Viendo Señal&amp;quot;''':Este icono recibe como parámetro un icono de señal (imagen o texto), y nos dice si la cámara lo esta viendo o no.&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;Distancia Señal&amp;quot;''':Este icono devuelve la distancia trigonométrica desde la cámara hasta el centro de la señal, la magnitud utilizada son mm. &lt;br /&gt;
&lt;br /&gt;
El resto se autogenera leyendo el archivo pattern_detection/library/multiPatternDetection/Data/object_data, en este archivo están todos las marcas que se pueden ver con la paleta, uno de los datos que se ponen dentro es un identificador (nombre) que al iniciarse se lee y luego se busca en la carpeta pattern_detection/images/ si tiene el icono correspondiente, si está pone la imagen como aparece en la paleta, sino lo encuentra generara el icono pero con el texto del nombre. En la sección [[Butia_reconocimiento_marcas]] se puede ver las características de estos iconos.&lt;br /&gt;
&lt;br /&gt;
En este ejemplo se puede ver como se utiliza, en el código de la izquierda si la cámara ve, la señal de curva, moverá 100 la tortuga hacia adelante y luego girara a la derecha un angulo aleatorio entre -30 y 30.&lt;br /&gt;
En el ejemplo de la derecha si ve la señal de ''Contramano'' se movera hacia atras y cambiara la pluma a rojo, sino cambiara a azul y se movera 100 hacia adelante&lt;br /&gt;
&lt;br /&gt;
[[Archivo:reconociendo_seniales_Ejemplo.png]]&lt;br /&gt;
&lt;br /&gt;
==== Ejemplos usando la paleta y Butia ====&lt;br /&gt;
Usando la marca de ''Pare'', el Butia detiene la marcha. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:ButiaSenialesEjemplo1.png|400px|left]] &amp;lt;videoflash&amp;gt;vF9ZhQYIwVg&amp;lt;/videoflash&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Usando la marca de ''Seda el paso'', el Butia disminuye la velocidad. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:ButiaSenialesEjemplo2.png|350px|left]]&amp;lt;videoflash&amp;gt;Mbs5GT8vuIM&amp;lt;/videoflash&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
Usando la marca de ''Contramano'', el Butia gira hasta no ver la marca y luego sigue adelante. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Archivo:ButiaSenialesEjemplo3.png|300px|left]] &amp;lt;videoflash&amp;gt;m04N9YJ7qd4&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Desafíos y problemas encontrados ===&lt;br /&gt;
* La librería ARToolKit requiere la librería libglut.so.3 para funcionar, sin embargo en las XO no es posible instalar la librería en carpetas del sistema. Esto causa que al intentar cargar la librería con C types en python se devuelva el error ''OSError: libglut.so.3: cannot open shared object file: No such file or directory''. Para evitar este problema, se adjunta la librería en la carpeta del plugin y se carga en python previo a cargar la librería de ARToolkit con el siguiente comando: ''cdll.LoadLibrary(&amp;quot;lib/libglut.so.3&amp;quot;)''.&lt;br /&gt;
&lt;br /&gt;
== Instalación de plugin ==&lt;br /&gt;
===Compilar archivos===&lt;br /&gt;
Son necesarias los siguientes paquetes debian para poder compilar:&lt;br /&gt;
libglib2.0-dev, freeglut3-dev, libgstreamer0.10-dev, libxi-dev&lt;br /&gt;
&lt;br /&gt;
== Generación de nuevas marcas ==&lt;br /&gt;
TODO: Generación de pdf con marca para imprimir.&lt;br /&gt;
&lt;br /&gt;
Luego de generados los archivos para imprimir, se deberán generar los archivos de patrones. &lt;br /&gt;
Para realizar esto:&lt;br /&gt;
# Acceder al [[Generador de patrones para plugin Reconocimento de marcas]]&lt;br /&gt;
# Seleccionar el origen de donde se generará el patrón. Si se utiliza la cámara, seleccionar ''Camera Mode''. Si se carga la imagen del patrón (incluyendo el recuadro negro) desde un archivo, seleccionar ''Load marker Image''&lt;br /&gt;
# Seleccionar tamaño de patrón, por ejemplo, si el patrón (incluyendo el recuadro negro) mide 16x16 cm, seleccionar ''16x16''&lt;br /&gt;
# Seleccionar porcentaje del recuadro que representa el patrón. Por ejemplo, si todo el recuadro mide 16cm y el borde negro mide 2cm, el patrón mide 12x12cm, por lo tanto 75%. &lt;br /&gt;
# Una vez que se vea un recuadro rojo alrededor de la marca con el rectángulo negro, presionar el botón ''Get Pattern''. Aparecerá un recuadro con los patrones reconocidos, navegar con el botón ''next'' al deseado y presionar ''Save current''. Darle un nombre al archivo en minúsculas, con la extensión '''.patt''', por ejemplo mimarca.patt&lt;br /&gt;
&lt;br /&gt;
En este punto se tiene el archivo .patt generado y como último paso se debe configurar el plugin para poder comenzar a utilizarlo. Para esto:&lt;br /&gt;
# Copiar archivo generado (extensión .patt) a la carpeta ''pattern_detection/library/multiPatternDetection/Data/''&lt;br /&gt;
# Editar el archivo '''object_data''' en esa misma carpeta:&lt;br /&gt;
## Incrementar en 1 el número que aparece al principio (Cantidad de marcas a ser detectados). &lt;br /&gt;
## Agregar a continuación en el mismo archivo las líneas correspondientes al patrón, de la siguiente manera:&lt;br /&gt;
### Una línea representando el id de la marca&lt;br /&gt;
### Línea con el nombre de archivo .patt generado anteriormente&lt;br /&gt;
### Línea conteniendo tamaño en milímetros de la marca&lt;br /&gt;
### Línea conteniendo 2 decimales, separados por 1 espacio representando el punto medio de la marca.&lt;br /&gt;
## Guardar el archivo y cerrar.&lt;br /&gt;
# La marca está lista para ser utilizada y aparecerá en la paleta de Tortugarte luego de reiniciar. Por defecto aparecerá un texto con el id de la marca, pero es posible agregar un ícono, generando 1 imagen en formato svg y colocándola en la carpeta '''images/'''. Por ejemplo, para la marca con id '''Stop''' dentro del archivo  '''object_data''', se debe generar 2 imágenes, una nombrándola como '''Stop'''small.svg de 40x40px y creando una copia de la misma con el nombre '''Stop'''off.svg pero de 70x70px.&lt;br /&gt;
&lt;br /&gt;
=== Actividad para agregar marcas ===&lt;br /&gt;
&lt;br /&gt;
Se creo una actividad por la cual se puede agregar o quitar marcas, de una manera mas amena al usuario (docentes o educandos), se puede descargar la misma desde (Agregar link), &lt;br /&gt;
La actividad se puede instalar sin tener el Plugin o Tortugarte/TortuBots, pero al abrirla avisa al usuario que no se encuentra alguno de estos elementos.&lt;br /&gt;
En la primer pestaña se puede ver una lista con los identificadores de las señales que están instaladas.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:NewPattersSegundaPestaña.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si existe un icono asociado se muestra a la derecha al seleccionarlo, si no lo tiene se muestra un icono general.&lt;br /&gt;
TODO:Poner imagenes con ambos ejemplos&lt;br /&gt;
[[Archivo:NewPatternsListaConSeleccion.png]]&lt;br /&gt;
&lt;br /&gt;
En la segunda pestaña se encuentran los campos para poder agregar una señal, Identificador, tamaño, ruta al archivo .patt y como opcional la ruta al archivo .svg que servirá de icono en la paleta.&lt;br /&gt;
[[Archivo:NewPattersSegundaPestaña.png]]&lt;br /&gt;
&lt;br /&gt;
En esta pestaña se encuentra el link a la wiki que dice como generar el .patt&lt;br /&gt;
En el caso que se quiera poner una identificador de señal que ya exista, la actividad preguntara si se quiere sobrescribir.&lt;br /&gt;
&lt;br /&gt;
== Trabajos a Futuro ==&lt;br /&gt;
* '''Mayor versatilidad para marcas''': El reconocimiento de marcas con ARToolKit facilitó el desarrollo de la solución, ya que al ser utilizado en otras actividades en las terminales XO acortaba el tiempo del proyecto, ya que no se tuvo que hacer un análisis de factibilidad y se tenía la librería ya compilada para los mismos, además que la generación de patrones ya viene resuelta. Sin embargo, al utilizar este API, las marcas están limitadas a una forma cuadrada y que estén contenidas dentro de un recuadro negro. Para poder evitar estas limitantes se sugiere utilizar un API de más bajo nivel como OpenCV para poder reconocer otros tipos de marcas, como por ejemplo, personas, caras, objetos, etc.&lt;br /&gt;
* &amp;lt;strike&amp;gt;'''Bloque para obtener distancia a marca''': La librería creada en C actualiza el estado de las marcas cuando detecta la presencia de las mismas. Entre esa información, se encuentra una matriz que tiene la posición de la marca respecto a la cámara. Se sugiere que con esta información se cree un nuevo bloque '''Distancia a la marca''', similar al detectar marca, que reciba como parámetro el id de marca y devuelva la distancia a la marca.&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt; '''Internacionalización''': La paleta desarrollada se realizó en idioma español, pero sería recomendable internacionalizar las etiquetas para que pueda ser localizado a otros idiomas de TurtleArt, por lo menos en inglés.&amp;lt;/strike&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mllofriu</name></author>	</entry>

	</feed>