[Butia-devel-list] Protocolo PC<->Butiá sobre USB

Alan Jhonn Aguiar Schwyn alanjas en hotmail.com
Vie Jul 21 17:14:47 -03 2023


Como bien dice Guille, la información de PyBot resumida está acá:

https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=PyBot

En cuanto a la pregunta original: si, el mensaje que envía siempre es el mismo de "get_value", pero eso es el final del mensaje.

Al inicio se manda un byte que dice a qué modulo le estamos hablando.

[cid:21d3938d-682c-44b1-872e-5311bb328669]

Y en PyBot hacemos el "send" de ese mensaje:

[cid:0812f681-d4cc-4d8a-9303-288357275784]
el "self.shifted" sería el identificador, luego el tipo de operación (0x03), luego la longitud, un byte vacío y luego si el "get_value"

Quizás habría que hacer un taller de PyBot explicando esto.

El código hace lo mismo que en Lua, pero Python me gusta más.

________________________________
De: butia-devel-l-bounces en fing.edu.uy <butia-devel-l-bounces en fing.edu.uy> en nombre de Guillermo Reisch <greisch en fing.edu.uy>
Enviado: viernes, 21 de julio de 2023 16:55
Para: butia-devel-l en fing.edu.uy <butia-devel-l en fing.edu.uy>
Cc: Eduardo Trápani <etrapani en gmail.com>
Asunto: Re: [Butia-devel-list] Protocolo PC<->Butiá sobre USB

Manual, bue, esta la información de bobot en la wiki de butia
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Bobot

Después cambiamos el "bobot" (en lua echo por Jorge) por "pybot" (en python
echo por Alan) que se comunica con la usb4aButiá directamente usando la
librería pyusb, ahí ya no necesitamos el servidor tcp/ip esperando comandos
(ya que usamos pybot como una api directamente y no como un servidor aunque
también tiene server por lo que vi...)
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=PyBot
Codigo esta en butia/turtlebots/pybot

Y por ultimo si te interesa el formato protocolo USB no hay otra que ver el
USB4Butia (que es la placa con el pic18f4550 que maneja el butia 2.0)
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?
title=USB4buti%C3%A1

El usb4butia esta basado en usb4all
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?title=Usb4all
que es un proyecto de grado de Andres Aguirre.
La tesis final con la documentación de usuario y todo esta en
https://sourceforge.net/p/usb4all/code/ci/master/tree/doc/usb4all/
Igual que todo el firmware de butia que esta en:
https://sourceforge.net/p/usb4all/code

el protocolo que usa usb4all (implementado en el firmware)
https://www.fing.edu.uy/inco/proyectos/butia/mediawiki/index.php?
title=Usb4all#3._Protocolo_de_Comunicaci.C3.B3n
 es un RPC (Remote Procedure Call) [bloqueante] en que le mandas un mensaje a
algún modulo y el modulo responde, tienes un modulo principal o admin que se
encarga de abrir otros modulos, y cada modulo (por ejemplo "grey" o sensor de
grices) tiene funciones particulares [en el caso de "grey" GET_VALUE=1]

En pybot el manejo del modulo admin esta en:
turtlebots/pybot/device.py

Y cada modulo particular podes ver las funciones que soporta en:
turtlebots/pybot/drivers/$NOMBRE_MODULO

Ejemplo:
# Abrir modulo grey (obtenido de device.py)
[0][10][0][0][1][1]['g']['r']['e']['y'] => usb4all

Si podes desde la app android instalar un interprete python ya podrías correr
el código de pybot en la app y utilizarlo como una api.

Espero no haberte confundido más todavía :-P

Saluds
Guillermo Reisch


El jueves, 20 de julio de 2023 23:21:13 -03 Eduardo Trápani escribió:
> Hola,
>
> Estoy tratando de comunicarme desde una aplicación Android en una Beta
> Crux de Ceibal con el adaptador USB OTG.
>
> Intento seguir el codigo de bobot[1] pero honestamente, en lua me pierdo
> entre los objetos y los mensajes sobre USB. Los send() envían por
> ejemplo todos el mismo código para leer sensores (aparentemente
> GET_VALUE=0x01) pero no veo cómo indicar a cuál sensor se refiere.
>
> ¿Hay algún documento que cuente un poco cómo es el protocolo de
> conversación USB con la Butiá? Puede ser algo general, es para entender
> el flujo de la comunicación y cómo se elige el dispositivo (sensor,
> motor) con el que se quiere hablar. Si no hay documento, ¿alguien puede
> comentar por arriba cómo funciona la charla con la Butiá sobre USB?
>
> [1] https://sourceforge.net/p/butia/code/ci/master/tree/bobot/
>
> _______________________________________________
> Butia-devel-l site list
> Butia-devel-l en fing.edu.uy
> https://www.fing.edu.uy/mailman/listinfo/butia-devel-l




_______________________________________________
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/20230721/7396bcd4/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 52599 bytes
Desc: image.png
URL: <https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20230721/7396bcd4/attachment.png>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 9757 bytes
Desc: image.png
URL: <https://www.fing.edu.uy/pipermail/butia-devel-l/attachments/20230721/7396bcd4/attachment-0001.png>


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