Un fork de Python mejora las desconexiones de Sphero BOLT

Sphero BOLT puede controlarse con una biblioteca comunitaria de Python que detecta cortes Bluetooth. El código está disponible, pero la versión aún no se ha lanzado.

·Redacción Robotica.es
4 min de lectura
Fotografía oficial de un Sphero BOLT sostenido sobre una mesa junto a una tableta que muestra un editor de su matriz LED.

Al programar un Sphero BOLT desde Python, ahora se puede detectar de forma explícita una conexión Bluetooth perdida, gracias a una modificación comunitaria de la biblioteca spherov2. El fork, una variante del proyecto original mantenida por Siddharth Vaghela, permite detectar el corte y hacer fallar las órdenes pendientes, en lugar de dejar al programa esperando. Sirve para quienes experimentan con el robot desde un ordenador; no exige sustituir la esfera ni modifica su firmware.

El autor presentó el trabajo el 5 de octubre en la comunidad de Sphero [en]. Las modificaciones principales están en el repositorio desde el 22 de septiembre. Se trata de código disponible para instalar, aunque su historial identifica 0.13.0 como «unreleased», todavía sin lanzamiento [en]. No es una actualización oficial de Sphero.

Nuestra guía del BOLT original explica sus sensores y su matriz de luces. Este cambio afecta a otra parte de la actividad: qué puede hacer el código del ordenador cuando deja de recibir respuestas del robot.

Dos fallos que ahora se pueden distinguir

Una orden puede quedarse sin respuesta aunque el enlace siga conectado. El fork utiliza TimeoutError para ese caso y añade al mensaje información sobre el robot y el paquete afectado. Si se corta el enlace, emplea otra excepción, ToyDisconnectedError. Separarlas ayuda a localizar el problema al depurar una práctica.

La implementación de la conexión [en] permite además registrar una función mediante add_disconnect_listener(). Esa función se ejecuta al detectar la desconexión. Un proyecto podría utilizarla para mostrar un aviso o cancelar las siguientes instrucciones, sin esperar a que cada orden agote su tiempo de respuesta.

Detectar el corte no equivale a reconectar automáticamente ni a garantizar la parada física del robot. La notificación llega al programa del ordenador. Con el enlace caído, ese programa no puede dar por recibida una nueva orden de parada. Por eso, una primera actividad debería comenzar con luces y lectura de datos, antes de introducir desplazamientos.

El historial también recoge una recuperación del flujo de paquetes tras notificaciones corruptas o incompletas. Son cambios del transporte de datos: no añaden nuevos sensores a BOLT ni convierten su control remoto en navegación autónoma.

El paquete de PyPI todavía es otro

La ficha de spherov2 en PyPI [en] mantiene la versión 0.12.1 y enlaza el proyecto original. Ejecutar pip install spherov2 no identifica por sí solo el fork de Vaghela. Para probar exactamente el código descrito, conviene usar un entorno virtual separado, tener Git instalado y fijar la revisión del repositorio:

python -m pip install "git+https://github.com/artineering/spherov2.py@b39640306b0f379ba106c33d188ebf2f7b244ae2"

El proyecto [en] requiere Python 3.9 o posterior, declara la dependencia Bluetooth bleak y utiliza licencia MIT. El ordenador necesita Bluetooth de baja energía. La documentación de Bleak [en] concreta sistemas y requisitos propios: la compatibilidad depende también del sistema operativo y de su servicio Bluetooth, no solo de la versión de Python.

Antes de buscar el robot, hay que liberarlo de la conexión con otra aplicación y comprobar que está cargado y despierto. El escáner del fork permite seleccionar el modelo BOLT o su nombre concreto. Esto evita conectar con la primera esfera encontrada cuando hay varias en el aula. BOLT+ no aparece en la lista de modelos del proyecto; no debe darse por compatible por compartir marca.

El repositorio incluye pruebas con un adaptador simulado. Comprueban lógica del software sin hardware, pero no acreditan el comportamiento de cada ordenador con un BOLT físico. La mejora descrita procede del código y de su documentación, sin una prueba propia del robot.

Para aprender Python también existe Sphero Edu

La ruta oficial sigue disponible: Sphero Edu permite programar BOLT con bloques, JavaScript y Python [en]. Para una primera sesión con robots educativos, evita tener que gestionar bibliotecas, entornos y errores Bluetooth por separado. El fork interesa cuando se quiere integrar la esfera en un programa propio del ordenador y controlar esa comunicación.

BOLT es un producto comercial ya montado. La tienda europea de RobotShop ofrece la unidad K002ROWFFP por 217,80 €, con impuestos incluidos según la ficha, base de carga inductiva y cable USB. España aparece entre los destinos del calculador de envío; los portes se calculan al tramitar la compra. La página no concreta una entrega inmediata. Quien ya tiene un BOLT puede explorar el cambio de software con su equipo actual, conservando una copia del programa y la revisión utilizada para poder repetir la actividad.

Fuentes

Sigue explorando

Robots relacionados

Descubre sus fichas y todo lo que hemos contado sobre ellos.

Ver toda la categoría
Sphero BOLT+ con carcasa transparente y una cara azul en su pantalla LCD

BOLT+

Sphero

Render oficial del montaje Nova de Blueprint Robotics, con mecanismo de recogida inclinado sobre la base de cuatro ruedas; fotograma del vídeo de Sphero.

Blueprint Robotics

Sphero

Fotografía oficial de Sphero BOLT, esfera robótica transparente con matriz LED visible.

Sphero BOLT

Sphero

Kitronik MOVE mini MK2 con dos ruedas y placa Servo:Lite, sin micro:bit.

:MOVE mini MK2

Kitronik

Freenove 3WD Robot Car montado con cámara sobre el chasis.

3WD Robot Car Raspberry Pi

Freenove

Andy de Xtrem Bots con cabeza amarilla y cuerpo blanco y azul.

Andy

Xtrem Bots

AR4 de Annin Robotics

AR4

Annin Robotics

Blue en una demostración de teleoperación con sus dos brazos y un operador al fondo.

Blue

Berkeley Open Robotics