[Butia-devel-list] El futuro de PyBot, Python 3

Alan Jhonn Aguiar Schwyn alanjas en hotmail.com
Vie Mayo 1 03:10:58 -03 2020


Buenas

Si, es hora de actualizar a Python 3.

En cuanto al archivo "functions" su existencia se debe a 2 razones:

1) Que los archivos de drivers sean lo más simple posible. La idea era que la gente tirara un archivo ahí dentro, con casi nada de código y funcionara.
2) En algún momento, preocupado por la performance de hacer ciertas conversiones de datos y pasar a través del socket, pensé en unificar el código para que se pudiera usar como "cliente-servidor" y directo por otro. Adjunto imagen con un diagrama que hice en su momento. La flecha de la izquierda es el flujo que se tiene cuando se usa sin pasar por el cliente-servidor y la flecha central es el flujo habitual con cliente-servidor. El principal problema que veía era que todo se unía para pasar a ser una string por el socket y después se volvía a separar para obtener los datos. Hay muchas conversiones que hay que simplificar. Nunca le di tiempo a esa parte.

Me parece bueno actualizar otras APIs, sobre todo en C que le gusta a muchos. La idea de hacer PyBot fue no tener binarios que dependan de la máquina que estuviéramos usando. Con Python no hay que compilar nada y el código anda en XO con arquitectura 386, XO con arquitectura ARM, Magallanes y Positivos con 32 y 64 bits, etc.

La API en Lua se llama Bobot y funciona bien. El único problema era tener que compilar el libusb para diferentes máquinas, cuando Ceibal empezó a incorporar otros equipos.

Me parece un retroceso volver a tener que compilar código. El que usa TurtleBots no precisa un rendimiento excepcional, ya que el cuello de botella no es PyBot, está en el propio TurtleBots y su forma de ejecutar código.
Quien necesite mejor rendimiento, va a usar la API en C y su código también.

Saludos

________________________________
De: butia-devel-l-bounces en fing.edu.uy <butia-devel-l-bounces en fing.edu.uy> en nombre de Guillermo Rodriguez <guillermor en fing.edu.uy>
Enviado: jueves, 30 de abril de 2020 9:59
Para: butia-devel-l en fing.edu.uy <butia-devel-l en fing.edu.uy>
Asunto: [Butia-devel-list] El futuro de PyBot, Python 3

Buenas!

Considerando el “End Of Life” de Python 2 (https://www.bleepingcomputer.com/news/software/python-27-reaches-end-of-life-after-20-years-of-development/), estamos viendo de actualizar la API PyBot a Python 3.

La idea es tener una discusión sobre cual es la mejor arquitectura a implementar, para los que no conocen la API acá una breve descripción de su estructura:

REPO: https://github.com/guilledk/pybot

com_usb.py: provee abstracción sobre modulo “pyusb”.

device.py: provee abstracción que representa cada modulo sensor / actuador.

baseboard.py: provee abstracción que representa cada placa usb4butia conectada.

usb4butia.py: métodos para inicializar y controlar una o más placas conectadas.

functions.py: baseboard nos da una función genérica “callModule”, en este archivo se definen todos los calls para los diferentes “drivers” (distancia, grises etc), pero la implementación final de dichas calls se encuentra separadas en varios submodulos en la carpeta “drivers”.

La idea que rescato de esta API es exponer abstracciones para representar la comunicación usb, la placa y los módulos, una cosa que cambiaria seria la implementación del sistema de llamadas a drivers, no tiene mucho sentido separarlo de esa forma, los drivers pueden vivir cada uno en su modulo y desde ahi también exponer llamadas de la API, no hace falta tener un archivo adicional “functions.py” para declarar dichos calls.

En 2016 intente hacer una API de butia en C (https://github.com/guilledk/butiac, ojo esto es code viejo y es medio ewww), y logre implementar todos los sensores comunes, me quede en testear la implementación de los motores. Lo interesante fue que en benchmarks la API en C fue como un 80% mas rápida.

Mi planteo seria implementar la API en un lenguaje compilado (C, Rust) y luego producir bindings (esto es super fácil) a cualquier lenguaje que se desee usar, Lua, Python y lo que venga.
_______________________________________________
Butia-devel-l site list
Butia-devel-l en fing.edu.uy
https://www.fing.edu.uy/mailman/listinfo/butia-devel-l
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20200501/e96fda18/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: pybot structure_recorted.png
Type: image/png
Size: 13254 bytes
Desc: pybot structure_recorted.png
URL: <https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20200501/e96fda18/attachment.png>


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