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

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Logo_oficial&amp;diff=4720</id>
		<title>Logo oficial</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Logo_oficial&amp;diff=4720"/>
				<updated>2013-12-02T13:12:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: Página creada con 'Archivo:Logo_of.jpg'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Archivo:Logo_of.jpg]]&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Logo_of.jpg&amp;diff=4719</id>
		<title>Archivo:Logo of.jpg</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Logo_of.jpg&amp;diff=4719"/>
				<updated>2013-12-02T13:12:27Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Wiki_Buti%C3%A1&amp;diff=4718</id>
		<title>Wiki Butiá</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Wiki_Buti%C3%A1&amp;diff=4718"/>
				<updated>2013-12-02T13:11:01Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* ButiArte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Proyecto Butiá ==&lt;br /&gt;
&lt;br /&gt;
Este proyecto plantea como objetivo crear una plataforma simple, la cual ponga al alcance de estudiantes escolares o liceales las herramientas necesarias para permitirles interiorizarse con la programación de  comportamientos para robots.&lt;br /&gt;
El proyecto Butiá trata de ampliar las capacidades sensoriales y de actuación de la computadora XO del proyecto OLPC, transformandola en una plataforma robótica móvil.&lt;br /&gt;
Actualmente la implementación 1.0 del proyecto está siendo utilizado en formato de kit, distribuido a 28 liceos públicos del Uruguay, con un set de sensores y piezas que permiten cambiar la ubicación de los sensores en la plataforma móvil donde se coloca la computadora XO.&amp;lt;br&amp;gt;&lt;br /&gt;
A su vez el proyecto Butiá fue desarrollado teniendo en mente el hecho que agregar nuevos sensores o actuadores a la plataforma sea muy sencillo, esto abre la posibilidad a que usuarios interesados con el hardware puedan implementar fácilmente sus propios sensores y actuadores. Incluso el [http://es.wikipedia.org/wiki/Dise%C3%B1o_industrial diseño industrial] del robot es abierto lo cual permite realizarlo con materiales reciclados o de bajo costo.&lt;br /&gt;
&lt;br /&gt;
== Desarrollo ==&lt;br /&gt;
&lt;br /&gt;
La plataforma Butiá esta liberada como software libre a la comunidad, tu puedes contribuir con el proyecto como desarrollador uniéndote en [http://sourceforge.net/projects/butia/ Proyecto Butiá en SourceForge] &amp;lt;br/&amp;gt;&lt;br /&gt;
El código fuente del software (plugins, toribio, tortubots, etc) está versionado bajo sistema de control [http://git-scm.com/ GIT], para saber más vea [[Git Butia]].&amp;lt;br/&amp;gt;&lt;br /&gt;
El código de firmware y PCBs esta versionado bajo sistema de control [http://git-scm.com/ GIT], en el git de USB4all [http://sourceforge.net/projects/usb4all/ USB4all en SourceForge] &amp;lt;br/&amp;gt;&lt;br /&gt;
Actualmente estamos trabajando en una nueva placa ([[usb4butia|USB4butia]]) para el [[Butia2|Butiá 2.0]] que busca bajar costos, ser más robusto al permitir conectar dispositivos y hacer más simple la construcción de la placa de E/S al utilizar la plataforma [[usb4all|USB4all]]. &amp;lt;br/&amp;gt;&lt;br /&gt;
Se puede participar a través de la lista de correo de desarrollo [https://www.fing.edu.uy/mailman/listinfo/butia-devel-l butiá-devel-l], también puede ver el [https://www.fing.edu.uy/pipermail/butia-devel-l/ historial] de la misma. &amp;lt;br/&amp;gt;&lt;br /&gt;
También puede participar de las reuniones Butiá, las mismas son los días '''Jueves a las 18hs en el Laboratorio de Robótica'''.&amp;lt;br/&amp;gt;&lt;br /&gt;
Puede ver el desarrollo de las reuniones en [[Actas Reuniones Butia]]. &amp;lt;br/&amp;gt; &lt;br /&gt;
Propuestas de discusiones para las reuniones [[Discusiones para las reuniones]]. &amp;lt;br/&amp;gt;&lt;br /&gt;
Este proyecto se realiza con el apoyo de [http://www.antel.com.uy ANTel].&lt;br /&gt;
&lt;br /&gt;
== Construcción ==&lt;br /&gt;
&lt;br /&gt;
* [[construcción_Butiá_V1.0|Construyendo un Robot Butiáv1.0 paso a paso]]&lt;br /&gt;
* [[construcción_Butiá_V1.8|Construyendo un Robot Butiáv1.8 paso a paso]]&lt;br /&gt;
* [[construcción_Butiá_V2.0|Construyendo un Robot Butiáv2.0 paso a paso]]&lt;br /&gt;
* [[flashearIdAX12|Como flashear los motores AX12]]&lt;br /&gt;
* [[Motores|Información general sobre motores]]&lt;br /&gt;
* [[Otros Materiales|Butiá V2.0 en madera]]&lt;br /&gt;
&lt;br /&gt;
== Lenguajes de programación ==&lt;br /&gt;
&lt;br /&gt;
El Robot butiá puede controlarse fácilmente desde cualquier [http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n lenguaje de programación] con soporte de conexiones [http://es.wikipedia.org/wiki/TCP/IP TCP/IP]. De todas maneras damos soporte para algunas plataformas concretas mediante [http://es.wikipedia.org/wiki/Plugin plugins], [http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones API's] o [http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado IDEs]. Algunos ejemplos son:&amp;lt;br&amp;gt;&lt;br /&gt;
[[TortuBots]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Butialo]] (Lua)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Python]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tutoriales ==&lt;br /&gt;
&lt;br /&gt;
En esta sección encontrarás información de como programar el comportamiento del robot Butiá.&lt;br /&gt;
&lt;br /&gt;
* [[Ejemplo_recibir_ordenes_con_aplausos| Cómo controlar el robot Butiá mediante aplausos]]&lt;br /&gt;
* [[tortugarte_variables|Como almacenar los valores leídos de los sensores utilizando TortugArte con Butiá]]&lt;br /&gt;
* [[Evitar_obstaculos|Como evitar obstaculos utilizando TortugArte con Butiá]]&lt;br /&gt;
* [[Evitar_caida|Como evitar caer de una mesa]]&lt;br /&gt;
* [[Ejemplo_seguidor_de_líneas_sencillo|Como hacer un seguidor de líneas sencillo]]&lt;br /&gt;
* [[Ejemplo_seguidor_de_líneas|Como hacer un seguidor de líneas avanzado]]&lt;br /&gt;
* [[Ejemplo_sumo|Como hacer un luchador de Sumo]]&lt;br /&gt;
* [[Transformando_a_cms_el_valor_del_sensor_de_distancia|Transformando a centímetros la salida del sensor de distancia]]&lt;br /&gt;
* [[Butiá_que_habla|Butiá que habla]]&lt;br /&gt;
* [[Modularizando|Como modularizar un programa en Tortugarte]]&lt;br /&gt;
* [[video_tutoriales|Video Tutoriales]]&lt;br /&gt;
* [[Preguntas_frecuentes|Preguntas Frecuentes]]&lt;br /&gt;
* [[FollowMe|Utilizar plugin FollowMe]]&lt;br /&gt;
* [[USB4butiá| Cómo construir una placa USB4Butià]]&lt;br /&gt;
* [[Ejemplos_de_Aplicaciones_en_Butialo|Ejemplos de Lua en Butialo]]&lt;br /&gt;
* [[HackPoints|Como utilizar los HackPoints]]&lt;br /&gt;
* [[Medir voltaje y resistencia | Como medir voltaje y resistencia]]&lt;br /&gt;
* [[Tutorial_de_armado_de_butiá_con_motores_de_corriente_Continua | Tutorial de armado de butiá con motores de corriente Continua]]&lt;br /&gt;
&lt;br /&gt;
== Actividades para realizar con el robot relacionadas con otras ciencias ==&lt;br /&gt;
&lt;br /&gt;
[[Biología y Butiá]]&lt;br /&gt;
&lt;br /&gt;
== ButiArte ==&lt;br /&gt;
&lt;br /&gt;
A puro arte &amp;lt;br&amp;gt;&lt;br /&gt;
[[remeras|Remeras]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cuadernolas Butiá y Sumo]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Logo oficial]]&lt;br /&gt;
&lt;br /&gt;
== Sumo.uy: Desafío aptos para Butiá en evento de SUMO Robótico ==&lt;br /&gt;
&lt;br /&gt;
Son numerosas las instituciones educativas que a nivel mundial desarrollan exposiciones robóticas.&amp;lt;br&amp;gt;&lt;br /&gt;
En nuestro país, la [http://www.fing.edu.uy Facultad de Ingeniería] de la [http://www.udelar.edu.uy Universidad de la República] es pionera. &amp;lt;br&amp;gt;&lt;br /&gt;
Desde 2004, año a año el evento [http://www.fing.edu.uy/sumo.uy sumo.uy] ha cumplido con éxito su misión: hacer que la sociedad sea partícipe, y no mero testigo, de los avances en robótica e inteligencia artificial.&amp;lt;br&amp;gt;&lt;br /&gt;
'''[http://www.fing.edu.uy/sumo.uy sumo.uy]''' ofrece un entorno abierto a todo público, donde universitarios y no universitarios, liceales, adultos y niños, uruguayos y extranjeros pueden interactuar, presentar sus trabajos y plantear sus inquietudes relacionadas con la temática del evento.&amp;lt;br&amp;gt;&lt;br /&gt;
En el marco de la edición 2013 de este evento se podrá participar con el robot Butiá en tres desafíos:&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/eventos/sumo.uy/Documentos/Desaf%C3%ADo%20Escolar_2013_v0.1.pdf Desafío Escolar]&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/eventos/sumo.uy/Documentos/Desaf%C3%ADo%20B%C3%A1sico_2013_v0.1.pdf Desafío Básico]&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/eventos/sumo.uy/Documentos/Desaf%C3%ADo_Avanzado_sumo.uy_2013.pdf_v0.1.pdf Desafío Avanzado]&lt;br /&gt;
&lt;br /&gt;
Para desafíos anteriores mire [[sumo.uy historial desafios Butiá| aquí]]&lt;br /&gt;
&lt;br /&gt;
==Sumo.uy: Experiencias desafíos Butiá==&lt;br /&gt;
&lt;br /&gt;
* Sumo.uy 2011 ( [[Sumo.uy_2011_Resumen_desafío_Butiá|español]] | [[Sumo.uy_2011_Summary_Butiá_challenge|ingles]] )&lt;br /&gt;
&lt;br /&gt;
== Curso Butiá: Robótica educativa ==&lt;br /&gt;
{{AP|Proyectos Butiá}}&lt;br /&gt;
En esta sección se mantiene un historial de proyectos que se realizan y/o fueron realizados en el curso.&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_abiertos|Proyectos abiertos para realizar en el marco del &amp;quot;Proyecto Butiá&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_electiva_butia_2013|Proyectos electiva Butiá 2013]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_electiva_butia_2012|Proyectos electiva Butiá 2012]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_mtbutia_2011|Proyectos módulo taller butiá 2011]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_mtbutia_2010|Proyectos módulo taller butiá 2010]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2011|Espacio de documentación de los grupos 2011]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2012|Espacio de documentación de los grupos 2012]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2013|Espacio de documentación de los grupos 2013]]&lt;br /&gt;
&lt;br /&gt;
== Extensión Universitaria ==&lt;br /&gt;
&lt;br /&gt;
* [[talleres_y_charlas|Talleres y charlas]]&lt;br /&gt;
&lt;br /&gt;
* [[mega_construccion_2010|Construyendo los robots]]&lt;br /&gt;
&lt;br /&gt;
* [[entrega_de_Butiá_V1.0|Entrega de 28 robots Butiá en el evento Sumo.uy 2010]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_liceos|Experiencias realizadas por nuestro usuarios]]&lt;br /&gt;
&lt;br /&gt;
* [[Robótica_educativa_con_el_robot_Butiá_Proyecto_Estímulo_a_la_Cultura_Científica_y_Tecnológica,_Prociencia,_18-21/07/2012|Prociencia 2012]]&lt;br /&gt;
&lt;br /&gt;
* [[quiero_una_USB4Butia|Proyectos - Quiero una USB4Butia]]&lt;br /&gt;
&lt;br /&gt;
== Publicaciones científicas ==&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el congreso Inforedu2013 &amp;quot;Congreso Internacional de Informática en la Educación&amp;quot; [http://www.inforedu2013.mes.edu.cu/ponencia/uruguay/rob%C3%B3tica-educativa-en-uruguay-de-la-mano-del-robot-buti%C3%A1 Robótica educativa de la mano del robot Butiá]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el congreso WEEF 2012 &amp;quot;Engineering Education for Sustainable Development and Social Inclusión&amp;quot; [http://www.weef2012.edu.ar/papersFinal/information.php?doc=227 1 adolescente. 1 computadora. 1 robot]&lt;br /&gt;
&lt;br /&gt;
*Artículo publicado en OLPC, [http://www.olpcnews.com/use_cases/technology/usb4butia_a_truly_free_as_in_freedom_input_output_board.html USB4butia - A Truly Free (as in Freedom) Input/Output Board]&lt;br /&gt;
&lt;br /&gt;
*Poster presentado en el Congreso Argentino de SistemasEmbebidos, Case2012, Buenos Aires, Argentina:&lt;br /&gt;
[http://www.sase.com.ar/2012/files/2011/11/case2012_memorias_pp235-end.pdf FollowMe: seguimiento de objetos mediante el uso de webcam y plataforma Butiá] pag. 281&lt;br /&gt;
&lt;br /&gt;
*Poster presentado en el Congreso Argentino de SistemasEmbebidos, Case2012, Buenos Aires, Argentina:&lt;br /&gt;
[http://www.sase.com.ar/2012/files/2011/11/case2012_memorias_pp235-end.pdf USB4BUTIA: Interfaz Robótica Educativa de simple fabricación y bajo costo] pag. 282&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el evento &amp;quot;apropiación y desarrollo: modelos 1 a 1&amp;quot; 2012 organizado por Flor de Ceibo: [http://www.fing.edu.uy/inco/proyectos/butia/files/butia_edu1a1_v1.4_ponencia_completa.pdf Butiá, transformando tu XO en un robot móvil programable]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el evento &amp;quot;apropiación y desarrollo: modelos 1 a 1&amp;quot; 2012 organizado por Flor de Ceibo: [http://www.fing.edu.uy/inco/proyectos/butia/files/De_tortugarte_a_butia_en_la_escuela_primaria.pdf De la tortuga al robot Butiá, experiencias en el uso de Tortugarte en la escuela primaria]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el Encuentro Desarrolladores Uruguay, eduJAM 2012: [http://wiki.sugarlabs.org/images/1/13/Turtle_sensors.pdf How open hardware and software can empower students and communities]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el Simposio Argentino de Sistemas Embebidos, Sase2011, Buenos Aires, Argentina: &lt;br /&gt;
[http://www.sase.com.ar/2011/case/articulos-case/butia-plataforma-robotica-generica-para-la-ensenanza-de-la-informatica/ Butiá: Plataforma robótica genérica para la enseñanza de la informática]&lt;br /&gt;
&lt;br /&gt;
== Material de Presentaciones Butiá ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:poster_olpc-sf.jpg|thumb|Poster presentado en OLPC - San Francisco / 2011]]&lt;br /&gt;
[[Archivo:OLPC - SF 2012.png|thumb|Poster presentado en OLPC - San Francisco / 2012]]&lt;br /&gt;
[[Archivo:OLPC - SF 2013.png|thumb|Poster presentado en OLPC - San Francisco / 2013]]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/proyecto_butia_capacitacion_5_2012.pdf Butiá: Sistema robótico constructivo de bajo costo para uso educativo, Encuentro Nacional de Voluntarios 2012, Squeakfest 2012]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/Turtle%20sensors.pdf How open hardware and software can empower students and communities, eduJAM2012]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/de_la_tortuga_al_robot_butia.pdf De la tortuga al robot Butiá, Experiencias en el uso de Tortugarte en la escuela primaria, en el evento apropiación y desarrollo: modelos 1 a 1, organizado por Flor de Ceibo]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/butia-1a1.pdf Butiá: Plataforma robótica genérica para la enseñanza inicial y media, en el evento apropiación y desarrollo: modelos 1 a 1, organizado por Flor de Ceibo]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/butia-seminarioFIERGS_handout.pdf Charla del robot Butiá en el Seminario FIERGS, Porto Alegre, Brasil]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/pres_seMINArios_2011_handouts.pdf Charla del robot Butiá el los seMINArios del Instituto de Computación, UdelaR, Montevideo, Uruguay, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/presCASE2011HandsOut.pdf Charla del robot Butiá en el congreso argentino de sistemas embebidos, Buenos Aires, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/butia-jornadasANTel-FIng2011.pdf Charla del robot Butiá en las jornadas de telecomunicaciones realizadas, Rocha, Uruguay, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/presCPBRASIL.pdf Charla del robot Butiá en el campus party, San Pablo, Brasil, 2011]&lt;br /&gt;
&lt;br /&gt;
== El robot Butiá en los medios ==&lt;br /&gt;
&lt;br /&gt;
[[notas_en_tv|Notas en televisión]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notas en Radio]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_en_blogs|Notas en Blogs y la Web]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[congresos_y_seminarios|Congresos y Seminarios]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_revistas|Notas en revistas]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_diarios|Notas en periódicos]]&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
[[nuestros_videos|Videos]]&lt;br /&gt;
&lt;br /&gt;
[[pistas butiá|Pistas]]&lt;br /&gt;
&lt;br /&gt;
== Comunicación ==&lt;br /&gt;
* [http://www.facebook.com/group.php?gid=147042805312846 Seguinos en Facebook uniendote al grupo]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://plus.google.com/u/0/108413393520841902443/posts Seguinos en google+]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.fing.edu.uy/mailman/listinfo/butia-list Lista de correo butia-list]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.fing.edu.uy/mailman/listinfo/butia-devel-l Lista de correo butiá-devel-l para tratar temas relacionados con el desarrollo de la plataforma]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[instructivo_newsgroup|Instructivo para el uso del Newsgroup de fing]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preguntas Frecuentes (f.a.q) sobre el Butiá ==&lt;br /&gt;
&lt;br /&gt;
Puede encontrarse una lista de preguntas frecuentes y su respuesta en [[preguntas_frecuentes]]&lt;br /&gt;
&lt;br /&gt;
== Empezando a utilizar wiki ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [http://meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]&lt;br /&gt;
&lt;br /&gt;
[[Main page (English)]]&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Wiki_Buti%C3%A1&amp;diff=3375</id>
		<title>Wiki Butiá</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Wiki_Buti%C3%A1&amp;diff=3375"/>
				<updated>2012-10-24T19:37:18Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Material de Presentaciones Butiá */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Proyecto Butiá ==&lt;br /&gt;
Este proyecto plantea como objetivo crear una plataforma simple, la cual ponga al alcance de estudiantes escolares o liceales las herramientas necesarias para permitirles interiorizarse con la programación de  comportamientos para robots.&lt;br /&gt;
El proyecto Butiá trata de ampliar las capacidades sensoriales y de actuación de la computadora XO del proyecto OLPC, transformandola en una plataforma robótica móvil.&lt;br /&gt;
Actualmente la implementación 1.0 del proyecto está siendo utilizado en formato de kit, distribuido a 28 liceos públicos del Uruguay, con un set de sensores y piezas que permiten cambiar la ubicación de los sensores en la plataforma móvil donde se coloca la computadora XO.&amp;lt;br&amp;gt;&lt;br /&gt;
A su vez el proyecto Butiá fue desarrollado teniendo en mente el hecho que agregar nuevos sensores o actuadores a la plataforma sea muy sencillo, esto abre la posibilidad a que usuarios interesados con el hardware puedan implementar fácilmente sus propios sensores y actuadores. Incluso el [http://es.wikipedia.org/wiki/Dise%C3%B1o_industrial diseño industrial] del robot es abierto lo cual permite realizarlo con materiales reciclados o de bajo costo.&lt;br /&gt;
&lt;br /&gt;
== Desafío Butiá para el evento de SUMO Robótico 2012 ==&lt;br /&gt;
Son numerosas las instituciones educativas que a nivel mundial desarrollan exposiciones robóticas.&amp;lt;br&amp;gt; En nuestro país, la Facultad de Ingeniería de la Universidad de la República es pionera.&lt;br /&gt;
Desde 2004, año a año el evento sumo.uy ha cumplido con éxito su misión: hacer que la sociedad sea partícipe, y no mero testigo, de los avances en robótica e inteligencia artificial.&amp;lt;br&amp;gt;&lt;br /&gt;
'''sumo.uy''' ofrece un entorno abierto a todo público, donde universitarios y no universitarios, liceales, adultos y niños, uruguayos y extranjeros pueden interactuar, presentar sus trabajos y plantear sus inquietudes relacionadas con la temática del evento.&amp;lt;br&amp;gt;&lt;br /&gt;
En el marco de la edición 2012 de este evento se pudo participar con el robot butiá en dos desafíos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/DesafioButiaBasico_2012.pdf Desafío básico butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/DesafioButiaAvanzado2012.pdf Desafío avanzado butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Desafío Butiá para el evento de SUMO Robótico 2011 ==&lt;br /&gt;
En el marco de la edición 2011 de este evento se pudo participar con el robot butiá en dos desafíos:&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/desafio_basico_sumo_2011.pdf Desafío básico butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/eventos/sumo.uy/Documentos/reglamentoButiaAvanzado.pdf Desafío avanzado butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ocho liceos participaron en los desafíos butiá, en el siguiente link podrás encotrar un resumen sobre la experiencia: [[resumen sumo 2011 desafío Butiá| español]] [[review|ingles]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publicaciones científicas ==&lt;br /&gt;
*Artículo presentado en el evento &amp;quot;apropiación y desarrollo: modelos 1 a 1&amp;quot; 2012 organizado por Flor de Ceibo: [http://www.fing.edu.uy/inco/proyectos/butia/files/butia_edu1a1_v1.4_ponencia_completa.pdf Butiá, transformando tu XO en un robot móvil programable]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el evento &amp;quot;apropiación y desarrollo: modelos 1 a 1&amp;quot; 2012 organizado por Flor de Ceibo: [http://www.fing.edu.uy/inco/proyectos/butia/files/De_tortugarte_a_butia_en_la_escuela_primaria.pdf De la tortuga al robot Butiá, experiencias en el uso de Tortugarte en la escuela primaria]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el Encuentro Desarrolladores Uruguay, eduJAM 2012: [http://wiki.sugarlabs.org/images/1/13/Turtle_sensors.pdf How open hardware and software can empower students and communities]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el Simposio Argentino de Sistemas Embebidos, Sase2011, Buenos Aires, Argentina: &lt;br /&gt;
[http://www.sase.com.ar/2011/case/articulos-case/butia-plataforma-robotica-generica-para-la-ensenanza-de-la-informatica/ Butiá: Plataforma robótica genérica para la enseñanza de la informática]&lt;br /&gt;
&lt;br /&gt;
*Poster presentado en el Congreso Argentino de SistemasEmbebidos, Case2012, Buenos Aires, Argentina:&lt;br /&gt;
[http://www.sase.com.ar/2012/files/2011/11/case2012_memorias_pp235-end.pdf FollowMe: seguimiento de objetos mediante el uso de webcam y plataforma Butiá] pag. 281&lt;br /&gt;
&lt;br /&gt;
*Poster presentado en el Congreso Argentino de SistemasEmbebidos, Case2012, Buenos Aires, Argentina:&lt;br /&gt;
[http://www.sase.com.ar/2012/files/2011/11/case2012_memorias_pp235-end.pdf USB4BUTIA: Interfaz Robótica Educativa de simple fabricación y bajo costo] pag. 282&lt;br /&gt;
&lt;br /&gt;
== Lenguajes de programación ==&lt;br /&gt;
El Robot butiá puede controlarse fácilmente desde cualquier [http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n lenguaje de programación] con soporte de conexiones [http://es.wikipedia.org/wiki/TCP/IP TCP/IP]. De todas maneras damos soporte para algunas plataformas concretas mediante [http://es.wikipedia.org/wiki/Plugin plugins], [http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones API's] o [http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado IDEs]. Algunos ejemplos son:&amp;lt;br&amp;gt;&lt;br /&gt;
[[TortugArteButiá]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Butialo]] (Lua)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Python]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Curso módulo taller Butiá ==&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_abiertos|Proyectos abiertos para realizar en el marco del &amp;quot;Proyecto Butiá&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_electiva_butia_2012|Proyectos electiva Butiá 2012]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_mtbutia_2011|Proyectos módulo taller butiá 2011]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_mtbutia_2010|Proyectos módulo taller butiá 2010]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2011|Espacio de documentación de los grupos 2011]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2012|Espacio de documentación de los grupos 2012]]&lt;br /&gt;
&lt;br /&gt;
== Extensión Universitaria ==&lt;br /&gt;
&lt;br /&gt;
* [[talleres_y_charlas|Talleres y charlas]]&lt;br /&gt;
&lt;br /&gt;
* [[mega_construccion_2010|Construyendo los robots]]&lt;br /&gt;
&lt;br /&gt;
* [[entrega_de_Butiá_V1.0|Entrega de 28 robots Butiá en el evento Sumo.uy 2010]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_liceos|Experiencias realizadas por los Liceos que participan del proyecto]]&lt;br /&gt;
== Material de Presentaciones Butiá ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:poster_olpc-sf.jpg|thumb|Poster presentado en OLPC - San Francisco / 2011]]&lt;br /&gt;
[[Archivo:OLPC - SF 2012.png|thumb|Poster presentado en OLPC - San Francisco / 2012]]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/proyecto_butia_capacitacion_5_2012.pdf Butiá: Sistema robótico constructivo de bajo costo para uso educativo, Encuentro Nacional de Voluntarios 2012, Squeakfest 2012]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/Turtle%20sensors.pdf How open hardware and software can empower students and communities, eduJAM2012]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/de_la_tortuga_al_robot_butia.pdf De la tortuga al robot Butiá, Experiencias en el uso de Tortugarte en la escuela primaria, en el evento apropiación y desarrollo: modelos 1 a 1, organizado por Flor de Ceibo]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/butia-1a1.pdf Butiá: Plataforma robótica genérica para la enseñanza inicial y media, en el evento apropiación y desarrollo: modelos 1 a 1, organizado por Flor de Ceibo]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/butia-seminarioFIERGS_handout.pdf Charla del robot Butiá en el Seminario FIERGS, Porto Alegre, Brasil]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/pres_seMINArios_2011_handouts.pdf Charla del robot Butiá el los seMINArios del Instituto de Computación, UdelaR, Montevideo, Uruguay, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/presCASE2011HandsOut.pdf Charla del robot Butiá en el congreso argentino de sistemas embebidos, Buenos Aires, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/butia-jornadasANTel-FIng2011.pdf Charla del robot Butiá en las jornadas de telecomunicaciones realizadas, Rocha, Uruguay, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/presCPBRASIL.pdf Charla del robot Butiá en el campus party, San Pablo, Brasil, 2011]&lt;br /&gt;
&lt;br /&gt;
== Construcción ==&lt;br /&gt;
&lt;br /&gt;
* [[construcción_Butiá_V1.0|Construyendo un Robot Butiáv1.0 paso a paso]]&lt;br /&gt;
* [[construcción_Butiá_V1.8|Construyendo un Robot Butiáv1.8 paso a paso]]&lt;br /&gt;
* [[flashearIdAX12|Como flashear los motores AX12]]&lt;br /&gt;
&lt;br /&gt;
== Desarrollo ==&lt;br /&gt;
&lt;br /&gt;
La plataforma Butiá fue liberada como software libre a la comunidad y puedes contribuir con el proyecto como desarrollador uniendote en [https://sourceforge.net/projects/butia/ proyecto butiá en sourceforge]&lt;br /&gt;
El código fuente esta versionado bajo control de [http://git-scm.com/ Git], para saber más vea [[Git Butia]].&amp;lt;br&amp;gt;&lt;br /&gt;
Actualmente estamos trabajando en una nueva placa ([[usb4butia|USB4butia]]) para el [[Butia2|Butiá 2.0]] que busca bajar costos, ser más robusto al permitir conectar dispositivos y hacer más simple la construcción de la placa de E/S al utilizar la plataforma [[usb4all|USB4all]].&lt;br /&gt;
Este proyecto se realiza con el apoyo de ANTel.&lt;br /&gt;
&lt;br /&gt;
== Tutoriales ==&lt;br /&gt;
&lt;br /&gt;
En esta sección encontrarás información de como programar el comportamiento del robot Butiá.&lt;br /&gt;
&lt;br /&gt;
* [[Ejemplo_recibir_ordenes_con_aplausos| Cómo controlar el robot Butiá mediante aplausos]]&lt;br /&gt;
* [[tortugarte_variables|Como almacenar los valores leídos de los sensores utilizando TortugArte con Butiá]]&lt;br /&gt;
* [[Evitar_obstaculos|Como evitar obstaculos utilizando TortugArte con Butiá]]&lt;br /&gt;
* [[Evitar_caida|Como evitar caer de una mesa]]&lt;br /&gt;
* [[Ejemplo_seguidor_de_líneas_sencillo|Como hacer un seguidor de líneas sencillo]]&lt;br /&gt;
* [[Ejemplo_seguidor_de_líneas|Como hacer un seguidor de líneas avanzado]]&lt;br /&gt;
* [[Ejemplo_sumo|Como hacer un luchador de Sumo]]&lt;br /&gt;
* [[Transformando_a_cms_el_valor_del_sensor_de_distancia|Transformando a centímetros la salida del sensor de distancia]]&lt;br /&gt;
* [[Butiá_que_habla|Butiá que habla]]&lt;br /&gt;
* [[Modularizando|Como modularizar un programa en Tortugarte]]&lt;br /&gt;
* [[video_tutoriales|Video Tutoriales]]&lt;br /&gt;
* [[Preguntas_frecuentes|Preguntas Frecuentes]]&lt;br /&gt;
* [[FollowMe|Utilizar plugin FollowMe]]&lt;br /&gt;
* [[USB4butià| Cómo construir una placa USB4Butià]]&lt;br /&gt;
&lt;br /&gt;
== El robot Butiá en los medios ==&lt;br /&gt;
[[notas_en_tv|Notas en televisión]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[radio|Notas en radio]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_en_blogs|Notas en Blogs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[congresos_y_seminarios|Congresos y Seminarios]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_revistas|Notas en revistas]]&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
[[nuestros_videos|Videos]]&lt;br /&gt;
&lt;br /&gt;
[[pistas butiá|Pistas]]&lt;br /&gt;
&lt;br /&gt;
== Comunicación ==&lt;br /&gt;
* [http://www.facebook.com/group.php?gid=147042805312846 Seguinos en Facebook uniendote al grupo]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://plus.google.com/u/0/108413393520841902443/posts Seguinos en google+]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.fing.edu.uy/mailman/listinfo/butia-list Lista de correo butia-list]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.fing.edu.uy/mailman/listinfo/butia-devel-l Lista de correo butiá-devel-l para tratar temas relacionados con el desarrollo de la plataforma]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[instructivo_newsgroup|Instructivo para el uso del Newsgroup de fing]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preguntas Frecuentes (f.a.q) sobre el Butiá ==&lt;br /&gt;
Puede encontrarse una lista de preguntas frecuentes y su respuesta en [[preguntas_frecuentes]]&lt;br /&gt;
&lt;br /&gt;
== ButiArte ==&lt;br /&gt;
A puro arte &amp;lt;br&amp;gt;&lt;br /&gt;
[[remeras|Remeras]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cuadernolas Butiá y Sumo]]&lt;br /&gt;
&lt;br /&gt;
== Actividades para realizar con el robot relacionadas con otras ciencias ==&lt;br /&gt;
&lt;br /&gt;
[[Biología y Butiá]]&lt;br /&gt;
&lt;br /&gt;
== Empezando a utilizar wiki ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [http://meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:OLPC_-_SF_2012.png&amp;diff=3374</id>
		<title>Archivo:OLPC - SF 2012.png</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:OLPC_-_SF_2012.png&amp;diff=3374"/>
				<updated>2012-10-24T19:35:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: subió una nueva versión de «Archivo:OLPC - SF 2012.png»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Poster OLPC San Francisco 2012&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:OLPC_-_SF_2012.png&amp;diff=3373</id>
		<title>Archivo:OLPC - SF 2012.png</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:OLPC_-_SF_2012.png&amp;diff=3373"/>
				<updated>2012-10-24T19:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: Poster OLPC San Francisco 2012&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Poster OLPC San Francisco 2012&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Cuadernolas_Buti%C3%A1_y_Sumo&amp;diff=3372</id>
		<title>Cuadernolas Butiá y Sumo</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Cuadernolas_Buti%C3%A1_y_Sumo&amp;diff=3372"/>
				<updated>2012-10-24T18:36:12Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: Página creada con '* Cuadernolas&amp;lt;br&amp;gt; :::*Butia&amp;lt;br/&amp;gt; ::::: http://www.fing.edu.uy/inco/eventos/sumo.uy/images/cuadernola2.1.png  :::*Sumo&amp;lt;br/&amp;gt; ::::: http://www.fing.edu.uy/inco/eventos/sumo.uy/imag...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Cuadernolas&amp;lt;br&amp;gt;&lt;br /&gt;
:::*Butia&amp;lt;br/&amp;gt;&lt;br /&gt;
::::: http://www.fing.edu.uy/inco/eventos/sumo.uy/images/cuadernola2.1.png&lt;br /&gt;
&lt;br /&gt;
:::*Sumo&amp;lt;br/&amp;gt;&lt;br /&gt;
::::: http://www.fing.edu.uy/inco/eventos/sumo.uy/images/cuadernola1.1.png&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Wiki_Buti%C3%A1&amp;diff=3371</id>
		<title>Wiki Butiá</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Wiki_Buti%C3%A1&amp;diff=3371"/>
				<updated>2012-10-24T18:04:48Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* ButiArte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Proyecto Butiá ==&lt;br /&gt;
Este proyecto plantea como objetivo crear una plataforma simple, la cual ponga al alcance de estudiantes escolares o liceales las herramientas necesarias para permitirles interiorizarse con la programación de  comportamientos para robots.&lt;br /&gt;
El proyecto Butiá trata de ampliar las capacidades sensoriales y de actuación de la computadora XO del proyecto OLPC, transformandola en una plataforma robótica móvil.&lt;br /&gt;
Actualmente la implementación 1.0 del proyecto está siendo utilizado en formato de kit, distribuido a 28 liceos públicos del Uruguay, con un set de sensores y piezas que permiten cambiar la ubicación de los sensores en la plataforma móvil donde se coloca la computadora XO.&amp;lt;br&amp;gt;&lt;br /&gt;
A su vez el proyecto Butiá fue desarrollado teniendo en mente el hecho que agregar nuevos sensores o actuadores a la plataforma sea muy sencillo, esto abre la posibilidad a que usuarios interesados con el hardware puedan implementar fácilmente sus propios sensores y actuadores. Incluso el [http://es.wikipedia.org/wiki/Dise%C3%B1o_industrial diseño industrial] del robot es abierto lo cual permite realizarlo con materiales reciclados o de bajo costo.&lt;br /&gt;
&lt;br /&gt;
== Desafío Butiá para el evento de SUMO Robótico 2012 ==&lt;br /&gt;
Son numerosas las instituciones educativas que a nivel mundial desarrollan exposiciones robóticas.&amp;lt;br&amp;gt; En nuestro país, la Facultad de Ingeniería de la Universidad de la República es pionera.&lt;br /&gt;
Desde 2004, año a año el evento sumo.uy ha cumplido con éxito su misión: hacer que la sociedad sea partícipe, y no mero testigo, de los avances en robótica e inteligencia artificial.&amp;lt;br&amp;gt;&lt;br /&gt;
'''sumo.uy''' ofrece un entorno abierto a todo público, donde universitarios y no universitarios, liceales, adultos y niños, uruguayos y extranjeros pueden interactuar, presentar sus trabajos y plantear sus inquietudes relacionadas con la temática del evento.&amp;lt;br&amp;gt;&lt;br /&gt;
En el marco de la edición 2012 de este evento se pudo participar con el robot butiá en dos desafíos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/DesafioButiaBasico_2012.pdf Desafío básico butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/DesafioButiaAvanzado2012.pdf Desafío avanzado butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Desafío Butiá para el evento de SUMO Robótico 2011 ==&lt;br /&gt;
En el marco de la edición 2011 de este evento se pudo participar con el robot butiá en dos desafíos:&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/proyectos/butia/files/desafio_basico_sumo_2011.pdf Desafío básico butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.fing.edu.uy/inco/eventos/sumo.uy/Documentos/reglamentoButiaAvanzado.pdf Desafío avanzado butiá]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ocho liceos participaron en los desafíos butiá, en el siguiente link podrás encotrar un resumen sobre la experiencia: [[resumen sumo 2011 desafío Butiá| español]] [[review|ingles]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publicaciones científicas ==&lt;br /&gt;
*Artículo presentado en el evento &amp;quot;apropiación y desarrollo: modelos 1 a 1&amp;quot; 2012 organizado por Flor de Ceibo: [http://www.fing.edu.uy/inco/proyectos/butia/files/butia_edu1a1_v1.4_ponencia_completa.pdf Butiá, transformando tu XO en un robot móvil programable]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el evento &amp;quot;apropiación y desarrollo: modelos 1 a 1&amp;quot; 2012 organizado por Flor de Ceibo: [http://www.fing.edu.uy/inco/proyectos/butia/files/De_tortugarte_a_butia_en_la_escuela_primaria.pdf De la tortuga al robot Butiá, experiencias en el uso de Tortugarte en la escuela primaria]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el Encuentro Desarrolladores Uruguay, eduJAM 2012: [http://wiki.sugarlabs.org/images/1/13/Turtle_sensors.pdf How open hardware and software can empower students and communities]&lt;br /&gt;
&lt;br /&gt;
*Artículo presentado en el Simposio Argentino de Sistemas Embebidos, Sase2011, Buenos Aires, Argentina: &lt;br /&gt;
[http://www.sase.com.ar/2011/case/articulos-case/butia-plataforma-robotica-generica-para-la-ensenanza-de-la-informatica/ Butiá: Plataforma robótica genérica para la enseñanza de la informática]&lt;br /&gt;
&lt;br /&gt;
*Poster presentado en el Congreso Argentino de SistemasEmbebidos, Case2012, Buenos Aires, Argentina:&lt;br /&gt;
[http://www.sase.com.ar/2012/files/2011/11/case2012_memorias_pp235-end.pdf FollowMe: seguimiento de objetos mediante el uso de webcam y plataforma Butiá] pag. 281&lt;br /&gt;
&lt;br /&gt;
*Poster presentado en el Congreso Argentino de SistemasEmbebidos, Case2012, Buenos Aires, Argentina:&lt;br /&gt;
[http://www.sase.com.ar/2012/files/2011/11/case2012_memorias_pp235-end.pdf USB4BUTIA: Interfaz Robótica Educativa de simple fabricación y bajo costo] pag. 282&lt;br /&gt;
&lt;br /&gt;
== Lenguajes de programación ==&lt;br /&gt;
El Robot butiá puede controlarse fácilmente desde cualquier [http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n lenguaje de programación] con soporte de conexiones [http://es.wikipedia.org/wiki/TCP/IP TCP/IP]. De todas maneras damos soporte para algunas plataformas concretas mediante [http://es.wikipedia.org/wiki/Plugin plugins], [http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones API's] o [http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado IDEs]. Algunos ejemplos son:&amp;lt;br&amp;gt;&lt;br /&gt;
[[TortugArteButiá]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Butialo]] (Lua)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Python]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Curso módulo taller Butiá ==&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_abiertos|Proyectos abiertos para realizar en el marco del &amp;quot;Proyecto Butiá&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_electiva_butia_2012|Proyectos electiva Butiá 2012]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_mtbutia_2011|Proyectos módulo taller butiá 2011]]&lt;br /&gt;
&lt;br /&gt;
* [[proyectos_mtbutia_2010|Proyectos módulo taller butiá 2010]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2011|Espacio de documentación de los grupos 2011]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_para_grupos_2012|Espacio de documentación de los grupos 2012]]&lt;br /&gt;
&lt;br /&gt;
== Extensión Universitaria ==&lt;br /&gt;
&lt;br /&gt;
* [[talleres_y_charlas|Talleres y charlas]]&lt;br /&gt;
&lt;br /&gt;
* [[mega_construccion_2010|Construyendo los robots]]&lt;br /&gt;
&lt;br /&gt;
* [[entrega_de_Butiá_V1.0|Entrega de 28 robots Butiá en el evento Sumo.uy 2010]]&lt;br /&gt;
&lt;br /&gt;
* [[espacio_liceos|Experiencias realizadas por los Liceos que participan del proyecto]]&lt;br /&gt;
== Material de Presentaciones Butiá ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:poster_olpc-sf.jpg|thumb|Poster presentado en OLPC - San Francisco]]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/proyecto_butia_capacitacion_5_2012.pdf Butiá: Sistema robótico constructivo de bajo costo para uso educativo, Encuentro Nacional de Voluntarios 2012, Squeakfest 2012]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/Turtle%20sensors.pdf How open hardware and software can empower students and communities, eduJAM2012]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/de_la_tortuga_al_robot_butia.pdf De la tortuga al robot Butiá, Experiencias en el uso de Tortugarte en la escuela primaria, en el evento apropiación y desarrollo: modelos 1 a 1, organizado por Flor de Ceibo]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/butia-1a1.pdf Butiá: Plataforma robótica genérica para la enseñanza inicial y media, en el evento apropiación y desarrollo: modelos 1 a 1, organizado por Flor de Ceibo]&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/files/butia-seminarioFIERGS_handout.pdf Charla del robot Butiá en el Seminario FIERGS, Porto Alegre, Brasil]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/pres_seMINArios_2011_handouts.pdf Charla del robot Butiá el los seMINArios del Instituto de Computación, UdelaR, Montevideo, Uruguay, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/presCASE2011HandsOut.pdf Charla del robot Butiá en el congreso argentino de sistemas embebidos, Buenos Aires, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/butia-jornadasANTel-FIng2011.pdf Charla del robot Butiá en las jornadas de telecomunicaciones realizadas, Rocha, Uruguay, 2011]&lt;br /&gt;
&lt;br /&gt;
* [http://www.fing.edu.uy/inco/proyectos/butia/mediawiki/public/presCPBRASIL.pdf Charla del robot Butiá en el campus party, San Pablo, Brasil, 2011]&lt;br /&gt;
&lt;br /&gt;
== Construcción ==&lt;br /&gt;
&lt;br /&gt;
* [[construcción_Butiá_V1.0|Construyendo un Robot Butiáv1.0 paso a paso]]&lt;br /&gt;
* [[construcción_Butiá_V1.8|Construyendo un Robot Butiáv1.8 paso a paso]]&lt;br /&gt;
* [[flashearIdAX12|Como flashear los motores AX12]]&lt;br /&gt;
&lt;br /&gt;
== Desarrollo ==&lt;br /&gt;
&lt;br /&gt;
La plataforma Butiá fue liberada como software libre a la comunidad y puedes contribuir con el proyecto como desarrollador uniendote en [https://sourceforge.net/projects/butia/ proyecto butiá en sourceforge]&lt;br /&gt;
El código fuente esta versionado bajo control de [http://git-scm.com/ Git], para saber más vea [[Git Butia]].&amp;lt;br&amp;gt;&lt;br /&gt;
Actualmente estamos trabajando en una nueva placa ([[usb4butia|USB4butia]]) para el [[Butia2|Butiá 2.0]] que busca bajar costos, ser más robusto al permitir conectar dispositivos y hacer más simple la construcción de la placa de E/S al utilizar la plataforma [[usb4all|USB4all]].&lt;br /&gt;
Este proyecto se realiza con el apoyo de ANTel.&lt;br /&gt;
&lt;br /&gt;
== Tutoriales ==&lt;br /&gt;
&lt;br /&gt;
En esta sección encontrarás información de como programar el comportamiento del robot Butiá.&lt;br /&gt;
&lt;br /&gt;
* [[Ejemplo_recibir_ordenes_con_aplausos| Cómo controlar el robot Butiá mediante aplausos]]&lt;br /&gt;
* [[tortugarte_variables|Como almacenar los valores leídos de los sensores utilizando TortugArte con Butiá]]&lt;br /&gt;
* [[Evitar_obstaculos|Como evitar obstaculos utilizando TortugArte con Butiá]]&lt;br /&gt;
* [[Evitar_caida|Como evitar caer de una mesa]]&lt;br /&gt;
* [[Ejemplo_seguidor_de_líneas_sencillo|Como hacer un seguidor de líneas sencillo]]&lt;br /&gt;
* [[Ejemplo_seguidor_de_líneas|Como hacer un seguidor de líneas avanzado]]&lt;br /&gt;
* [[Ejemplo_sumo|Como hacer un luchador de Sumo]]&lt;br /&gt;
* [[Transformando_a_cms_el_valor_del_sensor_de_distancia|Transformando a centímetros la salida del sensor de distancia]]&lt;br /&gt;
* [[Butiá_que_habla|Butiá que habla]]&lt;br /&gt;
* [[Modularizando|Como modularizar un programa en Tortugarte]]&lt;br /&gt;
* [[video_tutoriales|Video Tutoriales]]&lt;br /&gt;
* [[Preguntas_frecuentes|Preguntas Frecuentes]]&lt;br /&gt;
* [[FollowMe|Utilizar plugin FollowMe]]&lt;br /&gt;
* [[USB4butià| Cómo construir una placa USB4Butià]]&lt;br /&gt;
&lt;br /&gt;
== El robot Butiá en los medios ==&lt;br /&gt;
[[notas_en_tv|Notas en televisión]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[radio|Notas en radio]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_en_blogs|Notas en Blogs]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[congresos_y_seminarios|Congresos y Seminarios]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[notas_revistas|Notas en revistas]]&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
[[nuestros_videos|Videos]]&lt;br /&gt;
&lt;br /&gt;
[[pistas butiá|Pistas]]&lt;br /&gt;
&lt;br /&gt;
== Comunicación ==&lt;br /&gt;
* [http://www.facebook.com/group.php?gid=147042805312846 Seguinos en Facebook uniendote al grupo]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://plus.google.com/u/0/108413393520841902443/posts Seguinos en google+]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.fing.edu.uy/mailman/listinfo/butia-list Lista de correo butia-list]&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.fing.edu.uy/mailman/listinfo/butia-devel-l Lista de correo butiá-devel-l para tratar temas relacionados con el desarrollo de la plataforma]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[instructivo_newsgroup|Instructivo para el uso del Newsgroup de fing]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preguntas Frecuentes (f.a.q) sobre el Butiá ==&lt;br /&gt;
Puede encontrarse una lista de preguntas frecuentes y su respuesta en [[preguntas_frecuentes]]&lt;br /&gt;
&lt;br /&gt;
== ButiArte ==&lt;br /&gt;
A puro arte &amp;lt;br&amp;gt;&lt;br /&gt;
[[remeras|Remeras]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Cuadernolas Butiá y Sumo]]&lt;br /&gt;
&lt;br /&gt;
== Actividades para realizar con el robot relacionadas con otras ciencias ==&lt;br /&gt;
&lt;br /&gt;
[[Biología y Butiá]]&lt;br /&gt;
&lt;br /&gt;
== Empezando a utilizar wiki ==&lt;br /&gt;
&lt;br /&gt;
Consulta la [http://meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustes de configuración]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3085</id>
		<title>Archivo:Pista.svg</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3085"/>
				<updated>2012-09-25T21:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: subió una nueva versión de «Archivo:Pista.svg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pista 2.5m * 2.5m&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3084</id>
		<title>Archivo:Pista.svg</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3084"/>
				<updated>2012-09-25T19:38:55Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: subió una nueva versión de «Archivo:Pista.svg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pista 2.5m * 2.5m&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3083</id>
		<title>Archivo:Pista.svg</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3083"/>
				<updated>2012-09-25T19:30:33Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: subió una nueva versión de «Archivo:Pista.svg»: Revertido a la versión subida el 25 sep 2012 a las 19:19&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pista 2.5m * 2.5m&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3082</id>
		<title>Archivo:Pista.svg</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3082"/>
				<updated>2012-09-25T19:28:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: subió una nueva versión de «Archivo:Pista.svg»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pista 2.5m * 2.5m&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3081</id>
		<title>Archivo:Pista.svg</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Pista.svg&amp;diff=3081"/>
				<updated>2012-09-25T19:19:42Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: pista 2.5m * 2.5m&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;pista 2.5m * 2.5m&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2463</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2463"/>
				<updated>2012-04-01T22:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Código fuente paleta Simulador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La simulación es la imitación de un entorno diferente. Permite saber cómo reaccionaría un objeto en un entorno particular, sin necesidad de probarlo en el entorno real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
A nosotros nos permitirá saber cómo reaccionaría el Butiá a nuestras instrucciones, cuando conectemos la computadora al robot real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Elegimos, como proyecto final, la creación de un Simulador para el robot Butiá ya que, de quedar implementado, no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Video y presentación del proyecto====&lt;br /&gt;
&lt;br /&gt;
[http://prezi.com/b2d7rkzy7spd/butia-sim/ Presentación usando Prezi.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;videoflash type=&amp;quot;vimeo&amp;quot;&amp;gt;37703545|400|300&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motivación==&lt;br /&gt;
Trabajando con el robot fuimos identificando, a través de la experiencia personal, diferentes dificultades que se presentaban al querer probar nuestro código.&lt;br /&gt;
&lt;br /&gt;
Puntualmente:&lt;br /&gt;
* poca cantidad de plataformas construidas&lt;br /&gt;
* sensores en malas condiciones&lt;br /&gt;
* baterías descargadas&lt;br /&gt;
* cables desconectados&lt;br /&gt;
* dificultades para reparar las fallas&lt;br /&gt;
&lt;br /&gt;
Sumado a todo esto está el tiempo que se pierde intentando solucionar esos problemas y la motivación de los estudiantes que puede ir disminuyendo, al no poder probar su programa tanto y tan rápido como quisieran. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el equipo presente para poder correr sus códigos. Además de que no pueden hacerlo en sus casas.&lt;br /&gt;
&lt;br /&gt;
Basados en lo anterior, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los robots. &lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del movimiento y las reacciones, sino que también posibilitará el testeo del código de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de ejecutar lo que acaba de programar.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo del proyecto==&lt;br /&gt;
A partir de las etapas formales del desarrollo de una [[#Simulación | Simulación]], podemos describir nuestro trabajo de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
===Objetivos===&lt;br /&gt;
La especificación de objetivos se enmarca en la etapa de Definición del sistema que incluye, además, la decisión de realizar un sistema informático para simular el robot Butiá y la aceptación de las limitaciones del mismo.&lt;br /&gt;
&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Limitaciones===&lt;br /&gt;
No obstante nuestros objetivos, es necesario aceptar y aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado. Por ejemplo, los valores devueltos por los sensores serán exactos, no se verán afectados por las condiciones del ambiente, así como la luz afecta al sensor de escala de grises. Por esto, antes de estar seguros que un algoritmo funciona será necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Investigación de herramientas===&lt;br /&gt;
Los siguientes tres pasos teóricos son Formulación del modelo, definición de la Colección de datos necesaria e Implementación del modelo. En nuestro trabajo, los realizamos en conjunto.&lt;br /&gt;
El primer problema fue decidir qué herramientas íbamos a usar para desarrollar la aplicación y qué componentes iba a tener el sistema.&lt;br /&gt;
Más allá de las herramientas, decidimos que necesitaríamos dos componentes básicos: el motor que simule las reacciones del robot y del entorno, y la interfaz gráfica que muestre en pantalla los resultados.&lt;br /&gt;
&lt;br /&gt;
====Motor de simulación====&lt;br /&gt;
Consiste en el conjunto de operaciones que se deben realizar para, a partir de una instrucción dada al robot, obtener como resultado cuál sería su reacción. Por ejemplo, si se recibe una orden para que el robot vaya hacia adelante, el motor de simulación devolverá todo el tiempo la posición que debe tener el Butiá a partir de la posición inicial.&lt;br /&gt;
Además debe calcular cómo reaccionaría el ambiente a las acciones del robot y viceversa. Como ejemplo, si el robot llega a una pared no debe poder avanzar, o, si se choca con un obstáculo liviano, éste se debe mover cediendo a la fuerza del Butiá.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para el motor, principalmente lo que se debe decidir es el [[#Lenguaje de programación | Lenguaje de programación]] a utilizar. También el sistema operativo y la máquina que lo ejecutará.&lt;br /&gt;
No dudamos mucho en este punto. El simulador en su conjunto debía poder ser utilizado en una XO, por lo tanto el sistema operativo debía ser Linux y el lenguaje Python, porque las XO ya traen un [[#Intérprete | Intérprete]].&lt;br /&gt;
&lt;br /&gt;
====Interfaz Gráfica====&lt;br /&gt;
La interfaz o GUI por sus siglas en inglés (Graphic User Interface) ofrece una forma agradable de ver los datos devueltos por el motor. Existen diversas interfaces cuando hablamos de simulaciones, generalmente se componen de imágenes y símbolos que permiten identificar lo que está sucediendo en el ambiente simulado y relacionarlo con lo que pasaría en el ambiente real. Van desde gráficos y cifras mostradas en pantalla hasta imágenes en 2D y 3D.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para su mejor comprensión, el simulador debía tener una interfaz gráfica que represente al robot y su entorno en 2D o 3D.&lt;br /&gt;
Investigando un poco, dimos con 4 opciones:&lt;br /&gt;
*;ODE (PyODE)&lt;br /&gt;
:http://www.ode.org/&lt;br /&gt;
:ODE es una [[#Biblioteca | Biblioteca]] (o librería) para generar ambientes simulados en 2D y 3D. Es una herramienta muy potente y que permite un control absoluto sobre todos los objetos que componen el ambiente. Permite detectar colisiones (choques), obtener distancias, y tiene toda la física ya simulada. Es decir, si, por ejemplo, un objeto con más masa empuja a otro, el segundo se moverá con determinada velocidad debido a las reglas físicas que allí se aplican. Lo mismo sucede con objetos que caen del cielo, etc.&lt;br /&gt;
:ODE está realizado en un lenguaje de programación llamado &amp;quot;C++&amp;quot;. Pero incluso existe una adaptación a Python con las mismas potencialidades.&lt;br /&gt;
:Llegamos a hacer algunas pruebas. Específicamente, logramos instalarlo y hacer funcionar los ejemplos pre-programados en una máquina con Linux. Y también ejecutar un ejemplo propio de un ambiente en 2D.&lt;br /&gt;
:Lo malo fue que, al tener tanta potencia, es difícil de aprender y utilizar en el poco tiempo del que disponíamos.&lt;br /&gt;
&lt;br /&gt;
*;OpenRAVE&lt;br /&gt;
:http://openrave.programmingvision.com/en/main/index.html&lt;br /&gt;
:Es una aplicación ampliamente utilizada para simular robots. Ideal! Si, pero la principal limitación es que ya dispone de un [[#IDE | IDE]] sobre el que se debe trabajar. El mismo puede ser instalado tanto en Linux como en Windows, esto puede ser visto como un punto fuerte. Pero el consumo de memoria es muy elevado como para ser instalado en una XO.&lt;br /&gt;
:Como comentario, el IDE permite la visualización de todo el entorno. El mismo puede ser diseñado con la misma herramienta, tanto el robot como los objetos que lo rodean. También existen ejemplos programados.&lt;br /&gt;
&lt;br /&gt;
*;TortugArte&lt;br /&gt;
:http://wiki.sugarlabs.org/go/Activities/TurtleArt&lt;br /&gt;
:Es una aplicación que permite programar a través de la unión de diferentes bloques, como si de un puzle se tratara. Cada uno de ellos cumple una función específica y juntos conforman el código del programa que se está creando. Puede ser visto como un IDE para niños.&lt;br /&gt;
:Cuando surgió esta opción, inmediatamente se presentó como la más apta. Por qué no? Si las XO ya lo tienen instalado. O sea que sería cuestión de simplemente realizarle alguna ampliación o modificación para satisfacer nuestras necesidades.&lt;br /&gt;
:La idea fue modificar la paleta existente que permite controlar al Butiá para que, si el mismo no se encuentra enchufado, las instrucciones se envíen al motor de simulación. Luego vimos la necesidad de agregar nuestra propia paleta con más opciones.&lt;br /&gt;
&lt;br /&gt;
*;Physics&lt;br /&gt;
:http://wiki.laptop.org/go/Python_Physics&lt;br /&gt;
:Mientras estábamos empezando a plantearnos a TortugArte como el candidato para la simulacion, surgió otra idea... Y si usamos Physics para así tener el control sobre la física que tanto deseábamos?&lt;br /&gt;
:Physics es un conjunto de bibliotecas para aplicar leyes físicas a los objetos simulados, de la misma forma que se hace con ODE. Lo bueno es que Physics es mucho más básico y fácil de utilizar, además de que ya viene instalado en las XO.&lt;br /&gt;
:La idea era programar con TortugArte, enviar las instrucciones al motor y luego mostrarlos en el ambiente creado con esta herramienta. Igual que con ODE, vimos que resultaría un poco inviable por los tiempos de aprendizaje.&lt;br /&gt;
:Más adelante, durante el desarrollo del simulador, intentamos utilizar un plugin de Physics para TortugArte, pero nunca lo pudimos hacer funcionar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En conclusión, llegamos al acuerdo de que TortugArte era lo mejor. Que, además de todas sus bondades, nos permite enviar las instrucciones de una forma simple y ver los resultados del motor desde un solo lugar. Algo que no obtendríamos con ninguna de las otras herramientas utilizadas por sí solas.&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TortugArte que encontramos en la wiki de SugarLabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Cómo escribir un plugin])&lt;br /&gt;
&lt;br /&gt;
===Pruebas realizadas===&lt;br /&gt;
Siguiendo las etapas teóricas, aún nos falta abarcar las 4 siguientes: Verificación, Validación del sistema, Experimentación e Interpretación.&lt;br /&gt;
Las últimas dos las podremos llevar a cabo cuando el Simulador sea utilizado principalmente por los estudiantes y profesores, y cuando obtengamos sus opiniones al respecto.&lt;br /&gt;
&lt;br /&gt;
====Verificación====&lt;br /&gt;
A medida que desarrollábamos una nueva funcionalidad, la misma era probada hasta comprobar que cumplía con nuestras exigencias. En esta etapa siempre surgió algún problema que nos permitió aprender más sobre TortugArte, sobre Python o sobre algún otro detalle que necesitábamos para continuar con el proyecto, y que también nos ayudó a crecer en nuestro conocimiento general.&lt;br /&gt;
&lt;br /&gt;
====Validación====&lt;br /&gt;
Como parte del curso de Extensión Butiá tuvimos que hacer una presentación de nuestro proyecto. Luego de la cual los profesores nos plantearon sus dudas, comentarios e ideas. No obstante, también será necesaria la opinión de expertos en educación orientada a niños y adolescentes para saber si el uso del simulador es posible. Además, cuando el proyecto se encuentre en un punto más avanzado de su desarrollo, es decir cuando se ajusten detalles en las funcionalidades del sistema, podrá realizarse un estudio más profundo sobre las diferencias entre los resultados arrojados por el motor de simulación y la realidad.&lt;br /&gt;
Sin embargo, esta primera validación nos dejó ya con una serie de puntos a mejorar. Que se encuentran más [[#Trabajo a futuro | abajo]].&lt;br /&gt;
&lt;br /&gt;
===Documentación===&lt;br /&gt;
La etapa final es la realización de dos manuales: uno técnico y otro de usuario. El manual técnico deberá detallar las herramientas y técnicas utilizadas para la programación del sistema. El manual de usuario debe ser una guía de fácil comprensión para una persona que nunca usó el simulador.&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual técnico====&lt;br /&gt;
=====Sobre el plugin=====&lt;br /&gt;
Como ya fue mencionado, el Simulador es un plugin para TortugArte. Lo que hicimos fue modificar la paleta creada para controlar el robot Butiá de manera que, si no está enchufado, las órdenes de los bloques se envían al motor de simulación. Además creamos otra paleta para ubicar nuestras funciones particulares.&lt;br /&gt;
&lt;br /&gt;
=====El motor=====&lt;br /&gt;
El motor se comporta como una máquina de estados. Por ejemplo, cuando se recibe la orden de ir hacia adelante, se cambia el valor de la variable que almacena el estado interno a ADELANTE.&lt;br /&gt;
Debido a que el robot real realiza continuamente la última acción indicada, debimos buscar una forma de que el motor ejecutara todo el tiempo la acción correspondiente al estado actual, hasta que éste cambie. Para esto se decidió agregar un bloque llamado &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====El bloque Actualizar mundo=====&lt;br /&gt;
Este bloque invoca a una función del motor que calcula las reacciones del robot, como ubicación y ángulo de giro, dependiendo del estado actual. Entonces, cada vez que se recibe una orden, sólo se cambia el estado actual, y recién cuando se invoque a la función &amp;quot;Actualizar mundo&amp;quot; se calcularán las reacciones del robot y del entorno.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
Entre las carpetas de los plugins para TortugArte se encuentra una con el código usado por el simulador. En el mismo se definen todas las funciones del motor y se crea una nueva paleta que contiene bloques para:&lt;br /&gt;
* Actualizar mundo&lt;br /&gt;
* Cargar pistas prediseñadas&lt;br /&gt;
* Cambiar la imagen de la tortuga por la de un Butiá&lt;br /&gt;
* Imitar el Delay de la paleta existente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual de usuario====&lt;br /&gt;
=====Iniciar el simulador=====&lt;br /&gt;
Para poder utilizar el simulador sólo será necesario abrir TortugArte de la manera habitual, suponiendo que el mismo ya contiene nuestro plugin. Todas las funciones se cargarán sin que el usuario deba hacer alguna acción particular.&lt;br /&gt;
&lt;br /&gt;
=====Programar un comportamiento=====&lt;br /&gt;
Para programar un comportamiento se deben usar los mismos bloques que para el robot Butiá. La diferencia reside en que, para que el movimiento del robot se vea más de una vez, es decir que resulte constante como con el real, es necesario encerrar todo el comportamiento en un bucle infinito (como ya se hace para el Butiá) y además agregar el bloque &amp;quot;Actualizar mundo&amp;quot; en primer o último lugar.&lt;br /&gt;
También, si se desea reutilizar un código ya programado, se debe agregar este bloque, porque de lo contrario la tortuga en pantalla no se moverá con los cambios calculados por el motor.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
En la nueva paleta aparecen algunas funciones útiles, incluyendo el bloque &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*;Cargando pistas&lt;br /&gt;
:Hay cuatro bloques que cargan pistas prediseñadas, aunque también se pueden cargar las propias.&lt;br /&gt;
:Para cargar una pista propia se debe utilizar el bloque &amp;quot;Dibujar pista&amp;quot; y conectarle una entrada del diario que contenga una imagen. Esta imagen se cargará como pista en el fondo de la pantalla.&lt;br /&gt;
&lt;br /&gt;
*;Cambiando la imagen de la tortuga&lt;br /&gt;
:El bloque &amp;quot;Butia&amp;quot; cambia la imagen clásica de la tortuga por la del robot visto desde arriba.&lt;br /&gt;
:Para ejecutarlo se lo debe arrastrar al área de trabajo y cliquearlo una sola vez.&lt;br /&gt;
&lt;br /&gt;
*;Dibujando obstáculos&lt;br /&gt;
:Los bloques &amp;quot;Empezar obstáculo&amp;quot; y &amp;quot;Terminar obstáculo&amp;quot; permiten dibujar un obstáculo. Es recomendable usar éstos al momento de trazar líneas que funcionarán como, por ejemplo, paredes, ya que los bloques cambian el color y el grosor del lápiz a valores particulares que el motor reconoce como obstáculo y no lo pasa por arriba como si fuera parte del piso.&lt;br /&gt;
&lt;br /&gt;
*;Delay&lt;br /&gt;
:El bloque &amp;quot;Delay Butia Sim&amp;quot; imita el funcionamiento del bloque &amp;quot;Delay Butia&amp;quot;.&lt;br /&gt;
:Para ejecutarlo basta con arrastrarlo al área de trabajo, colocar la cantidad de segundos que el robot debe mantenerse ejecutando su última acción y luego darle click o ponerlo dentro del código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemas==&lt;br /&gt;
Como mencionamos, en las etapas de implementación y verificación del sistema nos fuimos enfrentando a diversos problemas.&lt;br /&gt;
&lt;br /&gt;
===Actualizar mundo===&lt;br /&gt;
{| style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
 | Este fue el primero de todos. Como también ya dijimos, necesitábamos una forma de mostrar la nueva posición del robot y las reacciones del ambiente de acuerdo a la última orden recibida.&lt;br /&gt;
Lo resolvimos con el bloque &amp;quot;Actualizar mundo&amp;quot;, que debe ser ejecutado en cada iteración del programa.&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[Archivo:ActualizarMundo.jpg‎|thumb|Imagen del bloque]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Escala de grises===&lt;br /&gt;
{| style=&amp;quot;width:98%;&amp;quot; &lt;br /&gt;
 | Este sensor devuelve un número de acuerdo al color que tiene debajo. Normalmente se coloca delante del robot y en el medio para un seguidor de líneas, su uso clásico.&lt;br /&gt;
TortugArte ya trae implementada una función llamada get_pixel que devuelve el color debajo del centro de la tortuga. Nuestro problema era que lo necésitábamos en la cabeza ya que, si lo usábamos así y queríamos emular el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice.&lt;br /&gt;
La solución fue mover la tortuga de tal forma que su centro quedara en el punto donde antes estaba la cabeza, para obtener el valor devuelto por get_pixel y luego volver a la posición inicial. Todo esto de forma invisible para el usuario, quien tiene la impresión de que la tortuga no se movió de su lugar.&lt;br /&gt;
 | [[Archivo:DiffEscalaGrises.jpg‎|thumb|Diferencias de valores devueltos por Escala de grises]]&lt;br /&gt;
 | style=&amp;quot;vertical-align:top&amp;quot; | [[Archivo:EscalaGrises.jpg‎|thumb|Secuencia de código usando Escala de grises]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fuera tortuga, hola Butiá===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, por una del robot Butiá. En principio esto no resultó complicado, ya que se pueden usar las funciones de Tortugarte para hacerlo. El problema fue que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Es decir, si hacíamos al Butiá recorrer una pista circular, la imagen sólo adoptaba cuatros posiciones sobre su eje.&lt;br /&gt;
Para solucionar el problema nos comunicarnos con Walter Bender, uno de los creadores de TortugArte, intentando obtener algo de ayuda. Lo que hizo fue modificar el código que dibuja la imagen de la tortuga.&lt;br /&gt;
 | [[Archivo:TortugaButia.jpg|thumb|Imagen de tortuga junto al Butiá]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===TortugArte desactualizado===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | Cuando quisimos probar el nuevo código de Bender nos dimos cuenta de que estábamos trabajando sobre una versión antigua de TortugArte. Por lo que, para bajar las modificaciones, tuvimos que familiarizarnos con la herramienta [[#GIT | GIT]], y con los repositorios de Butiá y de TortugArte.&lt;br /&gt;
Una vez bajadas las nuevas versiones nos encontramos con varios cambios en cuanto al método de dibujado. En TortugArte habían cambiado toda la administración de la interfaz gráfica a una biblioteca llamada Cairo, para dibujado en 2D.&lt;br /&gt;
Algunas partes de nuestro programa ya no funcionaban y tuvimos que reescribirlas. Esto no sólo insumió tiempo de trabajo sino que también se notó una gran reducción en la velocidad de ejecución del código. Luego de varios intentos de mejorar los procedimientos que habíamos utilizado, por ejemplo para la imitación de sensores, no logramos obtener la misma velocidad que en un principio.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;oGoWpqOOXoE|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Delay===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | El mayor problema que encontramos fue el de simular el Delay, de la paleta Butiá. El código detrás de este bloque simplemente deja al programa parado durante unos segundos, y el robot real, al ejecutar el mismo, se queda realizando la última orden recibida.&lt;br /&gt;
En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Por lo que si, por ejemplo, queríamos que el Butiá fuera hacia adelante 2 segundos, recién veríamos su nueva posición luego de transcurrido ese tiempo. Probamos muchas cosas pero nada funcionaba.&lt;br /&gt;
Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot; e invocando internamente a &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;RW4GbZvc0kI|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
Este proyecto nos permitió aprender mucho sobre TortugArte, Python, la paleta Butiá y más que nada sobre buenas prácticas de programación.&lt;br /&gt;
Entre todo, queremos destacar dos puntos:&lt;br /&gt;
&lt;br /&gt;
===Trabajo en equipo===&lt;br /&gt;
Este aspecto fue muy necesario, si no esencial, para el buen desarrollo del proyecto. Al principio nos juntábamos los tres para trabajar juntos y ésto implicaba llegar a distintos acuerdos lo más pronto posible. Entre varias personas siempre existen diferentes puntos de vista pero pudimos sobreponernos a eso, teniendo los objetivos en mente.&lt;br /&gt;
Luego, cuando por cuestiones de tiempo no podíamos estar los tres, tuvimos que lograr una comunicación fluida para estar al tanto de los cambios y los agregados.&lt;br /&gt;
&lt;br /&gt;
===Mantener herramientas actualizadas===&lt;br /&gt;
Es importante para un próximo proyecto, o mientras sigamos mejorando éste, trabajar sobre las últimas versiones estables del programa. De otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo, como nos sucedió con los sensores de distancia, contacto y escala de grises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Versión Final==&lt;br /&gt;
===Código fuente paleta Simulador===&lt;br /&gt;
[[Media:Simulador.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
===Código fuente paleta Butiá===&lt;br /&gt;
[[Media:Butia.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
===Video seguidor de líneas===&lt;br /&gt;
&amp;lt;videoflash&amp;gt;urW4o6DbGBk&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trabajo a futuro==&lt;br /&gt;
Obviamente el nuestro, como todos los proyectos, nunca está completamente terminado y siempre hay cosas por mejorar. Hoy, nos planteamos los siguientes puntos:&lt;br /&gt;
*;Agregar funciones a simular&lt;br /&gt;
:La idea es que con el Simulador se puedan hacer todas las cosas que con un Butiá real. Para esto hay que buscar la forma de imitar otros sensores y otros tipos de entornos (objetos que rodean al robot).&lt;br /&gt;
&lt;br /&gt;
*;Acortar tiempos de renderización (dibujado de imágenes)&lt;br /&gt;
:A pesar de que la nueva librería ocasione que el mismo código que utilizamos funcione más lento, debe haber una forma para alcanzar mayores velocidades de dibujado.&lt;br /&gt;
&lt;br /&gt;
*;Ajustar algoritmos para mejorar tiempos&lt;br /&gt;
:Además de encontrar nuevas formas de renderizar el Butiá y el entorno, tal vez un cambio en el código permita que todo funcione más rápido. Para esto sería necesario encontrar nuevas ideas a todas las que probamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Apéndice==&lt;br /&gt;
===Simulación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Simulación&lt;br /&gt;
:Es la imitación de un entorno diferente.&lt;br /&gt;
:&amp;quot;Quiero saber cómo reaccionaría este objeto en un entorno particular&amp;quot;&lt;br /&gt;
:Según R.E. Shannon: &amp;quot;La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias -dentro de los límites impuestos por un cierto criterio o un conjunto de ellos - para el funcionamiento del sistema&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Lenguaje de programación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Lenguaje_de_programación&lt;br /&gt;
:Es un idioma artificial inventado para poder comunicarse con la computadora. Como todo idioma, está formado por un conjunto de símbolos y reglas sintácticas y semánticas.&lt;br /&gt;
&lt;br /&gt;
===Intérprete===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Intérprete_(informática)&lt;br /&gt;
:Es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel como Python. Un lenguaje de alto nivel permite una forma más fácil de comunicarse con la máquina, ya que el código escrito usando el mismo puede ser mejor entendido, tanto por el programador que lo escribe como por otros que lo quieran leer.&lt;br /&gt;
:En nuestro proyecto, usamos el intérprete para Python que viene preinstalado en las XO.&lt;br /&gt;
&lt;br /&gt;
===Biblioteca (o librería)===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Biblioteca_(informática)&lt;br /&gt;
:En resumen, es un conjunto de mini programas y mucho código que ya funciona.&lt;br /&gt;
:Generalmente las bibliotecas ofrecen un conjunto de funciones para controlar algo en particular. De esta forma, hay bibliotecas para controlar sonido, video, imágenes, conexiones a la red, etc.&lt;br /&gt;
&lt;br /&gt;
===IDE===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&lt;br /&gt;
:Integrated Development Environment - Entorno de desarrollo integrado&lt;br /&gt;
:Es un programa para programar. Está compuesto por un conjunto de herramientas para facilitar la programación en determinado lenguaje, o en varios a la vez. Por ejemplo, puede contener un editor de texto que resalte con distintos colores las diferentes partes de un código (variables, constantes, funciones, comentarios, etc.).&lt;br /&gt;
:Las herramientas básicas de las que generalmente consta son: editor de código, compilador y depurador (o debugger, una herramienta que facilita la detección de errores).&lt;br /&gt;
&lt;br /&gt;
===GIT===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Git&lt;br /&gt;
:Es una herramienta que, entre varias cosas, permite compartir código entre muchos programadores. Cada vez que alguien realiza una modificación al programa puede subir esos cambios y así compartir sus avances con los demás.&lt;br /&gt;
:El lugar donde se guarda el código necesario para una aplicación se llama &amp;quot;repositorio&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===API===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Interfaz_de_programación_de_aplicaciones&lt;br /&gt;
:Application Programming Interface - Interfaz de programación de aplicaciones&lt;br /&gt;
:Es un conjunto de funciones residentes en bibliotecas que permiten que una aplicación corra bajo un determinado sistema operativo.&lt;br /&gt;
:Tomando como ejemplo la API Butiá, es el conjunto de operaciones que permiten obtener valores de sensores o ejecutar acciones de los actuadores de forma simple.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2462</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2462"/>
				<updated>2012-04-01T22:19:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Código fuente paleta Butiá */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La simulación es la imitación de un entorno diferente. Permite saber cómo reaccionaría un objeto en un entorno particular, sin necesidad de probarlo en el entorno real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
A nosotros nos permitirá saber cómo reaccionaría el Butiá a nuestras instrucciones, cuando conectemos la computadora al robot real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Elegimos, como proyecto final, la creación de un Simulador para el robot Butiá ya que, de quedar implementado, no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Video y presentación del proyecto====&lt;br /&gt;
&lt;br /&gt;
[http://prezi.com/b2d7rkzy7spd/butia-sim/ Presentación usando Prezi.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;videoflash type=&amp;quot;vimeo&amp;quot;&amp;gt;37703545|400|300&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motivación==&lt;br /&gt;
Trabajando con el robot fuimos identificando, a través de la experiencia personal, diferentes dificultades que se presentaban al querer probar nuestro código.&lt;br /&gt;
&lt;br /&gt;
Puntualmente:&lt;br /&gt;
* poca cantidad de plataformas construidas&lt;br /&gt;
* sensores en malas condiciones&lt;br /&gt;
* baterías descargadas&lt;br /&gt;
* cables desconectados&lt;br /&gt;
* dificultades para reparar las fallas&lt;br /&gt;
&lt;br /&gt;
Sumado a todo esto está el tiempo que se pierde intentando solucionar esos problemas y la motivación de los estudiantes que puede ir disminuyendo, al no poder probar su programa tanto y tan rápido como quisieran. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el equipo presente para poder correr sus códigos. Además de que no pueden hacerlo en sus casas.&lt;br /&gt;
&lt;br /&gt;
Basados en lo anterior, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los robots. &lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del movimiento y las reacciones, sino que también posibilitará el testeo del código de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de ejecutar lo que acaba de programar.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo del proyecto==&lt;br /&gt;
A partir de las etapas formales del desarrollo de una [[#Simulación | Simulación]], podemos describir nuestro trabajo de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
===Objetivos===&lt;br /&gt;
La especificación de objetivos se enmarca en la etapa de Definición del sistema que incluye, además, la decisión de realizar un sistema informático para simular el robot Butiá y la aceptación de las limitaciones del mismo.&lt;br /&gt;
&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Limitaciones===&lt;br /&gt;
No obstante nuestros objetivos, es necesario aceptar y aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado. Por ejemplo, los valores devueltos por los sensores serán exactos, no se verán afectados por las condiciones del ambiente, así como la luz afecta al sensor de escala de grises. Por esto, antes de estar seguros que un algoritmo funciona será necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Investigación de herramientas===&lt;br /&gt;
Los siguientes tres pasos teóricos son Formulación del modelo, definición de la Colección de datos necesaria e Implementación del modelo. En nuestro trabajo, los realizamos en conjunto.&lt;br /&gt;
El primer problema fue decidir qué herramientas íbamos a usar para desarrollar la aplicación y qué componentes iba a tener el sistema.&lt;br /&gt;
Más allá de las herramientas, decidimos que necesitaríamos dos componentes básicos: el motor que simule las reacciones del robot y del entorno, y la interfaz gráfica que muestre en pantalla los resultados.&lt;br /&gt;
&lt;br /&gt;
====Motor de simulación====&lt;br /&gt;
Consiste en el conjunto de operaciones que se deben realizar para, a partir de una instrucción dada al robot, obtener como resultado cuál sería su reacción. Por ejemplo, si se recibe una orden para que el robot vaya hacia adelante, el motor de simulación devolverá todo el tiempo la posición que debe tener el Butiá a partir de la posición inicial.&lt;br /&gt;
Además debe calcular cómo reaccionaría el ambiente a las acciones del robot y viceversa. Como ejemplo, si el robot llega a una pared no debe poder avanzar, o, si se choca con un obstáculo liviano, éste se debe mover cediendo a la fuerza del Butiá.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para el motor, principalmente lo que se debe decidir es el [[#Lenguaje de programación | Lenguaje de programación]] a utilizar. También el sistema operativo y la máquina que lo ejecutará.&lt;br /&gt;
No dudamos mucho en este punto. El simulador en su conjunto debía poder ser utilizado en una XO, por lo tanto el sistema operativo debía ser Linux y el lenguaje Python, porque las XO ya traen un [[#Intérprete | Intérprete]].&lt;br /&gt;
&lt;br /&gt;
====Interfaz Gráfica====&lt;br /&gt;
La interfaz o GUI por sus siglas en inglés (Graphic User Interface) ofrece una forma agradable de ver los datos devueltos por el motor. Existen diversas interfaces cuando hablamos de simulaciones, generalmente se componen de imágenes y símbolos que permiten identificar lo que está sucediendo en el ambiente simulado y relacionarlo con lo que pasaría en el ambiente real. Van desde gráficos y cifras mostradas en pantalla hasta imágenes en 2D y 3D.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para su mejor comprensión, el simulador debía tener una interfaz gráfica que represente al robot y su entorno en 2D o 3D.&lt;br /&gt;
Investigando un poco, dimos con 4 opciones:&lt;br /&gt;
*;ODE (PyODE)&lt;br /&gt;
:http://www.ode.org/&lt;br /&gt;
:ODE es una [[#Biblioteca | Biblioteca]] (o librería) para generar ambientes simulados en 2D y 3D. Es una herramienta muy potente y que permite un control absoluto sobre todos los objetos que componen el ambiente. Permite detectar colisiones (choques), obtener distancias, y tiene toda la física ya simulada. Es decir, si, por ejemplo, un objeto con más masa empuja a otro, el segundo se moverá con determinada velocidad debido a las reglas físicas que allí se aplican. Lo mismo sucede con objetos que caen del cielo, etc.&lt;br /&gt;
:ODE está realizado en un lenguaje de programación llamado &amp;quot;C++&amp;quot;. Pero incluso existe una adaptación a Python con las mismas potencialidades.&lt;br /&gt;
:Llegamos a hacer algunas pruebas. Específicamente, logramos instalarlo y hacer funcionar los ejemplos pre-programados en una máquina con Linux. Y también ejecutar un ejemplo propio de un ambiente en 2D.&lt;br /&gt;
:Lo malo fue que, al tener tanta potencia, es difícil de aprender y utilizar en el poco tiempo del que disponíamos.&lt;br /&gt;
&lt;br /&gt;
*;OpenRAVE&lt;br /&gt;
:http://openrave.programmingvision.com/en/main/index.html&lt;br /&gt;
:Es una aplicación ampliamente utilizada para simular robots. Ideal! Si, pero la principal limitación es que ya dispone de un [[#IDE | IDE]] sobre el que se debe trabajar. El mismo puede ser instalado tanto en Linux como en Windows, esto puede ser visto como un punto fuerte. Pero el consumo de memoria es muy elevado como para ser instalado en una XO.&lt;br /&gt;
:Como comentario, el IDE permite la visualización de todo el entorno. El mismo puede ser diseñado con la misma herramienta, tanto el robot como los objetos que lo rodean. También existen ejemplos programados.&lt;br /&gt;
&lt;br /&gt;
*;TortugArte&lt;br /&gt;
:http://wiki.sugarlabs.org/go/Activities/TurtleArt&lt;br /&gt;
:Es una aplicación que permite programar a través de la unión de diferentes bloques, como si de un puzle se tratara. Cada uno de ellos cumple una función específica y juntos conforman el código del programa que se está creando. Puede ser visto como un IDE para niños.&lt;br /&gt;
:Cuando surgió esta opción, inmediatamente se presentó como la más apta. Por qué no? Si las XO ya lo tienen instalado. O sea que sería cuestión de simplemente realizarle alguna ampliación o modificación para satisfacer nuestras necesidades.&lt;br /&gt;
:La idea fue modificar la paleta existente que permite controlar al Butiá para que, si el mismo no se encuentra enchufado, las instrucciones se envíen al motor de simulación. Luego vimos la necesidad de agregar nuestra propia paleta con más opciones.&lt;br /&gt;
&lt;br /&gt;
*;Physics&lt;br /&gt;
:http://wiki.laptop.org/go/Python_Physics&lt;br /&gt;
:Mientras estábamos empezando a plantearnos a TortugArte como el candidato para la simulacion, surgió otra idea... Y si usamos Physics para así tener el control sobre la física que tanto deseábamos?&lt;br /&gt;
:Physics es un conjunto de bibliotecas para aplicar leyes físicas a los objetos simulados, de la misma forma que se hace con ODE. Lo bueno es que Physics es mucho más básico y fácil de utilizar, además de que ya viene instalado en las XO.&lt;br /&gt;
:La idea era programar con TortugArte, enviar las instrucciones al motor y luego mostrarlos en el ambiente creado con esta herramienta. Igual que con ODE, vimos que resultaría un poco inviable por los tiempos de aprendizaje.&lt;br /&gt;
:Más adelante, durante el desarrollo del simulador, intentamos utilizar un plugin de Physics para TortugArte, pero nunca lo pudimos hacer funcionar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En conclusión, llegamos al acuerdo de que TortugArte era lo mejor. Que, además de todas sus bondades, nos permite enviar las instrucciones de una forma simple y ver los resultados del motor desde un solo lugar. Algo que no obtendríamos con ninguna de las otras herramientas utilizadas por sí solas.&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TortugArte que encontramos en la wiki de SugarLabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Cómo escribir un plugin])&lt;br /&gt;
&lt;br /&gt;
===Pruebas realizadas===&lt;br /&gt;
Siguiendo las etapas teóricas, aún nos falta abarcar las 4 siguientes: Verificación, Validación del sistema, Experimentación e Interpretación.&lt;br /&gt;
Las últimas dos las podremos llevar a cabo cuando el Simulador sea utilizado principalmente por los estudiantes y profesores, y cuando obtengamos sus opiniones al respecto.&lt;br /&gt;
&lt;br /&gt;
====Verificación====&lt;br /&gt;
A medida que desarrollábamos una nueva funcionalidad, la misma era probada hasta comprobar que cumplía con nuestras exigencias. En esta etapa siempre surgió algún problema que nos permitió aprender más sobre TortugArte, sobre Python o sobre algún otro detalle que necesitábamos para continuar con el proyecto, y que también nos ayudó a crecer en nuestro conocimiento general.&lt;br /&gt;
&lt;br /&gt;
====Validación====&lt;br /&gt;
Como parte del curso de Extensión Butiá tuvimos que hacer una presentación de nuestro proyecto. Luego de la cual los profesores nos plantearon sus dudas, comentarios e ideas. No obstante, también será necesaria la opinión de expertos en educación orientada a niños y adolescentes para saber si el uso del simulador es posible. Además, cuando el proyecto se encuentre en un punto más avanzado de su desarrollo, es decir cuando se ajusten detalles en las funcionalidades del sistema, podrá realizarse un estudio más profundo sobre las diferencias entre los resultados arrojados por el motor de simulación y la realidad.&lt;br /&gt;
Sin embargo, esta primera validación nos dejó ya con una serie de puntos a mejorar. Que se encuentran más [[#Trabajo a futuro | abajo]].&lt;br /&gt;
&lt;br /&gt;
===Documentación===&lt;br /&gt;
La etapa final es la realización de dos manuales: uno técnico y otro de usuario. El manual técnico deberá detallar las herramientas y técnicas utilizadas para la programación del sistema. El manual de usuario debe ser una guía de fácil comprensión para una persona que nunca usó el simulador.&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual técnico====&lt;br /&gt;
=====Sobre el plugin=====&lt;br /&gt;
Como ya fue mencionado, el Simulador es un plugin para TortugArte. Lo que hicimos fue modificar la paleta creada para controlar el robot Butiá de manera que, si no está enchufado, las órdenes de los bloques se envían al motor de simulación. Además creamos otra paleta para ubicar nuestras funciones particulares.&lt;br /&gt;
&lt;br /&gt;
=====El motor=====&lt;br /&gt;
El motor se comporta como una máquina de estados. Por ejemplo, cuando se recibe la orden de ir hacia adelante, se cambia el valor de la variable que almacena el estado interno a ADELANTE.&lt;br /&gt;
Debido a que el robot real realiza continuamente la última acción indicada, debimos buscar una forma de que el motor ejecutara todo el tiempo la acción correspondiente al estado actual, hasta que éste cambie. Para esto se decidió agregar un bloque llamado &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====El bloque Actualizar mundo=====&lt;br /&gt;
Este bloque invoca a una función del motor que calcula las reacciones del robot, como ubicación y ángulo de giro, dependiendo del estado actual. Entonces, cada vez que se recibe una orden, sólo se cambia el estado actual, y recién cuando se invoque a la función &amp;quot;Actualizar mundo&amp;quot; se calcularán las reacciones del robot y del entorno.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
Entre las carpetas de los plugins para TortugArte se encuentra una con el código usado por el simulador. En el mismo se definen todas las funciones del motor y se crea una nueva paleta que contiene bloques para:&lt;br /&gt;
* Actualizar mundo&lt;br /&gt;
* Cargar pistas prediseñadas&lt;br /&gt;
* Cambiar la imagen de la tortuga por la de un Butiá&lt;br /&gt;
* Imitar el Delay de la paleta existente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual de usuario====&lt;br /&gt;
=====Iniciar el simulador=====&lt;br /&gt;
Para poder utilizar el simulador sólo será necesario abrir TortugArte de la manera habitual, suponiendo que el mismo ya contiene nuestro plugin. Todas las funciones se cargarán sin que el usuario deba hacer alguna acción particular.&lt;br /&gt;
&lt;br /&gt;
=====Programar un comportamiento=====&lt;br /&gt;
Para programar un comportamiento se deben usar los mismos bloques que para el robot Butiá. La diferencia reside en que, para que el movimiento del robot se vea más de una vez, es decir que resulte constante como con el real, es necesario encerrar todo el comportamiento en un bucle infinito (como ya se hace para el Butiá) y además agregar el bloque &amp;quot;Actualizar mundo&amp;quot; en primer o último lugar.&lt;br /&gt;
También, si se desea reutilizar un código ya programado, se debe agregar este bloque, porque de lo contrario la tortuga en pantalla no se moverá con los cambios calculados por el motor.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
En la nueva paleta aparecen algunas funciones útiles, incluyendo el bloque &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*;Cargando pistas&lt;br /&gt;
:Hay cuatro bloques que cargan pistas prediseñadas, aunque también se pueden cargar las propias.&lt;br /&gt;
:Para cargar una pista propia se debe utilizar el bloque &amp;quot;Dibujar pista&amp;quot; y conectarle una entrada del diario que contenga una imagen. Esta imagen se cargará como pista en el fondo de la pantalla.&lt;br /&gt;
&lt;br /&gt;
*;Cambiando la imagen de la tortuga&lt;br /&gt;
:El bloque &amp;quot;Butia&amp;quot; cambia la imagen clásica de la tortuga por la del robot visto desde arriba.&lt;br /&gt;
:Para ejecutarlo se lo debe arrastrar al área de trabajo y cliquearlo una sola vez.&lt;br /&gt;
&lt;br /&gt;
*;Dibujando obstáculos&lt;br /&gt;
:Los bloques &amp;quot;Empezar obstáculo&amp;quot; y &amp;quot;Terminar obstáculo&amp;quot; permiten dibujar un obstáculo. Es recomendable usar éstos al momento de trazar líneas que funcionarán como, por ejemplo, paredes, ya que los bloques cambian el color y el grosor del lápiz a valores particulares que el motor reconoce como obstáculo y no lo pasa por arriba como si fuera parte del piso.&lt;br /&gt;
&lt;br /&gt;
*;Delay&lt;br /&gt;
:El bloque &amp;quot;Delay Butia Sim&amp;quot; imita el funcionamiento del bloque &amp;quot;Delay Butia&amp;quot;.&lt;br /&gt;
:Para ejecutarlo basta con arrastrarlo al área de trabajo, colocar la cantidad de segundos que el robot debe mantenerse ejecutando su última acción y luego darle click o ponerlo dentro del código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemas==&lt;br /&gt;
Como mencionamos, en las etapas de implementación y verificación del sistema nos fuimos enfrentando a diversos problemas.&lt;br /&gt;
&lt;br /&gt;
===Actualizar mundo===&lt;br /&gt;
{| style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
 | Este fue el primero de todos. Como también ya dijimos, necesitábamos una forma de mostrar la nueva posición del robot y las reacciones del ambiente de acuerdo a la última orden recibida.&lt;br /&gt;
Lo resolvimos con el bloque &amp;quot;Actualizar mundo&amp;quot;, que debe ser ejecutado en cada iteración del programa.&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[Archivo:ActualizarMundo.jpg‎|thumb|Imagen del bloque]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Escala de grises===&lt;br /&gt;
{| style=&amp;quot;width:98%;&amp;quot; &lt;br /&gt;
 | Este sensor devuelve un número de acuerdo al color que tiene debajo. Normalmente se coloca delante del robot y en el medio para un seguidor de líneas, su uso clásico.&lt;br /&gt;
TortugArte ya trae implementada una función llamada get_pixel que devuelve el color debajo del centro de la tortuga. Nuestro problema era que lo necésitábamos en la cabeza ya que, si lo usábamos así y queríamos emular el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice.&lt;br /&gt;
La solución fue mover la tortuga de tal forma que su centro quedara en el punto donde antes estaba la cabeza, para obtener el valor devuelto por get_pixel y luego volver a la posición inicial. Todo esto de forma invisible para el usuario, quien tiene la impresión de que la tortuga no se movió de su lugar.&lt;br /&gt;
 | [[Archivo:DiffEscalaGrises.jpg‎|thumb|Diferencias de valores devueltos por Escala de grises]]&lt;br /&gt;
 | style=&amp;quot;vertical-align:top&amp;quot; | [[Archivo:EscalaGrises.jpg‎|thumb|Secuencia de código usando Escala de grises]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fuera tortuga, hola Butiá===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, por una del robot Butiá. En principio esto no resultó complicado, ya que se pueden usar las funciones de Tortugarte para hacerlo. El problema fue que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Es decir, si hacíamos al Butiá recorrer una pista circular, la imagen sólo adoptaba cuatros posiciones sobre su eje.&lt;br /&gt;
Para solucionar el problema nos comunicarnos con Walter Bender, uno de los creadores de TortugArte, intentando obtener algo de ayuda. Lo que hizo fue modificar el código que dibuja la imagen de la tortuga.&lt;br /&gt;
 | [[Archivo:TortugaButia.jpg|thumb|Imagen de tortuga junto al Butiá]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===TortugArte desactualizado===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | Cuando quisimos probar el nuevo código de Bender nos dimos cuenta de que estábamos trabajando sobre una versión antigua de TortugArte. Por lo que, para bajar las modificaciones, tuvimos que familiarizarnos con la herramienta [[#GIT | GIT]], y con los repositorios de Butiá y de TortugArte.&lt;br /&gt;
Una vez bajadas las nuevas versiones nos encontramos con varios cambios en cuanto al método de dibujado. En TortugArte habían cambiado toda la administración de la interfaz gráfica a una biblioteca llamada Cairo, para dibujado en 2D.&lt;br /&gt;
Algunas partes de nuestro programa ya no funcionaban y tuvimos que reescribirlas. Esto no sólo insumió tiempo de trabajo sino que también se notó una gran reducción en la velocidad de ejecución del código. Luego de varios intentos de mejorar los procedimientos que habíamos utilizado, por ejemplo para la imitación de sensores, no logramos obtener la misma velocidad que en un principio.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;oGoWpqOOXoE|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Delay===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | El mayor problema que encontramos fue el de simular el Delay, de la paleta Butiá. El código detrás de este bloque simplemente deja al programa parado durante unos segundos, y el robot real, al ejecutar el mismo, se queda realizando la última orden recibida.&lt;br /&gt;
En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Por lo que si, por ejemplo, queríamos que el Butiá fuera hacia adelante 2 segundos, recién veríamos su nueva posición luego de transcurrido ese tiempo. Probamos muchas cosas pero nada funcionaba.&lt;br /&gt;
Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot; e invocando internamente a &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;RW4GbZvc0kI|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
Este proyecto nos permitió aprender mucho sobre TortugArte, Python, la paleta Butiá y más que nada sobre buenas prácticas de programación.&lt;br /&gt;
Entre todo, queremos destacar dos puntos:&lt;br /&gt;
&lt;br /&gt;
===Trabajo en equipo===&lt;br /&gt;
Este aspecto fue muy necesario, si no esencial, para el buen desarrollo del proyecto. Al principio nos juntábamos los tres para trabajar juntos y ésto implicaba llegar a distintos acuerdos lo más pronto posible. Entre varias personas siempre existen diferentes puntos de vista pero pudimos sobreponernos a eso, teniendo los objetivos en mente.&lt;br /&gt;
Luego, cuando por cuestiones de tiempo no podíamos estar los tres, tuvimos que lograr una comunicación fluida para estar al tanto de los cambios y los agregados.&lt;br /&gt;
&lt;br /&gt;
===Mantener herramientas actualizadas===&lt;br /&gt;
Es importante para un próximo proyecto, o mientras sigamos mejorando éste, trabajar sobre las últimas versiones estables del programa. De otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo, como nos sucedió con los sensores de distancia, contacto y escala de grises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Versión Final==&lt;br /&gt;
===Código fuente paleta Simulador===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Código fuente paleta Butiá===&lt;br /&gt;
[[Media:Butia.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
===Video seguidor de líneas===&lt;br /&gt;
&amp;lt;videoflash&amp;gt;urW4o6DbGBk&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trabajo a futuro==&lt;br /&gt;
Obviamente el nuestro, como todos los proyectos, nunca está completamente terminado y siempre hay cosas por mejorar. Hoy, nos planteamos los siguientes puntos:&lt;br /&gt;
*;Agregar funciones a simular&lt;br /&gt;
:La idea es que con el Simulador se puedan hacer todas las cosas que con un Butiá real. Para esto hay que buscar la forma de imitar otros sensores y otros tipos de entornos (objetos que rodean al robot).&lt;br /&gt;
&lt;br /&gt;
*;Acortar tiempos de renderización (dibujado de imágenes)&lt;br /&gt;
:A pesar de que la nueva librería ocasione que el mismo código que utilizamos funcione más lento, debe haber una forma para alcanzar mayores velocidades de dibujado.&lt;br /&gt;
&lt;br /&gt;
*;Ajustar algoritmos para mejorar tiempos&lt;br /&gt;
:Además de encontrar nuevas formas de renderizar el Butiá y el entorno, tal vez un cambio en el código permita que todo funcione más rápido. Para esto sería necesario encontrar nuevas ideas a todas las que probamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Apéndice==&lt;br /&gt;
===Simulación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Simulación&lt;br /&gt;
:Es la imitación de un entorno diferente.&lt;br /&gt;
:&amp;quot;Quiero saber cómo reaccionaría este objeto en un entorno particular&amp;quot;&lt;br /&gt;
:Según R.E. Shannon: &amp;quot;La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias -dentro de los límites impuestos por un cierto criterio o un conjunto de ellos - para el funcionamiento del sistema&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Lenguaje de programación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Lenguaje_de_programación&lt;br /&gt;
:Es un idioma artificial inventado para poder comunicarse con la computadora. Como todo idioma, está formado por un conjunto de símbolos y reglas sintácticas y semánticas.&lt;br /&gt;
&lt;br /&gt;
===Intérprete===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Intérprete_(informática)&lt;br /&gt;
:Es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel como Python. Un lenguaje de alto nivel permite una forma más fácil de comunicarse con la máquina, ya que el código escrito usando el mismo puede ser mejor entendido, tanto por el programador que lo escribe como por otros que lo quieran leer.&lt;br /&gt;
:En nuestro proyecto, usamos el intérprete para Python que viene preinstalado en las XO.&lt;br /&gt;
&lt;br /&gt;
===Biblioteca (o librería)===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Biblioteca_(informática)&lt;br /&gt;
:En resumen, es un conjunto de mini programas y mucho código que ya funciona.&lt;br /&gt;
:Generalmente las bibliotecas ofrecen un conjunto de funciones para controlar algo en particular. De esta forma, hay bibliotecas para controlar sonido, video, imágenes, conexiones a la red, etc.&lt;br /&gt;
&lt;br /&gt;
===IDE===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&lt;br /&gt;
:Integrated Development Environment - Entorno de desarrollo integrado&lt;br /&gt;
:Es un programa para programar. Está compuesto por un conjunto de herramientas para facilitar la programación en determinado lenguaje, o en varios a la vez. Por ejemplo, puede contener un editor de texto que resalte con distintos colores las diferentes partes de un código (variables, constantes, funciones, comentarios, etc.).&lt;br /&gt;
:Las herramientas básicas de las que generalmente consta son: editor de código, compilador y depurador (o debugger, una herramienta que facilita la detección de errores).&lt;br /&gt;
&lt;br /&gt;
===GIT===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Git&lt;br /&gt;
:Es una herramienta que, entre varias cosas, permite compartir código entre muchos programadores. Cada vez que alguien realiza una modificación al programa puede subir esos cambios y así compartir sus avances con los demás.&lt;br /&gt;
:El lugar donde se guarda el código necesario para una aplicación se llama &amp;quot;repositorio&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===API===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Interfaz_de_programación_de_aplicaciones&lt;br /&gt;
:Application Programming Interface - Interfaz de programación de aplicaciones&lt;br /&gt;
:Es un conjunto de funciones residentes en bibliotecas que permiten que una aplicación corra bajo un determinado sistema operativo.&lt;br /&gt;
:Tomando como ejemplo la API Butiá, es el conjunto de operaciones que permiten obtener valores de sensores o ejecutar acciones de los actuadores de forma simple.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Butia.tar.gz&amp;diff=2461</id>
		<title>Archivo:Butia.tar.gz</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Butia.tar.gz&amp;diff=2461"/>
				<updated>2012-04-01T22:18:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: Código de la versión final de la paleta Butiá con las modificaciones para el Simulador (Domingo, 1 Abril, 2012)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Código de la versión final de la paleta Butiá con las modificaciones para el Simulador (Domingo, 1 Abril, 2012)&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Simulador.tar.gz&amp;diff=2460</id>
		<title>Archivo:Simulador.tar.gz</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Simulador.tar.gz&amp;diff=2460"/>
				<updated>2012-04-01T22:15:55Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: Código de la versión final de la paleta Simulador (Domingo, 1 Abril, 2012)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Código de la versión final de la paleta Simulador (Domingo, 1 Abril, 2012)&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2459</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2459"/>
				<updated>2012-04-01T21:13:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Video seguidor de líneas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La simulación es la imitación de un entorno diferente. Permite saber cómo reaccionaría un objeto en un entorno particular, sin necesidad de probarlo en el entorno real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
A nosotros nos permitirá saber cómo reaccionaría el Butiá a nuestras instrucciones, cuando conectemos la computadora al robot real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Elegimos, como proyecto final, la creación de un Simulador para el robot Butiá ya que, de quedar implementado, no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Video y presentación del proyecto====&lt;br /&gt;
&lt;br /&gt;
[http://prezi.com/b2d7rkzy7spd/butia-sim/ Presentación usando Prezi.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;videoflash type=&amp;quot;vimeo&amp;quot;&amp;gt;37703545|400|300&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motivación==&lt;br /&gt;
Trabajando con el robot fuimos identificando, a través de la experiencia personal, diferentes dificultades que se presentaban al querer probar nuestro código.&lt;br /&gt;
&lt;br /&gt;
Puntualmente:&lt;br /&gt;
* poca cantidad de plataformas construidas&lt;br /&gt;
* sensores en malas condiciones&lt;br /&gt;
* baterías descargadas&lt;br /&gt;
* cables desconectados&lt;br /&gt;
* dificultades para reparar las fallas&lt;br /&gt;
&lt;br /&gt;
Sumado a todo esto está el tiempo que se pierde intentando solucionar esos problemas y la motivación de los estudiantes que puede ir disminuyendo, al no poder probar su programa tanto y tan rápido como quisieran. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el equipo presente para poder correr sus códigos. Además de que no pueden hacerlo en sus casas.&lt;br /&gt;
&lt;br /&gt;
Basados en lo anterior, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los robots. &lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del movimiento y las reacciones, sino que también posibilitará el testeo del código de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de ejecutar lo que acaba de programar.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo del proyecto==&lt;br /&gt;
A partir de las etapas formales del desarrollo de una [[#Simulación | Simulación]], podemos describir nuestro trabajo de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
===Objetivos===&lt;br /&gt;
La especificación de objetivos se enmarca en la etapa de Definición del sistema que incluye, además, la decisión de realizar un sistema informático para simular el robot Butiá y la aceptación de las limitaciones del mismo.&lt;br /&gt;
&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Limitaciones===&lt;br /&gt;
No obstante nuestros objetivos, es necesario aceptar y aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado. Por ejemplo, los valores devueltos por los sensores serán exactos, no se verán afectados por las condiciones del ambiente, así como la luz afecta al sensor de escala de grises. Por esto, antes de estar seguros que un algoritmo funciona será necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Investigación de herramientas===&lt;br /&gt;
Los siguientes tres pasos teóricos son Formulación del modelo, definición de la Colección de datos necesaria e Implementación del modelo. En nuestro trabajo, los realizamos en conjunto.&lt;br /&gt;
El primer problema fue decidir qué herramientas íbamos a usar para desarrollar la aplicación y qué componentes iba a tener el sistema.&lt;br /&gt;
Más allá de las herramientas, decidimos que necesitaríamos dos componentes básicos: el motor que simule las reacciones del robot y del entorno, y la interfaz gráfica que muestre en pantalla los resultados.&lt;br /&gt;
&lt;br /&gt;
====Motor de simulación====&lt;br /&gt;
Consiste en el conjunto de operaciones que se deben realizar para, a partir de una instrucción dada al robot, obtener como resultado cuál sería su reacción. Por ejemplo, si se recibe una orden para que el robot vaya hacia adelante, el motor de simulación devolverá todo el tiempo la posición que debe tener el Butiá a partir de la posición inicial.&lt;br /&gt;
Además debe calcular cómo reaccionaría el ambiente a las acciones del robot y viceversa. Como ejemplo, si el robot llega a una pared no debe poder avanzar, o, si se choca con un obstáculo liviano, éste se debe mover cediendo a la fuerza del Butiá.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para el motor, principalmente lo que se debe decidir es el [[#Lenguaje de programación | Lenguaje de programación]] a utilizar. También el sistema operativo y la máquina que lo ejecutará.&lt;br /&gt;
No dudamos mucho en este punto. El simulador en su conjunto debía poder ser utilizado en una XO, por lo tanto el sistema operativo debía ser Linux y el lenguaje Python, porque las XO ya traen un [[#Intérprete | Intérprete]].&lt;br /&gt;
&lt;br /&gt;
====Interfaz Gráfica====&lt;br /&gt;
La interfaz o GUI por sus siglas en inglés (Graphic User Interface) ofrece una forma agradable de ver los datos devueltos por el motor. Existen diversas interfaces cuando hablamos de simulaciones, generalmente se componen de imágenes y símbolos que permiten identificar lo que está sucediendo en el ambiente simulado y relacionarlo con lo que pasaría en el ambiente real. Van desde gráficos y cifras mostradas en pantalla hasta imágenes en 2D y 3D.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para su mejor comprensión, el simulador debía tener una interfaz gráfica que represente al robot y su entorno en 2D o 3D.&lt;br /&gt;
Investigando un poco, dimos con 4 opciones:&lt;br /&gt;
*;ODE (PyODE)&lt;br /&gt;
:http://www.ode.org/&lt;br /&gt;
:ODE es una [[#Biblioteca | Biblioteca]] (o librería) para generar ambientes simulados en 2D y 3D. Es una herramienta muy potente y que permite un control absoluto sobre todos los objetos que componen el ambiente. Permite detectar colisiones (choques), obtener distancias, y tiene toda la física ya simulada. Es decir, si, por ejemplo, un objeto con más masa empuja a otro, el segundo se moverá con determinada velocidad debido a las reglas físicas que allí se aplican. Lo mismo sucede con objetos que caen del cielo, etc.&lt;br /&gt;
:ODE está realizado en un lenguaje de programación llamado &amp;quot;C++&amp;quot;. Pero incluso existe una adaptación a Python con las mismas potencialidades.&lt;br /&gt;
:Llegamos a hacer algunas pruebas. Específicamente, logramos instalarlo y hacer funcionar los ejemplos pre-programados en una máquina con Linux. Y también ejecutar un ejemplo propio de un ambiente en 2D.&lt;br /&gt;
:Lo malo fue que, al tener tanta potencia, es difícil de aprender y utilizar en el poco tiempo del que disponíamos.&lt;br /&gt;
&lt;br /&gt;
*;OpenRAVE&lt;br /&gt;
:http://openrave.programmingvision.com/en/main/index.html&lt;br /&gt;
:Es una aplicación ampliamente utilizada para simular robots. Ideal! Si, pero la principal limitación es que ya dispone de un [[#IDE | IDE]] sobre el que se debe trabajar. El mismo puede ser instalado tanto en Linux como en Windows, esto puede ser visto como un punto fuerte. Pero el consumo de memoria es muy elevado como para ser instalado en una XO.&lt;br /&gt;
:Como comentario, el IDE permite la visualización de todo el entorno. El mismo puede ser diseñado con la misma herramienta, tanto el robot como los objetos que lo rodean. También existen ejemplos programados.&lt;br /&gt;
&lt;br /&gt;
*;TortugArte&lt;br /&gt;
:http://wiki.sugarlabs.org/go/Activities/TurtleArt&lt;br /&gt;
:Es una aplicación que permite programar a través de la unión de diferentes bloques, como si de un puzle se tratara. Cada uno de ellos cumple una función específica y juntos conforman el código del programa que se está creando. Puede ser visto como un IDE para niños.&lt;br /&gt;
:Cuando surgió esta opción, inmediatamente se presentó como la más apta. Por qué no? Si las XO ya lo tienen instalado. O sea que sería cuestión de simplemente realizarle alguna ampliación o modificación para satisfacer nuestras necesidades.&lt;br /&gt;
:La idea fue modificar la paleta existente que permite controlar al Butiá para que, si el mismo no se encuentra enchufado, las instrucciones se envíen al motor de simulación. Luego vimos la necesidad de agregar nuestra propia paleta con más opciones.&lt;br /&gt;
&lt;br /&gt;
*;Physics&lt;br /&gt;
:http://wiki.laptop.org/go/Python_Physics&lt;br /&gt;
:Mientras estábamos empezando a plantearnos a TortugArte como el candidato para la simulacion, surgió otra idea... Y si usamos Physics para así tener el control sobre la física que tanto deseábamos?&lt;br /&gt;
:Physics es un conjunto de bibliotecas para aplicar leyes físicas a los objetos simulados, de la misma forma que se hace con ODE. Lo bueno es que Physics es mucho más básico y fácil de utilizar, además de que ya viene instalado en las XO.&lt;br /&gt;
:La idea era programar con TortugArte, enviar las instrucciones al motor y luego mostrarlos en el ambiente creado con esta herramienta. Igual que con ODE, vimos que resultaría un poco inviable por los tiempos de aprendizaje.&lt;br /&gt;
:Más adelante, durante el desarrollo del simulador, intentamos utilizar un plugin de Physics para TortugArte, pero nunca lo pudimos hacer funcionar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En conclusión, llegamos al acuerdo de que TortugArte era lo mejor. Que, además de todas sus bondades, nos permite enviar las instrucciones de una forma simple y ver los resultados del motor desde un solo lugar. Algo que no obtendríamos con ninguna de las otras herramientas utilizadas por sí solas.&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TortugArte que encontramos en la wiki de SugarLabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Cómo escribir un plugin])&lt;br /&gt;
&lt;br /&gt;
===Pruebas realizadas===&lt;br /&gt;
Siguiendo las etapas teóricas, aún nos falta abarcar las 4 siguientes: Verificación, Validación del sistema, Experimentación e Interpretación.&lt;br /&gt;
Las últimas dos las podremos llevar a cabo cuando el Simulador sea utilizado principalmente por los estudiantes y profesores, y cuando obtengamos sus opiniones al respecto.&lt;br /&gt;
&lt;br /&gt;
====Verificación====&lt;br /&gt;
A medida que desarrollábamos una nueva funcionalidad, la misma era probada hasta comprobar que cumplía con nuestras exigencias. En esta etapa siempre surgió algún problema que nos permitió aprender más sobre TortugArte, sobre Python o sobre algún otro detalle que necesitábamos para continuar con el proyecto, y que también nos ayudó a crecer en nuestro conocimiento general.&lt;br /&gt;
&lt;br /&gt;
====Validación====&lt;br /&gt;
Como parte del curso de Extensión Butiá tuvimos que hacer una presentación de nuestro proyecto. Luego de la cual los profesores nos plantearon sus dudas, comentarios e ideas. No obstante, también será necesaria la opinión de expertos en educación orientada a niños y adolescentes para saber si el uso del simulador es posible. Además, cuando el proyecto se encuentre en un punto más avanzado de su desarrollo, es decir cuando se ajusten detalles en las funcionalidades del sistema, podrá realizarse un estudio más profundo sobre las diferencias entre los resultados arrojados por el motor de simulación y la realidad.&lt;br /&gt;
Sin embargo, esta primera validación nos dejó ya con una serie de puntos a mejorar. Que se encuentran más [[#Trabajo a futuro | abajo]].&lt;br /&gt;
&lt;br /&gt;
===Documentación===&lt;br /&gt;
La etapa final es la realización de dos manuales: uno técnico y otro de usuario. El manual técnico deberá detallar las herramientas y técnicas utilizadas para la programación del sistema. El manual de usuario debe ser una guía de fácil comprensión para una persona que nunca usó el simulador.&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual técnico====&lt;br /&gt;
=====Sobre el plugin=====&lt;br /&gt;
Como ya fue mencionado, el Simulador es un plugin para TortugArte. Lo que hicimos fue modificar la paleta creada para controlar el robot Butiá de manera que, si no está enchufado, las órdenes de los bloques se envían al motor de simulación. Además creamos otra paleta para ubicar nuestras funciones particulares.&lt;br /&gt;
&lt;br /&gt;
=====El motor=====&lt;br /&gt;
El motor se comporta como una máquina de estados. Por ejemplo, cuando se recibe la orden de ir hacia adelante, se cambia el valor de la variable que almacena el estado interno a ADELANTE.&lt;br /&gt;
Debido a que el robot real realiza continuamente la última acción indicada, debimos buscar una forma de que el motor ejecutara todo el tiempo la acción correspondiente al estado actual, hasta que éste cambie. Para esto se decidió agregar un bloque llamado &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====El bloque Actualizar mundo=====&lt;br /&gt;
Este bloque invoca a una función del motor que calcula las reacciones del robot, como ubicación y ángulo de giro, dependiendo del estado actual. Entonces, cada vez que se recibe una orden, sólo se cambia el estado actual, y recién cuando se invoque a la función &amp;quot;Actualizar mundo&amp;quot; se calcularán las reacciones del robot y del entorno.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
Entre las carpetas de los plugins para TortugArte se encuentra una con el código usado por el simulador. En el mismo se definen todas las funciones del motor y se crea una nueva paleta que contiene bloques para:&lt;br /&gt;
* Actualizar mundo&lt;br /&gt;
* Cargar pistas prediseñadas&lt;br /&gt;
* Cambiar la imagen de la tortuga por la de un Butiá&lt;br /&gt;
* Imitar el Delay de la paleta existente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual de usuario====&lt;br /&gt;
=====Iniciar el simulador=====&lt;br /&gt;
Para poder utilizar el simulador sólo será necesario abrir TortugArte de la manera habitual, suponiendo que el mismo ya contiene nuestro plugin. Todas las funciones se cargarán sin que el usuario deba hacer alguna acción particular.&lt;br /&gt;
&lt;br /&gt;
=====Programar un comportamiento=====&lt;br /&gt;
Para programar un comportamiento se deben usar los mismos bloques que para el robot Butiá. La diferencia reside en que, para que el movimiento del robot se vea más de una vez, es decir que resulte constante como con el real, es necesario encerrar todo el comportamiento en un bucle infinito (como ya se hace para el Butiá) y además agregar el bloque &amp;quot;Actualizar mundo&amp;quot; en primer o último lugar.&lt;br /&gt;
También, si se desea reutilizar un código ya programado, se debe agregar este bloque, porque de lo contrario la tortuga en pantalla no se moverá con los cambios calculados por el motor.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
En la nueva paleta aparecen algunas funciones útiles, incluyendo el bloque &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*;Cargando pistas&lt;br /&gt;
:Hay cuatro bloques que cargan pistas prediseñadas, aunque también se pueden cargar las propias.&lt;br /&gt;
:Para cargar una pista propia se debe utilizar el bloque &amp;quot;Dibujar pista&amp;quot; y conectarle una entrada del diario que contenga una imagen. Esta imagen se cargará como pista en el fondo de la pantalla.&lt;br /&gt;
&lt;br /&gt;
*;Cambiando la imagen de la tortuga&lt;br /&gt;
:El bloque &amp;quot;Butia&amp;quot; cambia la imagen clásica de la tortuga por la del robot visto desde arriba.&lt;br /&gt;
:Para ejecutarlo se lo debe arrastrar al área de trabajo y cliquearlo una sola vez.&lt;br /&gt;
&lt;br /&gt;
*;Dibujando obstáculos&lt;br /&gt;
:Los bloques &amp;quot;Empezar obstáculo&amp;quot; y &amp;quot;Terminar obstáculo&amp;quot; permiten dibujar un obstáculo. Es recomendable usar éstos al momento de trazar líneas que funcionarán como, por ejemplo, paredes, ya que los bloques cambian el color y el grosor del lápiz a valores particulares que el motor reconoce como obstáculo y no lo pasa por arriba como si fuera parte del piso.&lt;br /&gt;
&lt;br /&gt;
*;Delay&lt;br /&gt;
:El bloque &amp;quot;Delay Butia Sim&amp;quot; imita el funcionamiento del bloque &amp;quot;Delay Butia&amp;quot;.&lt;br /&gt;
:Para ejecutarlo basta con arrastrarlo al área de trabajo, colocar la cantidad de segundos que el robot debe mantenerse ejecutando su última acción y luego darle click o ponerlo dentro del código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemas==&lt;br /&gt;
Como mencionamos, en las etapas de implementación y verificación del sistema nos fuimos enfrentando a diversos problemas.&lt;br /&gt;
&lt;br /&gt;
===Actualizar mundo===&lt;br /&gt;
{| style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
 | Este fue el primero de todos. Como también ya dijimos, necesitábamos una forma de mostrar la nueva posición del robot y las reacciones del ambiente de acuerdo a la última orden recibida.&lt;br /&gt;
Lo resolvimos con el bloque &amp;quot;Actualizar mundo&amp;quot;, que debe ser ejecutado en cada iteración del programa.&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[Archivo:ActualizarMundo.jpg‎|thumb|Imagen del bloque]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Escala de grises===&lt;br /&gt;
{| style=&amp;quot;width:98%;&amp;quot; &lt;br /&gt;
 | Este sensor devuelve un número de acuerdo al color que tiene debajo. Normalmente se coloca delante del robot y en el medio para un seguidor de líneas, su uso clásico.&lt;br /&gt;
TortugArte ya trae implementada una función llamada get_pixel que devuelve el color debajo del centro de la tortuga. Nuestro problema era que lo necésitábamos en la cabeza ya que, si lo usábamos así y queríamos emular el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice.&lt;br /&gt;
La solución fue mover la tortuga de tal forma que su centro quedara en el punto donde antes estaba la cabeza, para obtener el valor devuelto por get_pixel y luego volver a la posición inicial. Todo esto de forma invisible para el usuario, quien tiene la impresión de que la tortuga no se movió de su lugar.&lt;br /&gt;
 | [[Archivo:DiffEscalaGrises.jpg‎|thumb|Diferencias de valores devueltos por Escala de grises]]&lt;br /&gt;
 | style=&amp;quot;vertical-align:top&amp;quot; | [[Archivo:EscalaGrises.jpg‎|thumb|Secuencia de código usando Escala de grises]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fuera tortuga, hola Butiá===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, por una del robot Butiá. En principio esto no resultó complicado, ya que se pueden usar las funciones de Tortugarte para hacerlo. El problema fue que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Es decir, si hacíamos al Butiá recorrer una pista circular, la imagen sólo adoptaba cuatros posiciones sobre su eje.&lt;br /&gt;
Para solucionar el problema nos comunicarnos con Walter Bender, uno de los creadores de TortugArte, intentando obtener algo de ayuda. Lo que hizo fue modificar el código que dibuja la imagen de la tortuga.&lt;br /&gt;
 | [[Archivo:TortugaButia.jpg|thumb|Imagen de tortuga junto al Butiá]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===TortugArte desactualizado===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | Cuando quisimos probar el nuevo código de Bender nos dimos cuenta de que estábamos trabajando sobre una versión antigua de TortugArte. Por lo que, para bajar las modificaciones, tuvimos que familiarizarnos con la herramienta [[#GIT | GIT]], y con los repositorios de Butiá y de TortugArte.&lt;br /&gt;
Una vez bajadas las nuevas versiones nos encontramos con varios cambios en cuanto al método de dibujado. En TortugArte habían cambiado toda la administración de la interfaz gráfica a una biblioteca llamada Cairo, para dibujado en 2D.&lt;br /&gt;
Algunas partes de nuestro programa ya no funcionaban y tuvimos que reescribirlas. Esto no sólo insumió tiempo de trabajo sino que también se notó una gran reducción en la velocidad de ejecución del código. Luego de varios intentos de mejorar los procedimientos que habíamos utilizado, por ejemplo para la imitación de sensores, no logramos obtener la misma velocidad que en un principio.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;oGoWpqOOXoE|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Delay===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | El mayor problema que encontramos fue el de simular el Delay, de la paleta Butiá. El código detrás de este bloque simplemente deja al programa parado durante unos segundos, y el robot real, al ejecutar el mismo, se queda realizando la última orden recibida.&lt;br /&gt;
En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Por lo que si, por ejemplo, queríamos que el Butiá fuera hacia adelante 2 segundos, recién veríamos su nueva posición luego de transcurrido ese tiempo. Probamos muchas cosas pero nada funcionaba.&lt;br /&gt;
Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot; e invocando internamente a &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;RW4GbZvc0kI|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
Este proyecto nos permitió aprender mucho sobre TortugArte, Python, la paleta Butiá y más que nada sobre buenas prácticas de programación.&lt;br /&gt;
Entre todo, queremos destacar dos puntos:&lt;br /&gt;
&lt;br /&gt;
===Trabajo en equipo===&lt;br /&gt;
Este aspecto fue muy necesario, si no esencial, para el buen desarrollo del proyecto. Al principio nos juntábamos los tres para trabajar juntos y ésto implicaba llegar a distintos acuerdos lo más pronto posible. Entre varias personas siempre existen diferentes puntos de vista pero pudimos sobreponernos a eso, teniendo los objetivos en mente.&lt;br /&gt;
Luego, cuando por cuestiones de tiempo no podíamos estar los tres, tuvimos que lograr una comunicación fluida para estar al tanto de los cambios y los agregados.&lt;br /&gt;
&lt;br /&gt;
===Mantener herramientas actualizadas===&lt;br /&gt;
Es importante para un próximo proyecto, o mientras sigamos mejorando éste, trabajar sobre las últimas versiones estables del programa. De otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo, como nos sucedió con los sensores de distancia, contacto y escala de grises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Versión Final==&lt;br /&gt;
===Código fuente paleta Simulador===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Código fuente paleta Butiá===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Video seguidor de líneas===&lt;br /&gt;
&amp;lt;videoflash&amp;gt;urW4o6DbGBk&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trabajo a futuro==&lt;br /&gt;
Obviamente el nuestro, como todos los proyectos, nunca está completamente terminado y siempre hay cosas por mejorar. Hoy, nos planteamos los siguientes puntos:&lt;br /&gt;
*;Agregar funciones a simular&lt;br /&gt;
:La idea es que con el Simulador se puedan hacer todas las cosas que con un Butiá real. Para esto hay que buscar la forma de imitar otros sensores y otros tipos de entornos (objetos que rodean al robot).&lt;br /&gt;
&lt;br /&gt;
*;Acortar tiempos de renderización (dibujado de imágenes)&lt;br /&gt;
:A pesar de que la nueva librería ocasione que el mismo código que utilizamos funcione más lento, debe haber una forma para alcanzar mayores velocidades de dibujado.&lt;br /&gt;
&lt;br /&gt;
*;Ajustar algoritmos para mejorar tiempos&lt;br /&gt;
:Además de encontrar nuevas formas de renderizar el Butiá y el entorno, tal vez un cambio en el código permita que todo funcione más rápido. Para esto sería necesario encontrar nuevas ideas a todas las que probamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Apéndice==&lt;br /&gt;
===Simulación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Simulación&lt;br /&gt;
:Es la imitación de un entorno diferente.&lt;br /&gt;
:&amp;quot;Quiero saber cómo reaccionaría este objeto en un entorno particular&amp;quot;&lt;br /&gt;
:Según R.E. Shannon: &amp;quot;La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias -dentro de los límites impuestos por un cierto criterio o un conjunto de ellos - para el funcionamiento del sistema&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Lenguaje de programación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Lenguaje_de_programación&lt;br /&gt;
:Es un idioma artificial inventado para poder comunicarse con la computadora. Como todo idioma, está formado por un conjunto de símbolos y reglas sintácticas y semánticas.&lt;br /&gt;
&lt;br /&gt;
===Intérprete===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Intérprete_(informática)&lt;br /&gt;
:Es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel como Python. Un lenguaje de alto nivel permite una forma más fácil de comunicarse con la máquina, ya que el código escrito usando el mismo puede ser mejor entendido, tanto por el programador que lo escribe como por otros que lo quieran leer.&lt;br /&gt;
:En nuestro proyecto, usamos el intérprete para Python que viene preinstalado en las XO.&lt;br /&gt;
&lt;br /&gt;
===Biblioteca (o librería)===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Biblioteca_(informática)&lt;br /&gt;
:En resumen, es un conjunto de mini programas y mucho código que ya funciona.&lt;br /&gt;
:Generalmente las bibliotecas ofrecen un conjunto de funciones para controlar algo en particular. De esta forma, hay bibliotecas para controlar sonido, video, imágenes, conexiones a la red, etc.&lt;br /&gt;
&lt;br /&gt;
===IDE===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&lt;br /&gt;
:Integrated Development Environment - Entorno de desarrollo integrado&lt;br /&gt;
:Es un programa para programar. Está compuesto por un conjunto de herramientas para facilitar la programación en determinado lenguaje, o en varios a la vez. Por ejemplo, puede contener un editor de texto que resalte con distintos colores las diferentes partes de un código (variables, constantes, funciones, comentarios, etc.).&lt;br /&gt;
:Las herramientas básicas de las que generalmente consta son: editor de código, compilador y depurador (o debugger, una herramienta que facilita la detección de errores).&lt;br /&gt;
&lt;br /&gt;
===GIT===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Git&lt;br /&gt;
:Es una herramienta que, entre varias cosas, permite compartir código entre muchos programadores. Cada vez que alguien realiza una modificación al programa puede subir esos cambios y así compartir sus avances con los demás.&lt;br /&gt;
:El lugar donde se guarda el código necesario para una aplicación se llama &amp;quot;repositorio&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===API===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Interfaz_de_programación_de_aplicaciones&lt;br /&gt;
:Application Programming Interface - Interfaz de programación de aplicaciones&lt;br /&gt;
:Es un conjunto de funciones residentes en bibliotecas que permiten que una aplicación corra bajo un determinado sistema operativo.&lt;br /&gt;
:Tomando como ejemplo la API Butiá, es el conjunto de operaciones que permiten obtener valores de sensores o ejecutar acciones de los actuadores de forma simple.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2458</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=2458"/>
				<updated>2012-04-01T19:20:51Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La simulación es la imitación de un entorno diferente. Permite saber cómo reaccionaría un objeto en un entorno particular, sin necesidad de probarlo en el entorno real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
A nosotros nos permitirá saber cómo reaccionaría el Butiá a nuestras instrucciones, cuando conectemos la computadora al robot real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Elegimos, como proyecto final, la creación de un Simulador para el robot Butiá ya que, de quedar implementado, no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Video y presentación del proyecto====&lt;br /&gt;
&lt;br /&gt;
[http://prezi.com/b2d7rkzy7spd/butia-sim/ Presentación usando Prezi.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;videoflash type=&amp;quot;vimeo&amp;quot;&amp;gt;37703545|400|300&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motivación==&lt;br /&gt;
Trabajando con el robot fuimos identificando, a través de la experiencia personal, diferentes dificultades que se presentaban al querer probar nuestro código.&lt;br /&gt;
&lt;br /&gt;
Puntualmente:&lt;br /&gt;
* poca cantidad de plataformas construidas&lt;br /&gt;
* sensores en malas condiciones&lt;br /&gt;
* baterías descargadas&lt;br /&gt;
* cables desconectados&lt;br /&gt;
* dificultades para reparar las fallas&lt;br /&gt;
&lt;br /&gt;
Sumado a todo esto está el tiempo que se pierde intentando solucionar esos problemas y la motivación de los estudiantes que puede ir disminuyendo, al no poder probar su programa tanto y tan rápido como quisieran. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el equipo presente para poder correr sus códigos. Además de que no pueden hacerlo en sus casas.&lt;br /&gt;
&lt;br /&gt;
Basados en lo anterior, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los robots. &lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del movimiento y las reacciones, sino que también posibilitará el testeo del código de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de ejecutar lo que acaba de programar.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo del proyecto==&lt;br /&gt;
A partir de las etapas formales del desarrollo de una [[#Simulación | Simulación]], podemos describir nuestro trabajo de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
===Objetivos===&lt;br /&gt;
La especificación de objetivos se enmarca en la etapa de Definición del sistema que incluye, además, la decisión de realizar un sistema informático para simular el robot Butiá y la aceptación de las limitaciones del mismo.&lt;br /&gt;
&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Limitaciones===&lt;br /&gt;
No obstante nuestros objetivos, es necesario aceptar y aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado. Por ejemplo, los valores devueltos por los sensores serán exactos, no se verán afectados por las condiciones del ambiente, así como la luz afecta al sensor de escala de grises. Por esto, antes de estar seguros que un algoritmo funciona será necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Investigación de herramientas===&lt;br /&gt;
Los siguientes tres pasos teóricos son Formulación del modelo, definición de la Colección de datos necesaria e Implementación del modelo. En nuestro trabajo, los realizamos en conjunto.&lt;br /&gt;
El primer problema fue decidir qué herramientas íbamos a usar para desarrollar la aplicación y qué componentes iba a tener el sistema.&lt;br /&gt;
Más allá de las herramientas, decidimos que necesitaríamos dos componentes básicos: el motor que simule las reacciones del robot y del entorno, y la interfaz gráfica que muestre en pantalla los resultados.&lt;br /&gt;
&lt;br /&gt;
====Motor de simulación====&lt;br /&gt;
Consiste en el conjunto de operaciones que se deben realizar para, a partir de una instrucción dada al robot, obtener como resultado cuál sería su reacción. Por ejemplo, si se recibe una orden para que el robot vaya hacia adelante, el motor de simulación devolverá todo el tiempo la posición que debe tener el Butiá a partir de la posición inicial.&lt;br /&gt;
Además debe calcular cómo reaccionaría el ambiente a las acciones del robot y viceversa. Como ejemplo, si el robot llega a una pared no debe poder avanzar, o, si se choca con un obstáculo liviano, éste se debe mover cediendo a la fuerza del Butiá.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para el motor, principalmente lo que se debe decidir es el [[#Lenguaje de programación | Lenguaje de programación]] a utilizar. También el sistema operativo y la máquina que lo ejecutará.&lt;br /&gt;
No dudamos mucho en este punto. El simulador en su conjunto debía poder ser utilizado en una XO, por lo tanto el sistema operativo debía ser Linux y el lenguaje Python, porque las XO ya traen un [[#Intérprete | Intérprete]].&lt;br /&gt;
&lt;br /&gt;
====Interfaz Gráfica====&lt;br /&gt;
La interfaz o GUI por sus siglas en inglés (Graphic User Interface) ofrece una forma agradable de ver los datos devueltos por el motor. Existen diversas interfaces cuando hablamos de simulaciones, generalmente se componen de imágenes y símbolos que permiten identificar lo que está sucediendo en el ambiente simulado y relacionarlo con lo que pasaría en el ambiente real. Van desde gráficos y cifras mostradas en pantalla hasta imágenes en 2D y 3D.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para su mejor comprensión, el simulador debía tener una interfaz gráfica que represente al robot y su entorno en 2D o 3D.&lt;br /&gt;
Investigando un poco, dimos con 4 opciones:&lt;br /&gt;
*;ODE (PyODE)&lt;br /&gt;
:http://www.ode.org/&lt;br /&gt;
:ODE es una [[#Biblioteca | Biblioteca]] (o librería) para generar ambientes simulados en 2D y 3D. Es una herramienta muy potente y que permite un control absoluto sobre todos los objetos que componen el ambiente. Permite detectar colisiones (choques), obtener distancias, y tiene toda la física ya simulada. Es decir, si, por ejemplo, un objeto con más masa empuja a otro, el segundo se moverá con determinada velocidad debido a las reglas físicas que allí se aplican. Lo mismo sucede con objetos que caen del cielo, etc.&lt;br /&gt;
:ODE está realizado en un lenguaje de programación llamado &amp;quot;C++&amp;quot;. Pero incluso existe una adaptación a Python con las mismas potencialidades.&lt;br /&gt;
:Llegamos a hacer algunas pruebas. Específicamente, logramos instalarlo y hacer funcionar los ejemplos pre-programados en una máquina con Linux. Y también ejecutar un ejemplo propio de un ambiente en 2D.&lt;br /&gt;
:Lo malo fue que, al tener tanta potencia, es difícil de aprender y utilizar en el poco tiempo del que disponíamos.&lt;br /&gt;
&lt;br /&gt;
*;OpenRAVE&lt;br /&gt;
:http://openrave.programmingvision.com/en/main/index.html&lt;br /&gt;
:Es una aplicación ampliamente utilizada para simular robots. Ideal! Si, pero la principal limitación es que ya dispone de un [[#IDE | IDE]] sobre el que se debe trabajar. El mismo puede ser instalado tanto en Linux como en Windows, esto puede ser visto como un punto fuerte. Pero el consumo de memoria es muy elevado como para ser instalado en una XO.&lt;br /&gt;
:Como comentario, el IDE permite la visualización de todo el entorno. El mismo puede ser diseñado con la misma herramienta, tanto el robot como los objetos que lo rodean. También existen ejemplos programados.&lt;br /&gt;
&lt;br /&gt;
*;TortugArte&lt;br /&gt;
:http://wiki.sugarlabs.org/go/Activities/TurtleArt&lt;br /&gt;
:Es una aplicación que permite programar a través de la unión de diferentes bloques, como si de un puzle se tratara. Cada uno de ellos cumple una función específica y juntos conforman el código del programa que se está creando. Puede ser visto como un IDE para niños.&lt;br /&gt;
:Cuando surgió esta opción, inmediatamente se presentó como la más apta. Por qué no? Si las XO ya lo tienen instalado. O sea que sería cuestión de simplemente realizarle alguna ampliación o modificación para satisfacer nuestras necesidades.&lt;br /&gt;
:La idea fue modificar la paleta existente que permite controlar al Butiá para que, si el mismo no se encuentra enchufado, las instrucciones se envíen al motor de simulación. Luego vimos la necesidad de agregar nuestra propia paleta con más opciones.&lt;br /&gt;
&lt;br /&gt;
*;Physics&lt;br /&gt;
:http://wiki.laptop.org/go/Python_Physics&lt;br /&gt;
:Mientras estábamos empezando a plantearnos a TortugArte como el candidato para la simulacion, surgió otra idea... Y si usamos Physics para así tener el control sobre la física que tanto deseábamos?&lt;br /&gt;
:Physics es un conjunto de bibliotecas para aplicar leyes físicas a los objetos simulados, de la misma forma que se hace con ODE. Lo bueno es que Physics es mucho más básico y fácil de utilizar, además de que ya viene instalado en las XO.&lt;br /&gt;
:La idea era programar con TortugArte, enviar las instrucciones al motor y luego mostrarlos en el ambiente creado con esta herramienta. Igual que con ODE, vimos que resultaría un poco inviable por los tiempos de aprendizaje.&lt;br /&gt;
:Más adelante, durante el desarrollo del simulador, intentamos utilizar un plugin de Physics para TortugArte, pero nunca lo pudimos hacer funcionar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En conclusión, llegamos al acuerdo de que TortugArte era lo mejor. Que, además de todas sus bondades, nos permite enviar las instrucciones de una forma simple y ver los resultados del motor desde un solo lugar. Algo que no obtendríamos con ninguna de las otras herramientas utilizadas por sí solas.&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TortugArte que encontramos en la wiki de SugarLabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Cómo escribir un plugin])&lt;br /&gt;
&lt;br /&gt;
===Pruebas realizadas===&lt;br /&gt;
Siguiendo las etapas teóricas, aún nos falta abarcar las 4 siguientes: Verificación, Validación del sistema, Experimentación e Interpretación.&lt;br /&gt;
Las últimas dos las podremos llevar a cabo cuando el Simulador sea utilizado principalmente por los estudiantes y profesores, y cuando obtengamos sus opiniones al respecto.&lt;br /&gt;
&lt;br /&gt;
====Verificación====&lt;br /&gt;
A medida que desarrollábamos una nueva funcionalidad, la misma era probada hasta comprobar que cumplía con nuestras exigencias. En esta etapa siempre surgió algún problema que nos permitió aprender más sobre TortugArte, sobre Python o sobre algún otro detalle que necesitábamos para continuar con el proyecto, y que también nos ayudó a crecer en nuestro conocimiento general.&lt;br /&gt;
&lt;br /&gt;
====Validación====&lt;br /&gt;
Como parte del curso de Extensión Butiá tuvimos que hacer una presentación de nuestro proyecto. Luego de la cual los profesores nos plantearon sus dudas, comentarios e ideas. No obstante, también será necesaria la opinión de expertos en educación orientada a niños y adolescentes para saber si el uso del simulador es posible. Además, cuando el proyecto se encuentre en un punto más avanzado de su desarrollo, es decir cuando se ajusten detalles en las funcionalidades del sistema, podrá realizarse un estudio más profundo sobre las diferencias entre los resultados arrojados por el motor de simulación y la realidad.&lt;br /&gt;
Sin embargo, esta primera validación nos dejó ya con una serie de puntos a mejorar. Que se encuentran más [[#Trabajo a futuro | abajo]].&lt;br /&gt;
&lt;br /&gt;
===Documentación===&lt;br /&gt;
La etapa final es la realización de dos manuales: uno técnico y otro de usuario. El manual técnico deberá detallar las herramientas y técnicas utilizadas para la programación del sistema. El manual de usuario debe ser una guía de fácil comprensión para una persona que nunca usó el simulador.&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual técnico====&lt;br /&gt;
=====Sobre el plugin=====&lt;br /&gt;
Como ya fue mencionado, el Simulador es un plugin para TortugArte. Lo que hicimos fue modificar la paleta creada para controlar el robot Butiá de manera que, si no está enchufado, las órdenes de los bloques se envían al motor de simulación. Además creamos otra paleta para ubicar nuestras funciones particulares.&lt;br /&gt;
&lt;br /&gt;
=====El motor=====&lt;br /&gt;
El motor se comporta como una máquina de estados. Por ejemplo, cuando se recibe la orden de ir hacia adelante, se cambia el valor de la variable que almacena el estado interno a ADELANTE.&lt;br /&gt;
Debido a que el robot real realiza continuamente la última acción indicada, debimos buscar una forma de que el motor ejecutara todo el tiempo la acción correspondiente al estado actual, hasta que éste cambie. Para esto se decidió agregar un bloque llamado &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====El bloque Actualizar mundo=====&lt;br /&gt;
Este bloque invoca a una función del motor que calcula las reacciones del robot, como ubicación y ángulo de giro, dependiendo del estado actual. Entonces, cada vez que se recibe una orden, sólo se cambia el estado actual, y recién cuando se invoque a la función &amp;quot;Actualizar mundo&amp;quot; se calcularán las reacciones del robot y del entorno.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
Entre las carpetas de los plugins para TortugArte se encuentra una con el código usado por el simulador. En el mismo se definen todas las funciones del motor y se crea una nueva paleta que contiene bloques para:&lt;br /&gt;
* Actualizar mundo&lt;br /&gt;
* Cargar pistas prediseñadas&lt;br /&gt;
* Cambiar la imagen de la tortuga por la de un Butiá&lt;br /&gt;
* Imitar el Delay de la paleta existente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual de usuario====&lt;br /&gt;
=====Iniciar el simulador=====&lt;br /&gt;
Para poder utilizar el simulador sólo será necesario abrir TortugArte de la manera habitual, suponiendo que el mismo ya contiene nuestro plugin. Todas las funciones se cargarán sin que el usuario deba hacer alguna acción particular.&lt;br /&gt;
&lt;br /&gt;
=====Programar un comportamiento=====&lt;br /&gt;
Para programar un comportamiento se deben usar los mismos bloques que para el robot Butiá. La diferencia reside en que, para que el movimiento del robot se vea más de una vez, es decir que resulte constante como con el real, es necesario encerrar todo el comportamiento en un bucle infinito (como ya se hace para el Butiá) y además agregar el bloque &amp;quot;Actualizar mundo&amp;quot; en primer o último lugar.&lt;br /&gt;
También, si se desea reutilizar un código ya programado, se debe agregar este bloque, porque de lo contrario la tortuga en pantalla no se moverá con los cambios calculados por el motor.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
En la nueva paleta aparecen algunas funciones útiles, incluyendo el bloque &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*;Cargando pistas&lt;br /&gt;
:Hay cuatro bloques que cargan pistas prediseñadas, aunque también se pueden cargar las propias.&lt;br /&gt;
:Para cargar una pista propia se debe utilizar el bloque &amp;quot;Dibujar pista&amp;quot; y conectarle una entrada del diario que contenga una imagen. Esta imagen se cargará como pista en el fondo de la pantalla.&lt;br /&gt;
&lt;br /&gt;
*;Cambiando la imagen de la tortuga&lt;br /&gt;
:El bloque &amp;quot;Butia&amp;quot; cambia la imagen clásica de la tortuga por la del robot visto desde arriba.&lt;br /&gt;
:Para ejecutarlo se lo debe arrastrar al área de trabajo y cliquearlo una sola vez.&lt;br /&gt;
&lt;br /&gt;
*;Dibujando obstáculos&lt;br /&gt;
:Los bloques &amp;quot;Empezar obstáculo&amp;quot; y &amp;quot;Terminar obstáculo&amp;quot; permiten dibujar un obstáculo. Es recomendable usar éstos al momento de trazar líneas que funcionarán como, por ejemplo, paredes, ya que los bloques cambian el color y el grosor del lápiz a valores particulares que el motor reconoce como obstáculo y no lo pasa por arriba como si fuera parte del piso.&lt;br /&gt;
&lt;br /&gt;
*;Delay&lt;br /&gt;
:El bloque &amp;quot;Delay Butia Sim&amp;quot; imita el funcionamiento del bloque &amp;quot;Delay Butia&amp;quot;.&lt;br /&gt;
:Para ejecutarlo basta con arrastrarlo al área de trabajo, colocar la cantidad de segundos que el robot debe mantenerse ejecutando su última acción y luego darle click o ponerlo dentro del código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemas==&lt;br /&gt;
Como mencionamos, en las etapas de implementación y verificación del sistema nos fuimos enfrentando a diversos problemas.&lt;br /&gt;
&lt;br /&gt;
===Actualizar mundo===&lt;br /&gt;
{| style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
 | Este fue el primero de todos. Como también ya dijimos, necesitábamos una forma de mostrar la nueva posición del robot y las reacciones del ambiente de acuerdo a la última orden recibida.&lt;br /&gt;
Lo resolvimos con el bloque &amp;quot;Actualizar mundo&amp;quot;, que debe ser ejecutado en cada iteración del programa.&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[Archivo:ActualizarMundo.jpg‎|thumb|Imagen del bloque]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Escala de grises===&lt;br /&gt;
{| style=&amp;quot;width:98%;&amp;quot; &lt;br /&gt;
 | Este sensor devuelve un número de acuerdo al color que tiene debajo. Normalmente se coloca delante del robot y en el medio para un seguidor de líneas, su uso clásico.&lt;br /&gt;
TortugArte ya trae implementada una función llamada get_pixel que devuelve el color debajo del centro de la tortuga. Nuestro problema era que lo necésitábamos en la cabeza ya que, si lo usábamos así y queríamos emular el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice.&lt;br /&gt;
La solución fue mover la tortuga de tal forma que su centro quedara en el punto donde antes estaba la cabeza, para obtener el valor devuelto por get_pixel y luego volver a la posición inicial. Todo esto de forma invisible para el usuario, quien tiene la impresión de que la tortuga no se movió de su lugar.&lt;br /&gt;
 | [[Archivo:DiffEscalaGrises.jpg‎|thumb|Diferencias de valores devueltos por Escala de grises]]&lt;br /&gt;
 | style=&amp;quot;vertical-align:top&amp;quot; | [[Archivo:EscalaGrises.jpg‎|thumb|Secuencia de código usando Escala de grises]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fuera tortuga, hola Butiá===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, por una del robot Butiá. En principio esto no resultó complicado, ya que se pueden usar las funciones de Tortugarte para hacerlo. El problema fue que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Es decir, si hacíamos al Butiá recorrer una pista circular, la imagen sólo adoptaba cuatros posiciones sobre su eje.&lt;br /&gt;
Para solucionar el problema nos comunicarnos con Walter Bender, uno de los creadores de TortugArte, intentando obtener algo de ayuda. Lo que hizo fue modificar el código que dibuja la imagen de la tortuga.&lt;br /&gt;
 | [[Archivo:TortugaButia.jpg|thumb|Imagen de tortuga junto al Butiá]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===TortugArte desactualizado===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | Cuando quisimos probar el nuevo código de Bender nos dimos cuenta de que estábamos trabajando sobre una versión antigua de TortugArte. Por lo que, para bajar las modificaciones, tuvimos que familiarizarnos con la herramienta [[#GIT | GIT]], y con los repositorios de Butiá y de TortugArte.&lt;br /&gt;
Una vez bajadas las nuevas versiones nos encontramos con varios cambios en cuanto al método de dibujado. En TortugArte habían cambiado toda la administración de la interfaz gráfica a una biblioteca llamada Cairo, para dibujado en 2D.&lt;br /&gt;
Algunas partes de nuestro programa ya no funcionaban y tuvimos que reescribirlas. Esto no sólo insumió tiempo de trabajo sino que también se notó una gran reducción en la velocidad de ejecución del código. Luego de varios intentos de mejorar los procedimientos que habíamos utilizado, por ejemplo para la imitación de sensores, no logramos obtener la misma velocidad que en un principio.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;oGoWpqOOXoE|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Delay===&lt;br /&gt;
{| style=&amp;quot;width:85%;&amp;quot; &lt;br /&gt;
 | El mayor problema que encontramos fue el de simular el Delay, de la paleta Butiá. El código detrás de este bloque simplemente deja al programa parado durante unos segundos, y el robot real, al ejecutar el mismo, se queda realizando la última orden recibida.&lt;br /&gt;
En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Por lo que si, por ejemplo, queríamos que el Butiá fuera hacia adelante 2 segundos, recién veríamos su nueva posición luego de transcurrido ese tiempo. Probamos muchas cosas pero nada funcionaba.&lt;br /&gt;
Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot; e invocando internamente a &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
 | &amp;lt;videoflash&amp;gt;RW4GbZvc0kI|250|200&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
Este proyecto nos permitió aprender mucho sobre TortugArte, Python, la paleta Butiá y más que nada sobre buenas prácticas de programación.&lt;br /&gt;
Entre todo, queremos destacar dos puntos:&lt;br /&gt;
&lt;br /&gt;
===Trabajo en equipo===&lt;br /&gt;
Este aspecto fue muy necesario, si no esencial, para el buen desarrollo del proyecto. Al principio nos juntábamos los tres para trabajar juntos y ésto implicaba llegar a distintos acuerdos lo más pronto posible. Entre varias personas siempre existen diferentes puntos de vista pero pudimos sobreponernos a eso, teniendo los objetivos en mente.&lt;br /&gt;
Luego, cuando por cuestiones de tiempo no podíamos estar los tres, tuvimos que lograr una comunicación fluida para estar al tanto de los cambios y los agregados.&lt;br /&gt;
&lt;br /&gt;
===Mantener herramientas actualizadas===&lt;br /&gt;
Es importante para un próximo proyecto, o mientras sigamos mejorando éste, trabajar sobre las últimas versiones estables del programa. De otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo, como nos sucedió con los sensores de distancia, contacto y escala de grises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Versión Final==&lt;br /&gt;
===Código fuente paleta Simulador===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Código fuente paleta Butiá===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Video seguidor de líneas===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trabajo a futuro==&lt;br /&gt;
Obviamente el nuestro, como todos los proyectos, nunca está completamente terminado y siempre hay cosas por mejorar. Hoy, nos planteamos los siguientes puntos:&lt;br /&gt;
*;Agregar funciones a simular&lt;br /&gt;
:La idea es que con el Simulador se puedan hacer todas las cosas que con un Butiá real. Para esto hay que buscar la forma de imitar otros sensores y otros tipos de entornos (objetos que rodean al robot).&lt;br /&gt;
&lt;br /&gt;
*;Acortar tiempos de renderización (dibujado de imágenes)&lt;br /&gt;
:A pesar de que la nueva librería ocasione que el mismo código que utilizamos funcione más lento, debe haber una forma para alcanzar mayores velocidades de dibujado.&lt;br /&gt;
&lt;br /&gt;
*;Ajustar algoritmos para mejorar tiempos&lt;br /&gt;
:Además de encontrar nuevas formas de renderizar el Butiá y el entorno, tal vez un cambio en el código permita que todo funcione más rápido. Para esto sería necesario encontrar nuevas ideas a todas las que probamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Apéndice==&lt;br /&gt;
===Simulación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Simulación&lt;br /&gt;
:Es la imitación de un entorno diferente.&lt;br /&gt;
:&amp;quot;Quiero saber cómo reaccionaría este objeto en un entorno particular&amp;quot;&lt;br /&gt;
:Según R.E. Shannon: &amp;quot;La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias -dentro de los límites impuestos por un cierto criterio o un conjunto de ellos - para el funcionamiento del sistema&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Lenguaje de programación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Lenguaje_de_programación&lt;br /&gt;
:Es un idioma artificial inventado para poder comunicarse con la computadora. Como todo idioma, está formado por un conjunto de símbolos y reglas sintácticas y semánticas.&lt;br /&gt;
&lt;br /&gt;
===Intérprete===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Intérprete_(informática)&lt;br /&gt;
:Es un programa capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel como Python. Un lenguaje de alto nivel permite una forma más fácil de comunicarse con la máquina, ya que el código escrito usando el mismo puede ser mejor entendido, tanto por el programador que lo escribe como por otros que lo quieran leer.&lt;br /&gt;
:En nuestro proyecto, usamos el intérprete para Python que viene preinstalado en las XO.&lt;br /&gt;
&lt;br /&gt;
===Biblioteca (o librería)===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Biblioteca_(informática)&lt;br /&gt;
:En resumen, es un conjunto de mini programas y mucho código que ya funciona.&lt;br /&gt;
:Generalmente las bibliotecas ofrecen un conjunto de funciones para controlar algo en particular. De esta forma, hay bibliotecas para controlar sonido, video, imágenes, conexiones a la red, etc.&lt;br /&gt;
&lt;br /&gt;
===IDE===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&lt;br /&gt;
:Integrated Development Environment - Entorno de desarrollo integrado&lt;br /&gt;
:Es un programa para programar. Está compuesto por un conjunto de herramientas para facilitar la programación en determinado lenguaje, o en varios a la vez. Por ejemplo, puede contener un editor de texto que resalte con distintos colores las diferentes partes de un código (variables, constantes, funciones, comentarios, etc.).&lt;br /&gt;
:Las herramientas básicas de las que generalmente consta son: editor de código, compilador y depurador (o debugger, una herramienta que facilita la detección de errores).&lt;br /&gt;
&lt;br /&gt;
===GIT===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Git&lt;br /&gt;
:Es una herramienta que, entre varias cosas, permite compartir código entre muchos programadores. Cada vez que alguien realiza una modificación al programa puede subir esos cambios y así compartir sus avances con los demás.&lt;br /&gt;
:El lugar donde se guarda el código necesario para una aplicación se llama &amp;quot;repositorio&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===API===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Interfaz_de_programación_de_aplicaciones&lt;br /&gt;
:Application Programming Interface - Interfaz de programación de aplicaciones&lt;br /&gt;
:Es un conjunto de funciones residentes en bibliotecas que permiten que una aplicación corra bajo un determinado sistema operativo.&lt;br /&gt;
:Tomando como ejemplo la API Butiá, es el conjunto de operaciones que permiten obtener valores de sensores o ejecutar acciones de los actuadores de forma simple.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1943</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1943"/>
				<updated>2012-02-21T21:35:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Herramientas investigadas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La simulación es la imitación de un entorno diferente. Permite saber cómo reaccionaría un objeto en un entorno particular, sin necesidad de probarlo en el entorno real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
A nosotros nos permitirá saber cómo reaccionaría el Butiá a nuestras instrucciones, cuando conectemos la computadora al robot real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Elegimos, como proyecto final, la creación de un Simulador para el robot Butiá ya que, de quedar implementado, no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;oGoWpqOOXoE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motivación==&lt;br /&gt;
Trabajando con el robot fuimos identificando, a través de la experiencia personal, diferentes dificultades que se presentaban al querer probar nuestro código.&lt;br /&gt;
&lt;br /&gt;
Puntualmente:&lt;br /&gt;
* poca cantidad de plataformas construidas&lt;br /&gt;
* sensores en malas condiciones&lt;br /&gt;
* baterías descargadas&lt;br /&gt;
* cables desconectados&lt;br /&gt;
* dificultades para reparar las fallas&lt;br /&gt;
&lt;br /&gt;
Sumado a todo esto está el tiempo que se pierde intentando solucionar esos problemas y la motivación de los estudiantes que puede ir disminuyendo, al no poder probar su programa tanto y tan rápido como quisieran. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el equipo presente para poder correr sus códigos. Además de que no pueden hacerlo en sus casas.&lt;br /&gt;
&lt;br /&gt;
Basados en lo anterior, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los robots. &lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del movimiento y las reacciones, sino que también posibilitará el testeo del código de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de ejecutar lo que acaba de programar.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo del proyecto==&lt;br /&gt;
A partir de las etapas formales del desarrollo de una [[#Simulación | Simulación]], podemos describir nuestro trabajo de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
===Objetivos===&lt;br /&gt;
La especificación de objetivos se enmarca en la etapa de Definición del sistema que incluye, además, la decisión de realizar un sistema informático para simular el robot Butiá y la aceptación de las limitaciones del mismo.&lt;br /&gt;
&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Limitaciones===&lt;br /&gt;
No obstante nuestros objetivos, es necesario aceptar y aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado. Por ejemplo, los valores devueltos por los sensores serán exactos, no se verán afectados por las condiciones del ambiente, así como la luz afecta al sensor de escala de grises. Por esto, antes de estar seguros que un algoritmo funciona será necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Investigación de herramientas===&lt;br /&gt;
Los siguientes tres pasos teóricos son Formulación del modelo, definición de la Colección de datos necesaria e Implementación del modelo. En nuestro trabajo, los realizamos en conjunto.&lt;br /&gt;
El primer problema fue decidir qué herramientas íbamos a usar para desarrollar la aplicación y qué componentes iba a tener el sistema.&lt;br /&gt;
Más allá de las herramientas, decidimos que necesitaríamos dos componentes básicos: el motor que simule las reacciones del robot y del entorno, y la interfaz gráfica que muestre en pantalla los resultados.&lt;br /&gt;
&lt;br /&gt;
====Motor de simulación====&lt;br /&gt;
Consiste en el conjunto de operaciones que se deben realizar para, a partir de una instrucción dada al robot, obtener como resultado cuál sería su reacción. Por ejemplo, si se recibe una orden para que el robot vaya hacia adelante, el motor de simulación devolverá todo el tiempo la posición que debe tener el Butiá a partir de la posición inicial.&lt;br /&gt;
Además debe calcular cómo reaccionaría el ambiente a las acciones del robot y viceversa. Como ejemplo, si el robot llega a una pared no debe poder avanzar, o, si se choca con un obstáculo liviano, éste se debe mover cediendo a la fuerza del Butiá.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para el motor, principalmente lo que se debe decidir es el [[#Lenguaje de programación | Lenguaje de programación]] a utilizar. También el sistema operativo y la máquina que lo ejecutará.&lt;br /&gt;
No dudamos mucho en este punto. El simulador en su conjunto debía poder ser utilizado en una XO, por lo tanto el sistema operativo debía ser Linux y el lenguaje Python, porque las XO ya traen un [[#Interprete | Interprete]].&lt;br /&gt;
&lt;br /&gt;
====Interfaz Gráfica====&lt;br /&gt;
La interfaz o GUI por sus siglas en inglés (Graphic User Interface) ofrece una forma agradable de ver los datos devueltos por el motor. Existen diversas interfaces cuando hablamos de simulaciones, generalmente se componen de imágenes y símbolos que permiten identificar lo que está sucediendo en el ambiente simulado y relacionarlo con lo que pasaría en el ambiente real. Van desde gráficos y cifras mostradas en pantalla hasta imágenes en 2D y 3D.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para su mejor comprensión, el simulador debía tener una interfaz gráfica que represente al robot y su entorno en 2D o 3D.&lt;br /&gt;
Investigando un poco, dimos con 4 opciones:&lt;br /&gt;
*;ODE (PyODE)&lt;br /&gt;
:http://www.ode.org/&lt;br /&gt;
:ODE es una [[#Biblioteca | Biblioteca]] (o librería) para generar ambientes simulados en 2D y 3D. Es una herramienta muy potente y que permite un control absoluto sobre todos los objetos que componen el ambiente. Permite detectar colisiones (choques), obtener distancias, y tiene toda la física ya simulada. Es decir, si, por ejemplo, un objeto con más masa empuja a otro, el segundo se moverá con determinada velocidad debido a las reglas físicas que allí se aplican. Lo mismo sucede con objetos que caen del cielo, etc.&lt;br /&gt;
:ODE está realizado en un lenguaje de programación llamado &amp;quot;C++&amp;quot;. Pero incluso existe una adaptación a Python con las mismas potencialidades.&lt;br /&gt;
:Llegamos a hacer algunas pruebas. Específicamente, logramos instalarlo y hacer funcionar los ejemplos pre-programados en una máquina con Linux. Y también ejecutar un ejemplo propio de un ambiente en 2D.&lt;br /&gt;
:Lo malo fue que, al tener tanta potencia, es difícil de aprender y utilizar en el poco tiempo del que disponíamos.&lt;br /&gt;
&lt;br /&gt;
*;OpenRAVE&lt;br /&gt;
:http://openrave.programmingvision.com/en/main/index.html&lt;br /&gt;
:Es una aplicación ampliamente utilizada para simular robots. Ideal! Si, pero la principal limitación es que ya dispone de un [[#IDE | IDE]] sobre el que se debe trabajar. El mismo puede ser instalado tanto en Linux como en Windows, esto puede ser visto como un punto fuerte. Pero el consumo de memoria es muy elevado como para ser instalado en una XO.&lt;br /&gt;
:Como comentario, el IDE permite la visualización de todo el entorno. El mismo puede ser diseñado con la misma herramienta, tanto el robot como los objetos que lo rodean. También existen ejemplos programados.&lt;br /&gt;
&lt;br /&gt;
*;TortugArte&lt;br /&gt;
:http://wiki.sugarlabs.org/go/Activities/TurtleArt&lt;br /&gt;
:Es una aplicación que permite programar a través de la unión de diferentes bloques, como si de un puzle se tratara. Cada uno de ellos cumple una función específica y juntos conforman el código del programa que se está creando. Puede ser visto como un IDE para niños.&lt;br /&gt;
:Cuando surgió esta opción, inmediatamente se presentó como la más apta. Por qué no? Si las XO ya lo tienen instalado. O sea que sería cuestión de simplemente realizarle alguna ampliación o modificación para satisfacer nuestras necesidades.&lt;br /&gt;
:La idea fue modificar la paleta existente que permite controlar al Butiá para que, si el mismo no se encuentra enchufado, las instrucciones se envíen al motor de simulación. Luego vimos la necesidad de agregar nuestra propia paleta con más opciones.&lt;br /&gt;
&lt;br /&gt;
*;Physics&lt;br /&gt;
:http://wiki.laptop.org/go/Python_Physics&lt;br /&gt;
:Mientras estábamos empezando a plantearnos a TortugArte como el candidato para la simulacion, surgió otra idea... Y si usamos Physics para así tener el control sobre la física que tanto deseábamos?&lt;br /&gt;
:Physics es un conjunto de bibliotecas para aplicar leyes físicas a los objetos simulados, de la misma forma que se hace con ODE. Lo bueno es que Physics es mucho más básico y fácil de utilizar, además de que ya viene instalado en las XO.&lt;br /&gt;
:La idea era programar con TortugArte, enviar las instrucciones al motor y luego mostrarlos en el ambiente creado con esta herramienta. Igual que con ODE, vimos que resultaría un poco inviable por los tiempos de aprendizaje.&lt;br /&gt;
:Más adelante, durante el desarrollo del simulador, intentamos utilizar un plugin de Physics para TortugArte, pero nunca lo pudimos hacer funcionar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En conclusión, llegamos al acuerdo de que TortugArte era lo mejor. Que, además de todas sus bondades, nos permite enviar las instrucciones de una forma simple y ver los resultados del motor desde un solo lugar. Algo que no obtendríamos con ninguna de las otras herramientas utilizadas por sí solas.&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TortugArte que encontramos en la wiki de SugarLabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Cómo escribir un plugin])&lt;br /&gt;
&lt;br /&gt;
===Pruebas realizadas===&lt;br /&gt;
Siguiendo las etapas teóricas, aún nos falta abarcar las 4 siguientes: Verificación, Validación del sistema, Experimentación e Interpretación.&lt;br /&gt;
Las últimas dos las podremos llevar a cabo cuando el Simulador sea utilizado principalmente por los estudiantes y profesores, y cuando obtengamos sus opiniones al respecto.&lt;br /&gt;
&lt;br /&gt;
====Verificación====&lt;br /&gt;
A medida que desarrollábamos una nueva funcionalidad, la misma era probada hasta comprobar que cumplía con nuestras exigencias. En esta etapa siempre surgió algún problema que nos permitió aprender más sobre TortugArte, sobre Python o sobre algún otro detalle que necesitábamos para continuar con el proyecto, y que también nos ayudó a crecer en nuestro conocimiento general.&lt;br /&gt;
&lt;br /&gt;
====Validación====&lt;br /&gt;
Como parte del curso de Extensión Butiá tuvimos que hacer una presentación de nuestro proyecto. Luego de la cual los profesores nos plantearon sus dudas, comentarios e ideas. No obstante, también será necesaria la opinión de expertos en educación orientada a niños y adolescentes para saber si el uso del simulador es posible. Además, cuando el proyecto se encuentre en un punto más avanzado de su desarrollo, es decir cuando se ajusten detalles en las funcionalidades del sistema, podrá realizarse un estudio más profundo sobre las diferencias entre los resultados arrojados por el motor de simulación y la realidad.&lt;br /&gt;
Sin embargo, esta primera validación nos dejó ya con una serie de puntos a mejorar. Que se encuentran más [[#Trabajo a futuro | abajo]].&lt;br /&gt;
&lt;br /&gt;
===Documentación===&lt;br /&gt;
La etapa final es la realización de dos manuales: uno técnico y otro de usuario. El manual técnico deberá detallar las herramientas y técnicas utilizadas para la programación del sistema. El manual de usuario debe ser una guía de fácil comprensión para una persona que nunca usó el simulador.&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual técnico====&lt;br /&gt;
=====Sobre el plugin=====&lt;br /&gt;
Como ya fue mencionado, el Simulador es un plugin para TortugArte. Lo que hicimos fue modificar la paleta creada para controlar el robot Butiá de manera que, si no está enchufado, las órdenes de los bloques se envían al motor de simulación. Además creamos otra paleta para ubicar nuestras funciones particulares.&lt;br /&gt;
&lt;br /&gt;
=====El motor=====&lt;br /&gt;
El motor se comporta como una máquina de estados. Por ejemplo, cuando se recibe la orden de ir hacia adelante, se cambia el valor de la variable que almacena el estado interno a ADELANTE.&lt;br /&gt;
Debido a que el robot real realiza continuamente la última acción indicada, debimos buscar una forma de que el motor ejecutara todo el tiempo la acción correspondiente al estado actual, hasta que éste cambie. Para esto se decidió agregar un bloque llamado &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====El bloque Actualizar mundo=====&lt;br /&gt;
Este bloque invoca a una función del motor que calcula las reacciones del robot, como ubicación y ángulo de giro, dependiendo del estado actual. Entonces, cada vez que se recibe una orden, sólo se cambia el estado actual, y recién cuando se invoque a la función &amp;quot;Actualizar mundo&amp;quot; se calcularán las reacciones del robot y del entorno.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
Entre las carpetas de los plugins para TortugArte se encuentra una con el código usado por el simulador. En el mismo se definen todas las funciones del motor y se crea una nueva paleta que contiene bloques para:&lt;br /&gt;
* Actualizar mundo&lt;br /&gt;
* Cargar pistas prediseñadas&lt;br /&gt;
* Cambiar la imagen de la tortuga por la de un Butiá&lt;br /&gt;
* Imitar el Delay de la paleta existente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual de usuario====&lt;br /&gt;
=====Iniciar el simulador=====&lt;br /&gt;
Para poder utilizar el simulador sólo será necesario abrir TortugArte de la manera habitual, suponiendo que el mismo ya contiene nuestro plugin. Todas las funciones se cargarán sin que el usuario deba hacer alguna acción particular.&lt;br /&gt;
&lt;br /&gt;
=====Programar un comportamiento=====&lt;br /&gt;
Para programar un comportamiento se deben usar los mismos bloques que para el robot Butiá. La diferencia reside en que, para que el movimiento del robot se vea más de una vez, es decir que resulte constante como con el real, es necesario encerrar todo el comportamiento en un bucle infinito (como ya se hace para el Butiá) y además agregar el bloque &amp;quot;Actualizar mundo&amp;quot; en primer o último lugar.&lt;br /&gt;
También, si se desea reutilizar un código ya programado, se debe agregar este bloque, porque de lo contrario la tortuga en pantalla no se moverá con los cambios calculados por el motor.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
En la nueva paleta aparecen algunas funciones útiles, incluyendo el bloque &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*;Cargando pistas&lt;br /&gt;
:Hay cuatro bloques que cargan pistas prediseñadas, aunque también se pueden cargar las propias.&lt;br /&gt;
:Para cargar una pista propia se debe utilizar el bloque &amp;quot;Dibujar pista&amp;quot; y conectarle una entrada del diario que contenga una imagen. Esta imagen se cargará como pista en el fondo de la pantalla.&lt;br /&gt;
&lt;br /&gt;
*;Cambiando la imagen de la tortuga&lt;br /&gt;
:El bloque &amp;quot;Butia&amp;quot; cambia la imagen clásica de la tortuga por la del robot visto desde arriba.&lt;br /&gt;
:Para ejecutarlo se lo debe arrastrar al área de trabajo y cliquearlo una sola vez.&lt;br /&gt;
&lt;br /&gt;
*;Dibujando obstáculos&lt;br /&gt;
:Los bloques &amp;quot;Empezar obstáculo&amp;quot; y &amp;quot;Terminar obstáculo&amp;quot; permiten dibujar un obstáculo. Es recomendable usar éstos al momento de trazar líneas que funcionarán como, por ejemplo, paredes, ya que los bloques cambian el color y el grosor del lápiz a valores particulares que el motor reconoce como obstáculo y no lo pasa por arriba como si fuera parte del piso.&lt;br /&gt;
&lt;br /&gt;
*;Delay&lt;br /&gt;
:El bloque &amp;quot;Delay Butia Sim&amp;quot; imita el funcionamiento del bloque &amp;quot;Delay Butia&amp;quot;.&lt;br /&gt;
:Para ejecutarlo basta con arrastrarlo al área de trabajo, colocar la cantidad de segundos que el robot debe mantenerse ejecutando su última acción y luego darle click o ponerlo dentro del código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemas==&lt;br /&gt;
Como mencionamos, en las etapas de implementación y verificación del sistema nos fuimos enfrentando a diversos problemas.&lt;br /&gt;
&lt;br /&gt;
===Actualizar mundo===&lt;br /&gt;
{| style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
 | Este fue el primero de todos. Como también ya dijimos, necesitábamos una forma de mostrar la nueva posición del robot y las reacciones del ambiente de acuerdo a la última orden recibida.&lt;br /&gt;
Lo resolvimos con el bloque &amp;quot;Actualizar mundo&amp;quot;, que debe ser ejecutado en cada iteración del programa.&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[Archivo:Seguidor_derecha.png|thumb|REEMPLAZAR POR IMG DEL BLOQUE]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Escala de grises===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Este sensor devuelve un número de acuerdo al color que tiene debajo. Normalmente se coloca delante del robot y en el medio para un seguidor de líneas, su uso clásico.&lt;br /&gt;
TortugArte ya trae implementada una función llamada get_pixel que devuelve el color debajo del centro de la tortuga. Nuestro problema era que lo necésitábamos en la cabeza ya que, si lo usábamos así y queríamos emular el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice.&lt;br /&gt;
La solución fue mover la tortuga de tal forma que su centro quedara en el punto donde antes estaba la cabeza, para obtener el valor devuelto por get_pixel y luego volver a la posición inicial. Todo esto de forma invisible para el usuario, quien tiene la impresión de que la tortuga no se movió de su lugar.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|secuencia de código]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fuera tortuga, hola Butiá===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, por una del robot Butiá. En principio esto no resultó complicado, ya que se pueden usar las funciones de Tortugarte para hacerlo. El problema fue que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Es decir, si hacíamos al Butiá recorrer una pista circular, la imagen sólo adoptaba cuatros posiciones sobre su eje.&lt;br /&gt;
Para solucionar el problema nos comunicarnos con Walter Bender, uno de los creadores de TortugArte, intentando obtener algo de ayuda. Lo que hizo fue modificar el código que dibuja la imagen de la tortuga.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|CAMBIAR POR IMAGEN TORTUGA]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===TortugArte desactualizado===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Cuando quisimos probar el nuevo código de Bender nos dimos cuenta de que estábamos trabajando sobre una versión antigua de TortugArte. Por lo que, para bajar las modificaciones, tuvimos que familiarizarnos con la herramienta [[#GIT | GIT]], y con los repositorios de Butiá y de TortugArte.&lt;br /&gt;
Una vez bajadas las nuevas versiones nos encontramos con varios cambios en cuanto al método de dibujado. En TortugArte habían cambiado toda la administración de la interfaz gráfica a una biblioteca llamada Cairo, para dibujado en 2D.&lt;br /&gt;
Algunas partes de nuestro programa ya no funcionaban y tuvimos que reescribirlas. Esto no sólo insumió tiempo de trabajo sino que también se notó una gran reducción en la velocidad de ejecución del código. Luego de varios intentos de mejorar los procedimientos que habíamos utilizado, por ejemplo para la imitación de sensores, no logramos obtener la misma velocidad que en un principio.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|CAMBIAR POR VIDEO LENTO]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Delay===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | El mayor problema que encontramos fue el de simular el Delay, de la paleta Butiá. El código detrás de este bloque simplemente deja al programa parado durante unos segundos, y el robot real, al ejecutar el mismo, se queda realizando la última orden recibida.&lt;br /&gt;
En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Por lo que si, por ejemplo, queríamos que el Butiá fuera hacia adelante 2 segundos, recién veríamos su nueva posición luego de transcurrido ese tiempo. Probamos muchas cosas pero nada funcionaba.&lt;br /&gt;
Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot; e invocando internamente a &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|VIDEO DELAY]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;oGoWpqOOXoE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
Este proyecto nos permitió aprender mucho sobre TortugArte, Python, la paleta Butiá y más que nada sobre buenas prácticas de programación.&lt;br /&gt;
Entre todo, queremos destacar dos puntos:&lt;br /&gt;
&lt;br /&gt;
===Trabajo en equipo===&lt;br /&gt;
Este aspecto fue muy necesario, si no esencial, para el buen desarrollo del proyecto. Al principio nos juntábamos los tres para trabajar juntos y ésto implicaba llegar a distintos acuerdos lo más pronto posible. Entre varias personas siempre existen diferentes puntos de vista pero pudimos sobreponernos a eso, teniendo los objetivos en mente.&lt;br /&gt;
Luego, cuando por cuestiones de tiempo no podíamos estar los tres, tuvimos que lograr una comunicación fluida para estar al tanto de los cambios y los agregados.&lt;br /&gt;
&lt;br /&gt;
===Mantener herramientas actualizadas===&lt;br /&gt;
Es importante para un próximo proyecto, o mientras sigamos mejorando éste, trabajar sobre las últimas versiones estables del programa. De otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo, como nos sucedió con los sensores de distancia, contacto y escala de grises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trabajo a futuro==&lt;br /&gt;
Obviamente el nuestro, como todos los proyectos, nunca está completamente terminado y siempre hay cosas por mejorar. Hoy, nos planteamos los siguientes puntos:&lt;br /&gt;
*;Agregar funciones a simular&lt;br /&gt;
:La idea es que con el Simulador se puedan hacer todas las cosas que con un Butiá real. Para esto hay que buscar la forma de imitar otros sensores y otros tipos de entornos (objetos que rodean al robot).&lt;br /&gt;
&lt;br /&gt;
*;Acortar tiempos de renderización (dibujado de imágenes)&lt;br /&gt;
:A pesar de que la nueva librería ocasione que el mismo código que utilizamos funcione más lento, debe haber una forma para alcanzar mayores velocidades de dibujado.&lt;br /&gt;
&lt;br /&gt;
*;Ajustar algoritmos para mejorar tiempos&lt;br /&gt;
:Además de encontrar nuevas formas de renderizar el Butiá y el entorno, tal vez un cambio en el código permita que todo funcione más rápido. Para esto sería necesario encontrar nuevas ideas a todas las que probamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Apéndice==&lt;br /&gt;
===Simulación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Simulación&lt;br /&gt;
:Es la imitación de un entorno diferente.&lt;br /&gt;
:&amp;quot;Quiero saber cómo reaccionaría este objeto en un entorno particular&amp;quot;&lt;br /&gt;
:Según R.E. Shannon: &amp;quot;La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias -dentro de los límites impuestos por un cierto criterio o un conjunto de ellos - para el funcionamiento del sistema&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Lenguaje de programación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Lenguaje_de_programación&lt;br /&gt;
:Es un idioma artificial inventado para poder comunicarse con la computadora. Como todo idioma, está formado por un conjunto de símbolos y reglas sintácticas y semánticas.&lt;br /&gt;
&lt;br /&gt;
===Compilador===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Compilador&lt;br /&gt;
:Es un programa encargado de, a partir de un archivo de texto que contiene código escrito en un lenguaje de programación particular, convertirlo a código de bits (ceros y unos) que puede ser entendido por el procesador.&lt;br /&gt;
:En nuestro proyecto, usamos el compilador para Python que viene preinstalado en las XO.&lt;br /&gt;
&lt;br /&gt;
===Biblioteca (o librería)===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Biblioteca_(informática)&lt;br /&gt;
:En resumen, es un conjunto de mini programas y mucho código que ya funciona.&lt;br /&gt;
:Generalmente las bibliotecas ofrecen un conjunto de funciones para controlar algo en particular. De esta forma, hay bibliotecas para controlar sonido, video, imágenes, conexiones a la red, etc.&lt;br /&gt;
&lt;br /&gt;
===IDE===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&lt;br /&gt;
:Integrated Development Environment - Entorno de desarrollo integrado&lt;br /&gt;
:Es un programa para programar. Está compuesto por un conjunto de herramientas para facilitar la programación en determinado lenguaje, o en varios a la vez. Por ejemplo, puede contener un editor de texto que resalte con distintos colores las diferentes partes de un código (variables, constantes, funciones, comentarios, etc.).&lt;br /&gt;
:Las herramientas básicas de las que generalmente consta son: editor de código, compilador y depurador (o debugger, una herramienta que facilita la detección de errores).&lt;br /&gt;
&lt;br /&gt;
===GIT===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Git&lt;br /&gt;
:Es una herramienta que, entre varias cosas, permite compartir código entre muchos programadores. Cada vez que alguien realiza una modificación al programa puede subir esos cambios y así compartir sus avances con los demás.&lt;br /&gt;
:El lugar donde se guarda el código necesario para una aplicación se llama &amp;quot;repositorio&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===API===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Interfaz_de_programación_de_aplicaciones&lt;br /&gt;
:Application Programming Interface - Interfaz de programación de aplicaciones&lt;br /&gt;
:Es un conjunto de funciones residentes en bibliotecas que permiten que una aplicación corra bajo un determinado sistema operativo.&lt;br /&gt;
:Tomando como ejemplo la API Butiá, es el conjunto de operaciones que permiten obtener valores de sensores o ejecutar acciones de los actuadores de forma simple.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1942</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1942"/>
				<updated>2012-02-21T21:30:20Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La simulación es la imitación de un entorno diferente. Permite saber cómo reaccionaría un objeto en un entorno particular, sin necesidad de probarlo en el entorno real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
A nosotros nos permitirá saber cómo reaccionaría el Butiá a nuestras instrucciones, cuando conectemos la computadora al robot real.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Elegimos, como proyecto final, la creación de un Simulador para el robot Butiá ya que, de quedar implementado, no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;oGoWpqOOXoE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Integrantes==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motivación==&lt;br /&gt;
Trabajando con el robot fuimos identificando, a través de la experiencia personal, diferentes dificultades que se presentaban al querer probar nuestro código.&lt;br /&gt;
&lt;br /&gt;
Puntualmente:&lt;br /&gt;
* poca cantidad de plataformas construidas&lt;br /&gt;
* sensores en malas condiciones&lt;br /&gt;
* baterías descargadas&lt;br /&gt;
* cables desconectados&lt;br /&gt;
* dificultades para reparar las fallas&lt;br /&gt;
&lt;br /&gt;
Sumado a todo esto está el tiempo que se pierde intentando solucionar esos problemas y la motivación de los estudiantes que puede ir disminuyendo, al no poder probar su programa tanto y tan rápido como quisieran. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el equipo presente para poder correr sus códigos. Además de que no pueden hacerlo en sus casas.&lt;br /&gt;
&lt;br /&gt;
Basados en lo anterior, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los robots. &lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del movimiento y las reacciones, sino que también posibilitará el testeo del código de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de ejecutar lo que acaba de programar.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo del proyecto==&lt;br /&gt;
A partir de las etapas formales del desarrollo de una [[#Simulación | Simulación]], podemos describir nuestro trabajo de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
===Objetivos===&lt;br /&gt;
La especificación de objetivos se enmarca en la etapa de Definición del sistema que incluye, además, la decisión de realizar un sistema informático para simular el robot Butiá y la aceptación de las limitaciones del mismo.&lt;br /&gt;
&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Limitaciones===&lt;br /&gt;
No obstante nuestros objetivos, es necesario aceptar y aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado. Por ejemplo, los valores devueltos por los sensores serán exactos, no se verán afectados por las condiciones del ambiente, así como la luz afecta al sensor de escala de grises. Por esto, antes de estar seguros que un algoritmo funciona será necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Investigación de herramientas===&lt;br /&gt;
Los siguientes tres pasos teóricos son Formulación del modelo, definición de la Colección de datos necesaria e Implementación del modelo. En nuestro trabajo, los realizamos en conjunto.&lt;br /&gt;
El primer problema fue decidir qué herramientas íbamos a usar para desarrollar la aplicación y qué componentes iba a tener el sistema.&lt;br /&gt;
Más allá de las herramientas, decidimos que necesitaríamos dos componentes básicos: el motor que simule las reacciones del robot y del entorno, y la interfaz gráfica que muestre en pantalla los resultados.&lt;br /&gt;
&lt;br /&gt;
====Motor de simulación====&lt;br /&gt;
Consiste en el conjunto de operaciones que se deben realizar para, a partir de una instrucción dada al robot, obtener como resultado cuál sería su reacción. Por ejemplo, si se recibe una orden para que el robot vaya hacia adelante, el motor de simulación devolverá todo el tiempo la posición que debe tener el Butiá a partir de la posición inicial.&lt;br /&gt;
Además debe calcular cómo reaccionaría el ambiente a las acciones del robot y viceversa. Como ejemplo, si el robot llega a una pared no debe poder avanzar, o, si se choca con un obstáculo liviano, éste se debe mover cediendo a la fuerza del Butiá.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para el motor, principalmente lo que se debe decidir es el [[#Lenguaje de programación | Lenguaje de programación]] a utilizar. También el sistema operativo y la máquina que lo ejecutará.&lt;br /&gt;
No dudamos mucho en este punto. El simulador en su conjunto debía poder ser utilizado en una XO, por lo tanto el sistema operativo debía ser Linux y el lenguaje Python, porque las XO ya traen un [[#Interprete | Interprete]].&lt;br /&gt;
&lt;br /&gt;
====Interfaz Gráfica====&lt;br /&gt;
La interfaz o GUI por sus siglas en inglés (Graphic User Interface) ofrece una forma agradable de ver los datos devueltos por el motor. Existen diversas interfaces cuando hablamos de simulaciones, generalmente se componen de imágenes y símbolos que permiten identificar lo que está sucediendo en el ambiente simulado y relacionarlo con lo que pasaría en el ambiente real. Van desde gráficos y cifras mostradas en pantalla hasta imágenes en 2D y 3D.&lt;br /&gt;
&lt;br /&gt;
=====Herramientas investigadas=====&lt;br /&gt;
Para su mejor comprensión, el simulador debía tener una interfaz gráfica que represente al robot y su entorno en 2D o 3D.&lt;br /&gt;
Investigando un poco, dimos con 4 opciones:&lt;br /&gt;
*;ODE (PyODE)&lt;br /&gt;
:http://www.ode.org/&lt;br /&gt;
:ODE es una [[#Biblioteca | Biblioteca]] (o librería) para generar ambientes simulados en 2D y 3D. Es una herramienta muy potente y que permite un control absoluto sobre todos los objetos que componen el ambiente. Permite detectar colisiones (choques), obtener distancias, y tiene toda la física ya simulada. Es decir, si, por ejemplo, un objeto con más masa empuja a otro, el segundo se moverá con determinada velocidad debido a las reglas físicas que allí se aplican. Lo mismo sucede con objetos que caen del cielo, etc.&lt;br /&gt;
:ODE está realizado en un lenguaje de programación llamado &amp;quot;C++&amp;quot;. Pero incluso existe una adaptación a Python con las mismas potencialidades.&lt;br /&gt;
:Llegamos a hacer algunas pruebas. Específicamente, logramos instalarlo y hacer funcionar los ejemplos pre-programados en una máquina con Linux. Y también ejecutar un ejemplo propio de un ambiente en 2D.&lt;br /&gt;
:Lo malo fue que, al tener tanta potencia, es difícil de aprender y utilizar en el poco tiempo del que disponíamos.&lt;br /&gt;
&lt;br /&gt;
*;OpenRAVE&lt;br /&gt;
:http://openrave.programmingvision.com/en/main/index.html&lt;br /&gt;
:Es una aplicación ampliamente utilizada para simular robots. Ideal! Si, pero la principal limitación es que ya dispone de un [[#IDE | IDE]] sobre el que se debe trabajar. El mismo puede ser instalado tanto en Linux como en Windows, esto puede ser visto como un punto fuerte. Pero el consumo de memoria es muy elevado como para ser instalado en una XO.&lt;br /&gt;
:Como comentario, el IDE permite la visualización de todo el entorno. El mismo puede ser diseñado con la misma herramienta, tanto el robot como los objetos que lo rodean. También existen ejemplos programados.&lt;br /&gt;
&lt;br /&gt;
*;TortugArte&lt;br /&gt;
:http://wiki.sugarlabs.org/go/Activities/TurtleArt&lt;br /&gt;
:Es una aplicación que permite programar a través de la unión de diferentes bloques, como si de un puzle se tratara. Cada uno de ellos cumple una función específica y juntos conforman el código del programa que se está creando. Puede ser visto como un IDE para niños.&lt;br /&gt;
:Cuando surgió esta opción, inmediatamente se presentó como la más apta. Por qué no? Si las XO ya lo tienen instalado. O sea que sería cuestión de simplemente realizarle alguna ampliación o modificación para satisfacer nuestras necesidades.&lt;br /&gt;
:La idea fue modificar la paleta existente que permite controlar al Butiá para que, si el mismo no se encuentra enchufado, las instrucciones se envíen al motor de simulación. Luego vimos la necesidad de agregar nuestra propia paleta con más opciones.&lt;br /&gt;
&lt;br /&gt;
*;Physics&lt;br /&gt;
:http://wiki.laptop.org/go/Python_Physics&lt;br /&gt;
:Mientras estábamos empezando a plantearnos a TortugArte como la candidata al Nóbel de Simulación para XO, surgió otra idea... Y si usamos Physics para así tener el control sobre la física que tanto deseábamos?&lt;br /&gt;
:Physics es un conjunto de bibliotecas para aplicar leyes físicas a los objetos simulados, de la misma forma que se hace con ODE. Lo bueno es que Physics es mucho más básico y fácil de utilizar, además de que ya viene instalado en las XO.&lt;br /&gt;
:La idea era programar con TortugArte, enviar las instrucciones al motor y luego mostrarlos en el ambiente creado con esta herramienta. Igual que con ODE, vimos que resultaría un poco inviable por los tiempos de aprendizaje.&lt;br /&gt;
:Más adelante, durante el desarrollo del simulador, intentamos utilizar un plugin de Physics para TortugArte, pero nunca lo pudimos hacer funcionar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En conclusión, el ganador indiscutible al Nóbel en simulación para XO es el viejo y conocido TortugArte. Que, además de todas sus bondades, nos permite enviar las instrucciones de una forma simple y ver los resultados del motor desde un solo lugar. Algo que no obtendríamos con ninguna de las otras herramientas utilizadas por sí solas.&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TortugArte que encontramos en la wiki de SugarLabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin Cómo escribir un plugin])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Pruebas realizadas===&lt;br /&gt;
Siguiendo las etapas teóricas, aún nos falta abarcar las 4 siguientes: Verificación, Validación del sistema, Experimentación e Interpretación.&lt;br /&gt;
Las últimas dos las podremos llevar a cabo cuando el Simulador sea utilizado principalmente por los estudiantes y profesores, y cuando obtengamos sus opiniones al respecto.&lt;br /&gt;
&lt;br /&gt;
====Verificación====&lt;br /&gt;
A medida que desarrollábamos una nueva funcionalidad, la misma era probada hasta comprobar que cumplía con nuestras exigencias. En esta etapa siempre surgió algún problema que nos permitió aprender más sobre TortugArte, sobre Python o sobre algún otro detalle que necesitábamos para continuar con el proyecto, y que también nos ayudó a crecer en nuestro conocimiento general.&lt;br /&gt;
&lt;br /&gt;
====Validación====&lt;br /&gt;
Como parte del curso de Extensión Butiá tuvimos que hacer una presentación de nuestro proyecto. Luego de la cual los profesores nos plantearon sus dudas, comentarios e ideas. No obstante, también será necesaria la opinión de expertos en educación orientada a niños y adolescentes para saber si el uso del simulador es posible. Además, cuando el proyecto se encuentre en un punto más avanzado de su desarrollo, es decir cuando se ajusten detalles en las funcionalidades del sistema, podrá realizarse un estudio más profundo sobre las diferencias entre los resultados arrojados por el motor de simulación y la realidad.&lt;br /&gt;
Sin embargo, esta primera validación nos dejó ya con una serie de puntos a mejorar. Que se encuentran más [[#Trabajo a futuro | abajo]].&lt;br /&gt;
&lt;br /&gt;
===Documentación===&lt;br /&gt;
La etapa final es la realización de dos manuales: uno técnico y otro de usuario. El manual técnico deberá detallar las herramientas y técnicas utilizadas para la programación del sistema. El manual de usuario debe ser una guía de fácil comprensión para una persona que nunca usó el simulador.&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual técnico====&lt;br /&gt;
=====Sobre el plugin=====&lt;br /&gt;
Como ya fue mencionado, el Simulador es un plugin para TortugArte. Lo que hicimos fue modificar la paleta creada para controlar el robot Butiá de manera que, si no está enchufado, las órdenes de los bloques se envían al motor de simulación. Además creamos otra paleta para ubicar nuestras funciones particulares.&lt;br /&gt;
&lt;br /&gt;
=====El motor=====&lt;br /&gt;
El motor se comporta como una máquina de estados. Por ejemplo, cuando se recibe la orden de ir hacia adelante, se cambia el valor de la variable que almacena el estado interno a ADELANTE.&lt;br /&gt;
Debido a que el robot real realiza continuamente la última acción indicada, debimos buscar una forma de que el motor ejecutara todo el tiempo la acción correspondiente al estado actual, hasta que éste cambie. Para esto se decidió agregar un bloque llamado &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====El bloque Actualizar mundo=====&lt;br /&gt;
Este bloque invoca a una función del motor que calcula las reacciones del robot, como ubicación y ángulo de giro, dependiendo del estado actual. Entonces, cada vez que se recibe una orden, sólo se cambia el estado actual, y recién cuando se invoque a la función &amp;quot;Actualizar mundo&amp;quot; se calcularán las reacciones del robot y del entorno.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
Entre las carpetas de los plugins para TortugArte se encuentra una con el código usado por el simulador. En el mismo se definen todas las funciones del motor y se crea una nueva paleta que contiene bloques para:&lt;br /&gt;
* Actualizar mundo&lt;br /&gt;
* Cargar pistas prediseñadas&lt;br /&gt;
* Cambiar la imagen de la tortuga por la de un Butiá&lt;br /&gt;
* Imitar el Delay de la paleta existente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Pre-Manual de usuario====&lt;br /&gt;
=====Iniciar el simulador=====&lt;br /&gt;
Para poder utilizar el simulador sólo será necesario abrir TortugArte de la manera habitual, suponiendo que el mismo ya contiene nuestro plugin. Todas las funciones se cargarán sin que el usuario deba hacer alguna acción particular.&lt;br /&gt;
&lt;br /&gt;
=====Programar un comportamiento=====&lt;br /&gt;
Para programar un comportamiento se deben usar los mismos bloques que para el robot Butiá. La diferencia reside en que, para que el movimiento del robot se vea más de una vez, es decir que resulte constante como con el real, es necesario encerrar todo el comportamiento en un bucle infinito (como ya se hace para el Butiá) y además agregar el bloque &amp;quot;Actualizar mundo&amp;quot; en primer o último lugar.&lt;br /&gt;
También, si se desea reutilizar un código ya programado, se debe agregar este bloque, porque de lo contrario la tortuga en pantalla no se moverá con los cambios calculados por el motor.&lt;br /&gt;
&lt;br /&gt;
=====La nueva paleta=====&lt;br /&gt;
En la nueva paleta aparecen algunas funciones útiles, incluyendo el bloque &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*;Cargando pistas&lt;br /&gt;
:Hay cuatro bloques que cargan pistas prediseñadas, aunque también se pueden cargar las propias.&lt;br /&gt;
:Para cargar una pista propia se debe utilizar el bloque &amp;quot;Dibujar pista&amp;quot; y conectarle una entrada del diario que contenga una imagen. Esta imagen se cargará como pista en el fondo de la pantalla.&lt;br /&gt;
&lt;br /&gt;
*;Cambiando la imagen de la tortuga&lt;br /&gt;
:El bloque &amp;quot;Butia&amp;quot; cambia la imagen clásica de la tortuga por la del robot visto desde arriba.&lt;br /&gt;
:Para ejecutarlo se lo debe arrastrar al área de trabajo y cliquearlo una sola vez.&lt;br /&gt;
&lt;br /&gt;
*;Dibujando obstáculos&lt;br /&gt;
:Los bloques &amp;quot;Empezar obstáculo&amp;quot; y &amp;quot;Terminar obstáculo&amp;quot; permiten dibujar un obstáculo. Es recomendable usar éstos al momento de trazar líneas que funcionarán como, por ejemplo, paredes, ya que los bloques cambian el color y el grosor del lápiz a valores particulares que el motor reconoce como obstáculo y no lo pasa por arriba como si fuera parte del piso.&lt;br /&gt;
&lt;br /&gt;
*;Delay&lt;br /&gt;
:El bloque &amp;quot;Delay Butia Sim&amp;quot; imita el funcionamiento del bloque &amp;quot;Delay Butia&amp;quot;.&lt;br /&gt;
:Para ejecutarlo basta con arrastrarlo al área de trabajo, colocar la cantidad de segundos que el robot debe mantenerse ejecutando su última acción y luego darle click o ponerlo dentro del código.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Problemas==&lt;br /&gt;
Como mencionamos, en las etapas de implementación y verificación del sistema nos fuimos enfrentando a diversos problemas.&lt;br /&gt;
&lt;br /&gt;
===Actualizar mundo===&lt;br /&gt;
{| style=&amp;quot;width: 80%;&amp;quot;&lt;br /&gt;
 | Este fue el primero de todos. Como también ya dijimos, necesitábamos una forma de mostrar la nueva posición del robot y las reacciones del ambiente de acuerdo a la última orden recibida.&lt;br /&gt;
Lo resolvimos con el bloque &amp;quot;Actualizar mundo&amp;quot;, que debe ser ejecutado en cada iteración del programa.&lt;br /&gt;
 | rowspan=&amp;quot;2&amp;quot; | [[Archivo:Seguidor_derecha.png|thumb|REEMPLAZAR POR IMG DEL BLOQUE]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Escala de grises===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Este sensor devuelve un número de acuerdo al color que tiene debajo. Normalmente se coloca delante del robot y en el medio para un seguidor de líneas, su uso clásico.&lt;br /&gt;
TortugArte ya trae implementada una función llamada get_pixel que devuelve el color debajo del centro de la tortuga. Nuestro problema era que lo necésitábamos en la cabeza ya que, si lo usábamos así y queríamos emular el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice.&lt;br /&gt;
La solución fue mover la tortuga de tal forma que su centro quedara en el punto donde antes estaba la cabeza, para obtener el valor devuelto por get_pixel y luego volver a la posición inicial. Todo esto de forma invisible para el usuario, quien tiene la impresión de que la tortuga no se movió de su lugar.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|secuencia de código]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Fuera tortuga, hola Butiá===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, por una del robot Butiá. En principio esto no resultó complicado, ya que se pueden usar las funciones de Tortugarte para hacerlo. El problema fue que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Es decir, si hacíamos al Butiá recorrer una pista circular, la imagen sólo adoptaba cuatros posiciones sobre su eje.&lt;br /&gt;
Para solucionar el problema nos comunicarnos con Walter Bender, uno de los creadores de TortugArte, intentando obtener algo de ayuda. Lo que hizo fue modificar el código que dibuja la imagen de la tortuga.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|CAMBIAR POR IMAGEN TORTUGA]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===TortugArte desactualizado===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | Cuando quisimos probar el nuevo código de Bender nos dimos cuenta de que estábamos trabajando sobre una versión antigua de TortugArte. Por lo que, para bajar las modificaciones, tuvimos que familiarizarnos con la herramienta [[#GIT | GIT]], y con los repositorios de Butiá y de TortugArte.&lt;br /&gt;
Una vez bajadas las nuevas versiones nos encontramos con varios cambios en cuanto al método de dibujado. En TortugArte habían cambiado toda la administración de la interfaz gráfica a una biblioteca llamada Cairo, para dibujado en 2D.&lt;br /&gt;
Algunas partes de nuestro programa ya no funcionaban y tuvimos que reescribirlas. Esto no sólo insumió tiempo de trabajo sino que también se notó una gran reducción en la velocidad de ejecución del código. Luego de varios intentos de mejorar los procedimientos que habíamos utilizado, por ejemplo para la imitación de sensores, no logramos obtener la misma velocidad que en un principio.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|CAMBIAR POR VIDEO LENTO]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
===Delay===&lt;br /&gt;
{| style=&amp;quot;width:80%;&amp;quot; &lt;br /&gt;
 | El mayor problema que encontramos fue el de simular el Delay, de la paleta Butiá. El código detrás de este bloque simplemente deja al programa parado durante unos segundos, y el robot real, al ejecutar el mismo, se queda realizando la última orden recibida.&lt;br /&gt;
En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Por lo que si, por ejemplo, queríamos que el Butiá fuera hacia adelante 2 segundos, recién veríamos su nueva posición luego de transcurrido ese tiempo. Probamos muchas cosas pero nada funcionaba.&lt;br /&gt;
Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot; e invocando internamente a &amp;quot;Actualizar mundo&amp;quot;.&lt;br /&gt;
 | [[Archivo:Seguidor_derecha.png|thumb|VIDEO DELAY]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;oGoWpqOOXoE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusiones==&lt;br /&gt;
&lt;br /&gt;
Este proyecto nos permitió aprender mucho sobre TortugArte, Python, la paleta Butiá y más que nada sobre buenas prácticas de programación.&lt;br /&gt;
Entre todo, queremos destacar dos puntos:&lt;br /&gt;
&lt;br /&gt;
===Trabajo en equipo===&lt;br /&gt;
Este aspecto fue muy necesario, si no esencial, para el buen desarrollo del proyecto. Al principio nos juntábamos los tres para trabajar juntos y ésto implicaba llegar a distintos acuerdos lo más pronto posible. Entre varias personas siempre existen diferentes puntos de vista pero pudimos sobreponernos a eso, teniendo los objetivos en mente.&lt;br /&gt;
Luego, cuando por cuestiones de tiempo no podíamos estar los tres, tuvimos que lograr una comunicación fluida para estar al tanto de los cambios y los agregados.&lt;br /&gt;
&lt;br /&gt;
===Mantener herramientas actualizadas===&lt;br /&gt;
Es importante para un próximo proyecto, o mientras sigamos mejorando éste, trabajar sobre las últimas versiones estables del programa. De otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo, como nos sucedió con los sensores de distancia, contacto y escala de grises.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trabajo a futuro==&lt;br /&gt;
Obviamente el nuestro, como todos los proyectos, nunca está completamente terminado y siempre hay cosas por mejorar. Hoy, nos planteamos los siguientes puntos:&lt;br /&gt;
*;Agregar funciones a simular&lt;br /&gt;
:La idea es que con el Simulador se puedan hacer todas las cosas que con un Butiá real. Para esto hay que buscar la forma de imitar otros sensores y otros tipos de entornos (objetos que rodean al robot).&lt;br /&gt;
&lt;br /&gt;
*;Acortar tiempos de renderización (dibujado de imágenes)&lt;br /&gt;
:A pesar de que la nueva librería ocasione que el mismo código que utilizamos funcione más lento, debe haber una forma para alcanzar mayores velocidades de dibujado.&lt;br /&gt;
&lt;br /&gt;
*;Ajustar algoritmos para mejorar tiempos&lt;br /&gt;
:Además de encontrar nuevas formas de renderizar el Butiá y el entorno, tal vez un cambio en el código permita que todo funcione más rápido. Para esto sería necesario encontrar nuevas ideas a todas las que probamos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Apéndice==&lt;br /&gt;
===Simulación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Simulación&lt;br /&gt;
:Es la imitación de un entorno diferente.&lt;br /&gt;
:&amp;quot;Quiero saber cómo reaccionaría este objeto en un entorno particular&amp;quot;&lt;br /&gt;
:Según R.E. Shannon: &amp;quot;La simulación es el proceso de diseñar un modelo de un sistema real y llevar a término experiencias con él, con la finalidad de comprender el comportamiento del sistema o evaluar nuevas estrategias -dentro de los límites impuestos por un cierto criterio o un conjunto de ellos - para el funcionamiento del sistema&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Lenguaje de programación===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Lenguaje_de_programación&lt;br /&gt;
:Es un idioma artificial inventado para poder comunicarse con la computadora. Como todo idioma, está formado por un conjunto de símbolos y reglas sintácticas y semánticas.&lt;br /&gt;
&lt;br /&gt;
===Compilador===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Compilador&lt;br /&gt;
:Es un programa encargado de, a partir de un archivo de texto que contiene código escrito en un lenguaje de programación particular, convertirlo a código de bits (ceros y unos) que puede ser entendido por el procesador.&lt;br /&gt;
:En nuestro proyecto, usamos el compilador para Python que viene preinstalado en las XO.&lt;br /&gt;
&lt;br /&gt;
===Biblioteca (o librería)===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Biblioteca_(informática)&lt;br /&gt;
:En resumen, es un conjunto de mini programas y mucho código que ya funciona.&lt;br /&gt;
:Generalmente las bibliotecas ofrecen un conjunto de funciones para controlar algo en particular. De esta forma, hay bibliotecas para controlar sonido, video, imágenes, conexiones a la red, etc.&lt;br /&gt;
&lt;br /&gt;
===IDE===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado&lt;br /&gt;
:Integrated Development Environment - Entorno de desarrollo integrado&lt;br /&gt;
:Es un programa para programar. Está compuesto por un conjunto de herramientas para facilitar la programación en determinado lenguaje, o en varios a la vez. Por ejemplo, puede contener un editor de texto que resalte con distintos colores las diferentes partes de un código (variables, constantes, funciones, comentarios, etc.).&lt;br /&gt;
:Las herramientas básicas de las que generalmente consta son: editor de código, compilador y depurador (o debugger, una herramienta que facilita la detección de errores).&lt;br /&gt;
&lt;br /&gt;
===GIT===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Git&lt;br /&gt;
:Es una herramienta que, entre varias cosas, permite compartir código entre muchos programadores. Cada vez que alguien realiza una modificación al programa puede subir esos cambios y así compartir sus avances con los demás.&lt;br /&gt;
:El lugar donde se guarda el código necesario para una aplicación se llama &amp;quot;repositorio&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===API===&lt;br /&gt;
:http://es.wikipedia.org/wiki/Interfaz_de_programación_de_aplicaciones&lt;br /&gt;
:Application Programming Interface - Interfaz de programación de aplicaciones&lt;br /&gt;
:Es un conjunto de funciones residentes en bibliotecas que permiten que una aplicación corra bajo un determinado sistema operativo.&lt;br /&gt;
:Tomando como ejemplo la API Butiá, es el conjunto de operaciones que permiten obtener valores de sensores o ejecutar acciones de los actuadores de forma simple.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1609</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1609"/>
				<updated>2012-01-26T13:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Problemas que fuimos resolviendo y herramientas que utilizamos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&lt;br /&gt;
| [[Archivo:Seguidor_derecha.png|thumb|secuencia de código]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;oGoWpqOOXoE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
Igualmente este nuevo render hace que el código se ejecute más lento, aquí vimos que estabamos trabajando sobre una version antigual del tortugarte.. Por lo que tuvimos que familiarizarnos con el Git de Butiá y el Git de Tortugarte. &lt;br /&gt;
Acá nos encontramos con varios cambios en cuanto al dibujado debido a la implementación de Cairo (Librería 2D)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
*  Es importante para un próximo proyecto o mientras sigamos mejorando este, trabajar sobre la última versión del programa.. de otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo. (Tuvimos que re pensar la manera de obtener un pixel teniendo así que cambiar el algoritmo de distancia y de escala de grises).&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
*  Agregar funciones a simular&lt;br /&gt;
*  Acortar tiempos de renderización&lt;br /&gt;
*  Ajustar algoritmos para mejorar tiempos&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1608</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1608"/>
				<updated>2012-01-25T05:29:41Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Problemas que fuimos resolviendo y herramientas que utilizamos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&lt;br /&gt;
| [[Archivo:Seguidor_derecha.png|thumb|secuencia de código]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
Igualmente este nuevo render hace que el código se ejecute más lento, aquí vimos que estabamos trabajando sobre una version antigual del tortugarte.. Por lo que tuvimos que familiarizarnos con el Git de Butiá y el Git de Tortugarte. &lt;br /&gt;
Acá nos encontramos con varios cambios en cuanto al dibujado debido a la implementación de Cairo (Librería 2D)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
*  Es importante para un próximo proyecto o mientras sigamos mejorando este, trabajar sobre la última versión del programa.. de otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo. (Tuvimos que re pensar la manera de obtener un pixel teniendo así que cambiar el algoritmo de distancia y de escala de grises).&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
*  Agregar funciones a simular&lt;br /&gt;
*  Acortar tiempos de renderización&lt;br /&gt;
*  Ajustar algoritmos para mejorar tiempos&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Seguidor_derecha.png&amp;diff=1607</id>
		<title>Archivo:Seguidor derecha.png</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Archivo:Seguidor_derecha.png&amp;diff=1607"/>
				<updated>2012-01-25T05:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1543</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1543"/>
				<updated>2011-12-14T17:39:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Conclusiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&lt;br /&gt;
| [[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
Igualmente este nuevo render hace que el código se ejecute más lento, aquí vimos que estabamos trabajando sobre una version antigual del tortugarte.. Por lo que tuvimos que familiarizarnos con el Git de Butiá y el Git de Tortugarte. &lt;br /&gt;
Acá nos encontramos con varios cambios en cuanto al dibujado debido a la implementación de Cairo (Librería 2D)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
*  Es importante para un próximo proyecto o mientras sigamos mejorando este, trabajar sobre la última versión del programa.. de otra forma podríamos estar implementando cosas en base a funciones que quizás ya no existan o que funcionen de otra manera teniendo así que perder tiempo en pensar nuevamente el algoritmo. (Tuvimos que re pensar la manera de obtener un pixel teniendo así que cambiar el algoritmo de distancia y de escala de grises).&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
*  Agregar funciones a simular&lt;br /&gt;
*  Acortar tiempos de renderización&lt;br /&gt;
*  Ajustar algoritmos para mejorar tiempos&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1542</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1542"/>
				<updated>2011-12-14T17:30:06Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Trabajo a futuro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&lt;br /&gt;
| [[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
Igualmente este nuevo render hace que el código se ejecute más lento, aquí vimos que estabamos trabajando sobre una version antigual del tortugarte.. Por lo que tuvimos que familiarizarnos con el Git de Butiá y el Git de Tortugarte. &lt;br /&gt;
Acá nos encontramos con varios cambios en cuanto al dibujado debido a la implementación de Cairo (Librería 2D)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
*  Agregar funciones a simular&lt;br /&gt;
*  Acortar tiempos de renderización&lt;br /&gt;
*  Ajustar algoritmos para mejorar tiempos&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1541</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1541"/>
				<updated>2011-12-14T17:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Problemas que fuimos resolviendo y herramientas que utilizamos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&lt;br /&gt;
| [[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
Igualmente este nuevo render hace que el código se ejecute más lento, aquí vimos que estabamos trabajando sobre una version antigual del tortugarte.. Por lo que tuvimos que familiarizarnos con el Git de Butiá y el Git de Tortugarte. &lt;br /&gt;
Acá nos encontramos con varios cambios en cuanto al dibujado debido a la implementación de Cairo (Librería 2D)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1540</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1540"/>
				<updated>2011-12-14T17:16:24Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Problemas que fuimos resolviendo y herramientas que utilizamos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&lt;br /&gt;
| [[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1539</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1539"/>
				<updated>2011-12-14T16:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Objetivos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones existentes, simular los resultados de su ejecución&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
* Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&amp;lt;br&amp;gt; &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1538</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1538"/>
				<updated>2011-12-14T16:50:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Objetivos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** En base a las funciones del robot simular sus resultados&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Utilizar pistas pre cargadas&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
* Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&amp;lt;br&amp;gt; &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1537</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1537"/>
				<updated>2011-12-14T16:39:27Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Motivación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos o en el caso de haber algún sensor en malas condiciones podríamos aproximar un comportamiento. Creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo y las ganas.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** Capturar las invocaciones a funciones del robot y simular sus resultados&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
* Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&amp;lt;br&amp;gt; &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1536</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1536"/>
				<updated>2011-12-14T16:32:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del comportamiento escrito, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** Capturar las invocaciones a funciones del robot y simular sus resultados&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
* Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&amp;lt;br&amp;gt; &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	<entry>
		<id>http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1535</id>
		<title>Grupo Simulador</title>
		<link rel="alternate" type="text/html" href="http://164.73.124.35/inco/proyectos/butia/mediawiki/index.php?title=Grupo_Simulador&amp;diff=1535"/>
				<updated>2011-12-14T16:26:31Z</updated>
		
		<summary type="html">&lt;p&gt;Ffarinasso: /* Introducción */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Integrantes'''==&lt;br /&gt;
* Fiorella Farinasso&lt;br /&gt;
* Pablo Silveira&lt;br /&gt;
* Ricardo Rodríguez&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Introducción'''==&lt;br /&gt;
Elegimos, como proyecto final, la creación de un plugin Simulador para el robot Butiá. Ya que de quedar implementado no sería necesario tener al Butiá enchufado para poder probar nuestro código en Tortugarte, lo cual es muy favorable ya que no todos los centros de estudio tienen uno, o en el caso de haber algún sensor en malas condiciones podríamos aproximar su comportamiento. También brinda la oportunidad al estudiante individual de continuar mejorando el funcionamiento del código viendo en cada paso como reaccionaría el Robot.&lt;br /&gt;
&lt;br /&gt;
=='''Motivación'''==&lt;br /&gt;
Dada la poca cantidad de robots construidos, creemos muy necesaria la existencia de una aplicación que permita simular el comportamiento de los mismos. Por ejemplo, por cada liceo hay un sólo robot, entonces los alumnos deben esperar a tener el robot presente para poder probar sus códigos, lo que lleva a un desaprovechamiento del tiempo.&lt;br /&gt;
Contar con dicha herramienta no sólo permitirá una previsualización del comportamiento escrito, sino que también posibilitará el testeo del mismo de una forma más simple que teniendo el robot enchufado.&lt;br /&gt;
Por lo tanto, el simulador no sólo es aplicable a los estudiantes de liceos que quieran seguir programando en sus casas, sino que también lo podrá utilizar cualquier persona que desee una forma más sencilla de probar lo que acaba de programar.&lt;br /&gt;
No obstante, es necesario aclarar que las reacciones del robot frente a su ambiente seguramente tendrán una diferencia con las del robot simulado, por lo que antes de estar seguros que un algoritmo funciona es necesario probarlo con un Butiá real.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Objetivos'''==&lt;br /&gt;
* Objetivos generales:&lt;br /&gt;
** Capturar las invocaciones a funciones del robot y simular sus resultados&lt;br /&gt;
** Mostrar gráficamente las reacciones del robot simulado&lt;br /&gt;
&lt;br /&gt;
* Objetivos específicos:&lt;br /&gt;
** Definir el lenguaje y las herramientas gráficas a utilizar&lt;br /&gt;
** Crear una nueva paleta para la actividad Tortugarte&lt;br /&gt;
** Simular las funciones básicas&lt;br /&gt;
*** Adelante&lt;br /&gt;
*** Atrás&lt;br /&gt;
*** Derecha&lt;br /&gt;
*** Izquierda&lt;br /&gt;
*** Detener&lt;br /&gt;
** Simular sensores&lt;br /&gt;
*** Escala de Grises&lt;br /&gt;
*** Distancia&lt;br /&gt;
*** Botón&lt;br /&gt;
** Simular funciones avanzadas&lt;br /&gt;
*** Cambiar velocidad&lt;br /&gt;
*** Girar X grados&lt;br /&gt;
** Facilitar la creación de ambientes&lt;br /&gt;
*** Permitir el dibujado de pistas fácilmente&lt;br /&gt;
*** Permitir la creación de obstáculos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Desarrollo del problema'''==&lt;br /&gt;
&lt;br /&gt;
Como ya fue planteado, la necesidad de un simulador para el Butiá es muy importante. Luego de investigar varias herramientas para desarrollarla, nos decidimos por hacerla integrada con Tortugarte.&lt;br /&gt;
&lt;br /&gt;
La idea de este plugin para Tortugarte es que sin la necesidad de tener completo el Butiá (XO + plataforma) se pueda visualizar en pantalla lo que haría físicamente nuestro código.&lt;br /&gt;
Para ello primero debemos dibujar el escenario utilizando los comandos básicos del programa y luego por medio de esta nueva paleta probarlo-.&lt;br /&gt;
&lt;br /&gt;
En un principio evaluamos la posibilidad de usar las librerias ODE o con OpenRave pero éste ultimo ya tenía un IDE creado, por lo que no serviría si se quiere hacer uno diferente, que consuma menos recursos y que sea más amigable. Luego con ODE vimos que igualmente habrían dificultades, además sería mucho más facil bajar un plugin para un programa con el que ya están familiarizados que una nueva aplicación.&lt;br /&gt;
&lt;br /&gt;
A partir de esta decisión tuvimos que familiarizarnos aún más con la Butiá API y con las funciones de TurtleGraphics que encontramos en la wiki de sugarlabs ([http://wiki.sugarlabs.org/go/Activities/Turtle_Art#How_to_write_a_plugin link a las funciones])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*API: (Interfaz de programación de aplicaciones - Application Programming Interface, es un conjunto de funciones residentes en bibliotecas, generalmente dinámicas, que permiten que una aplicación corra bajo un determinado sistema operativo.Expone operaciones de alto nivel para obtener valores de sensores o ejecutar acciones de los actuadores)&lt;br /&gt;
&lt;br /&gt;
=='''Problemas que fuimos resolviendo y herramientas que utilizamos'''==&lt;br /&gt;
	&lt;br /&gt;
* A la hora de simular las funciones básicas el primer problema que encontramos era que cuando avanzaba la tortuga no la mostraba en pantalla. Por lo que tuvimos que utilizar la función de &amp;quot;Actualizar mundo&amp;quot; y como ya estaba implementada en el plugin del Sumo butiá (sumtia) fue solo adaptarla. Este bloque muestra al robot en su nueva posición luego de haberse ejecutado la última orden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:Pantallazo.png|thumb|secuencia de código]]&lt;br /&gt;
* Para simular el sensor de escala de grises tuvimos que reutilizar el código de la función &amp;quot;get_pixel&amp;quot; (se encuentra en el archivo tacanvas.py), que devuelve el valor del color sobre el cual se encuentra la tortuga. Acá nos encontramos con que el valor era tomado del centro de la tortuga, por lo que si emulamos el comportamiento que tendría en el caso de querer seguir una línea, quedaría girando al llegar al vértice. De aquí tuvimos que ver como calcular la posición de la cabeza para poder ubicar al emulador del sensor en esta extremidad (al igual que lo haríamos en el Butiá - se suelen ubicar los sensores de Gris en la parte delantera del mismo). Acá hay una primer prueba de la simulación del seguidor de líneas.&amp;lt;br&amp;gt; &amp;lt;youtube&amp;gt;HDAuILvlQvc&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* Quisimos agregar un bloque que transforme la imagen de la tortuga, por defecto en Tortugarte, en una del robot Butiá. Cuando logramos hacerlo, vimos que la tortuga (ahora con la apariencia del Butiá), giraba sólo de a 90 grados. Para solucionar el problema tuvimos que comunicarnos con Walter Bender.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
* El mayor problema que encontramos fue el de simular el bloque Delay, de la paleta Butiá. El robot real, cuando se ejecuta este bloque, se queda ejecutando la última orden recibida. En nuestro caso, necesitábamos invocar a la función &amp;quot;Actualizar mundo&amp;quot; todas las veces que fueran necesarias hasta que se cumpliera el tiempo recibido como parámetro del Delay. El tema fue que Tortugarte oculta la tortuga mientras se va ejecutando el código de un bloque. Finalmente, el Martes 13 de diciembre a las 23:57 conseguimos hacerlo funcionar, imitando el código del bloque &amp;quot;wait&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Conclusiones'''==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Trabajo a futuro'''==&lt;br /&gt;
&lt;br /&gt;
Todavía quedan funcionalidades por simular, y además tenemos que mejorar el movimiento del robot virtual.&lt;/div&gt;</summary>
		<author><name>Ffarinasso</name></author>	</entry>

	</feed>