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

Guillermo Rodriguez guillermor en fing.edu.uy
Jue Abr 30 09:59:17 -03 2020


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.


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