[Butia-devel-list] Cambios TurtleBots

Alan Jhonn Aguiar Schwyn alanjas en hotmail.com
Lun Abr 2 20:58:01 UYT 2012



Hola!
TEMA 1:
Como ya saben, sigo trabajando con el Tortuga para optimizarlo cada vez mas.
Hice un branch nuevo llamado "all_to_poll" que como su nombre lo indica, tratade meter todo al "poll thread" (debería haberlo llamado all_to_thread).
Cuando la tortuga inicia, carga cada plugin,  en el caso nuestro, llama al __init__ delplugin Butiá que se encarga de llamar al bobot y hacer otras tantas cosas. Estas muchascosas consumen mucho tiempo, y más en una XO 1.0. Por tal motivo, se me ocurrióllevar toda esa carga al thread para que el inicio sea mas rápido, y, mientras se cargan el restode las cosas, el thread va levantando el Lua y las otras cosas. 
Además, en lugar de llamar a os.system (deprecada?) utilizo: subprocessEsta función nos permite tener control absoluto sobre el proceso que llamamos.
Ejemplo de llamada al bobot:
bobot = subprocess.Popen(['./lua', 'bobot-server.lua'], cwd='./plugins/butia/butia_support')
y al salir, hacemos un kill:
bobot.kill()
Y esto, lo mata o lo mata.. no queda colgado el bobot. Igualmente dejé la llamada al "ps ax"para controlar que ya no esté levantado (alguien puede tenerlo levantado, como por ejemplo,butialo).
Voy a ver que otros cambios hago, pero esto baja el tiempo de inicio considerablemente.En un próximo mail les mando los times..

TEMA 2:
Como algunos saben, y sino les cuento, con Walter venimos trabajando hace un tiempo en un sistema deimportación de plugins.Mirando el código de la Tortuga (y ya ni recuerdo el porque) me surgió la idea de aprovechar un viejosistema que usaba la Tortuga para importar "proyectos". Estos proyectos eran un .tar que contenía un archivo .ta con el código del proyecto y agregaba una captura del dibujo terminado.Cómo hacía la tortuga para abrir este tipo de archivos? Los descomprimía en una carpeta temporal y luego loabría.Ahi dije: listo, está todo hecho.. Hacer lo de los plugins es agregarle algunos detalles.
Asi que le mandé un pequeño parche funcional con la idea básica: si es un .tar (o tar.gz) lo descomprime. Adentrochequea si existe un archivo "plugin" con la metadata del plugin, si existe, chequea por el nombre del plugin y encaso de encontrarlo, lo copia a la carpeta de plugins.
Walter después le agregó todo tipo de validaciones y detalles, pero la idea sigue siendo esa.Algo que le agregó que está muy bueno, es que en mi primer versión, el plugin se copiaba y solo aparecía cuandoreiniciabas la actividad. Walter le agregó un import y con eso hacemos que el plugin se muestre inmediatamente,y no solo eso.. queda completamente funcional!
La estructura de un plugin es:
pluginplugin_name/    icons/        ...    libs/       ...    __init__.py    plugin_name.py
Dentro de "plugin" creamos una metadata estilo .ini de windows :-)
[Plugin]name=plugin_namepalette=palette_nameversion=1
"name" es el nombre de la carpeta que contiene al plugin: el nombre del plugin"palette" es el nombre de la paleta/s que crea el plugin, Walter lo usa para chequear si ya existe la                 paleta o no. Se permite que un plugin cargue varias paletas, los nombres separarlos por comas."version" del plugin. Por ahora, no lo usamos. Pero en el futuro puede ser útil tener un versionado.
Los plugins los podés bajar de la wiki de TurtleArt y te quedan en el Diario (Journal). Entrando a laTortuga y haciendo un "Cargar plugin" te habre el Diario y lo seleccionás y lo instala. Si uno va a labarra y se fija en las paletas, la paleta de ese plugin ya está cargada.. y todo esto se hace en menos de 2segundos!
TEMA 3:
Haciendo pruebas, con esto de los plugins, me encontré con un resultado interesante. Desde las primerasversiones de TurtleArt Butiá estamos agregando en la carpeta activity un archivo llamado permissions.info.Este archivo contiene solo una linea que dice "use serial" y era para que el rainbow (sistema de seguridad quetraía el Sugar 0.82) permitiera a la tortuga usar el serial.Esto ya quedó deprecado, y en las imágenes del LATU, tanto 0.88.1 como en la "nueva" dextrosa 2 (1b)esto es completamente innecesario. Ni que hablar que en el Sugar nuevo tampoco se necesita.Creo que tener compatibilidad con Sugar 0.82 es completamente innecesario, ya que máquinas conesa versión de Sugar son prácticamente inexistentes.
Asi que resumiendo, con esto de los plugins, nuestra labor de TurtleBots puede llegar a su final.Posiblemente en el futuro, solo mantengamos los plugins actualizados. Y cada quién baje los plugins quequiera/necesite.
Lo que falta implementar: borrar un plugin existente. Se aceptan sugerencias...
Creo que no me olvido de decirles nada.. asi que..
Saludos!
Alan
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: https://www.fing.edu.uy/mailman/private/butia-devel-l/attachments/20120402/da84dc3c/attachment.html" 


Más información sobre la lista de distribución Butia-devel-l