Prime Hub + Pybricks

Para os mais especializados em mecânica e electrónica em LEGO.
Responder
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4067
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Prime Hub + Pybricks

Mensagem por CyberX » 14 out 2020, 09:43

Graças à Comunidade ROBOTMAK3RS e à LEGO tive a oportunidade de experimentar um 51515 Robot Inventor umas semanas antes de ser lançado a público (depois de amanhã).

Já houve várias reviews do set, inclusive em português suave por isso não me vou meter por aí até porque montar o que está na caixa não faz muito o meu género.

Com a ajuda do Lauren Valks do projecto Pybricks consegui incorporar o firmware deles no hub do set (o Prime Hub, idêntico ao hub do SPIKE que no fundo é a variante EDUCATION do Robot Inventor). Ainda está numa fase muito inicial pelo que não vale a pena estar a explicar como se faz (no meu caso envolveu uma máquina virtual com Windows) mas vale a pena explicar o resultado:

Com o firmware do Pybricks instalado no Prime Hub ficamos com uma configuração "dual boot" - ao ligar o Hub da forma habitual ele funciona com o firmware nativo da LEGO e pode ser utilizado pela App da LEGO que permite programá-lo numa variante de Scratch e noutra de micropython.
Mas ao ligar o Hub com uma determinada sequência de botões ele arranca com o firmware Pybricks que permite programar em micropython - semelhante no conceito ao implementado pela LEGO mas substancialmente diferente na implementação.

Com o firmware Pybricks temos acesso a uma API homogenea entre os vários dispositivos suportados pelo projecto: MINDSTORMS EV3 (que nada tem de Powered Up) e todos os hubs PU até agora (à excepção do Super Mario da Nintendo). E no caso particular dos hubs, todos os motores e sensores são interoperáveis - usando um objecto da classe "Motor" podemos usar qualquer motor com sensor interno de rotação, sejam os do BOOST, do SPIKE, do Technic semelhantes aos Power Functions ou do Technic semelhantes aos do SPIKE (os da nova Volvo). Portabilidade plena!

Para demonstrar isso fiz um pequeno "Line Follower" só com o cérebro do 51515 Robot Inventor e dois motores da Volvo e um sensor do BOOST:

Imagem

Como disse o firmware ainda está muito inicial e obriga-me a programar esta tartaruguinha em modo "tethered" com o cabo USB sempre ligado. Daí que o circuito experimental seja muito pequeno:

Imagem

O código e alguns comentários do Lauren podem ser vistos aqui:
https://github.com/pybricks/support/issues/149

Não há ainda video, até uma versão mais madura do firmware que possa permitir-me a demonstração sem o cabo USB a atrapalhar. Mas funciona e ainda não houve quedas ao chão.

Se quiserem ver um video, este aqui mostra o estafado "Hello World!":
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»

Avatar do Utilizador
AGarcia
Administrator
Administrator
Mensagens: 4793
Registado: 03 mai 2009, 22:47
Localização: Peniche
Contacto:

Re: Prime Hub + Pybricks

Mensagem por AGarcia » 14 out 2020, 10:50

:clapping: :clapping: :clapping:
Sócio nº 101 - #EUusoOmeuLUGBULKnosEVENTOSdaPLUG

Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15565
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Prime Hub + Pybricks

Mensagem por Conchas » 14 out 2020, 11:49

Ahhh!
O script bem me disse que tinha concluído a instalação, mas depois do reboot eu via sempre o FW da LEGO.
Afinal, provavelmente falta-me a sequência de teclas para o hub arrancar com o FW do Pybricks... ???

Tu e essa mania de dizer as coisas aos bocadinhos!... :P
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

:brincka:

Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4067
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Prime Hub + Pybricks

Mensagem por CyberX » 14 out 2020, 11:53

Conchas Escreveu:
14 out 2020, 11:49
Ahhh!
O script bem me disse que tinha concluído a instalação, mas depois do reboot eu via sempre o FW da LEGO.
Afinal, provavelmente falta-me a sequência de teclas para o hub arrancar com o FW do Pybricks... ???

Tu e essa mania de dizer as coisas aos bocadinhos!... :P
Eu disse-te!
Ou melhor eu escrevi no messenger do teu FB.
Raisparta os programadores de Java apressados que não lêem o manual :P
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»

Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15565
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Prime Hub + Pybricks

Mensagem por Conchas » 14 out 2020, 12:10

Só tinha reparado na primeira linha "Power isn't fully on yet in our "bootloader" so buttons have no power yet." e consequentemente não percebi patavina!... :P

Depois de uma frase destas, um gajo desliga... ::)
Fica como os butões... sem power! ;D
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

:brincka:

Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13349
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: Prime Hub + Pybricks

Mensagem por AVCampos » 14 out 2020, 23:05

Isso promete! :clapping: A universalidade da programação atrai-me: gosto de poder programar o RCX e o NXT no mesmo ambiente (usando linguagens um pouco diferentes, mas pronto), e embora o Scratch seja um passo acima dos fiozinhos e caixas do EV3-G, continuo a preferir a boa velha programação textual.

Visto que o Pybricks vive a par do firmware oficial como uma dupla personalidade, não ficará pouco espaço disponível para programas e dados? O David Gilday anda a ver-se às aranhas para que o código do resolve-cubos dele caiba na memória do Prime (é este o nome do hub? Sempre julguei que seria "SPIKE", sendo "Prime" o primeiro set em que ele aparecia)...
Conchas Escreveu:
14 out 2020, 12:10
Fica como os butões... sem power! ;D
Citando a tradução para português do manual de instruções de um electrodoméstico: "gire sobre o botão do poder." :D
CyberX Escreveu:
14 out 2020, 09:43
Com o firmware Pybricks temos acesso a uma API homogenea entre os vários dispositivos suportados pelo projecto: MINDSTORMS EV3 (que nada tem de Powered Up) e todos os hubs PU até agora (à excepção do Super Mario da Nintendo).
Todos mesmo menos esse? Quer dizer que vou proximamente poder construir um robot controlado pela base de comboio Duplo que comprei no Skærbæk Fan Weekend? ;D

Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4067
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Prime Hub + Pybricks

Mensagem por CyberX » 14 out 2020, 23:42

Visto que o Pybricks vive a par do firmware oficial como uma dupla personalidade, não ficará pouco espaço disponível para programas e dados? O David Gilday anda a ver-se às aranhas para que o código do resolve-cubos dele caiba na memória do Prime (é este o nome do hub? Sempre julguei que seria "SPIKE", sendo "Prime" o primeiro set em que ele aparecia)...
"Espaço" no sentido da ROM do Spectrum ou do disco rigido do PC há suficiente para 2 ou mesmo 3 "imagens" (dual-boot ou tri-boot).
O que o David Gilday e mais uns quantos estão a sofrer na pele é falta de "espaço" no sentido da RAM, o Prime Hub (parece que sim, que é esse o nome... a LEGO é tão coerente não é?) apesar de ter mais memória que os restantes hubs não chega aos calcanhares do NXT ou do EV3.

Um sinal de que sobra "espaço" é esta entrada recente no Github de suporte do projecto:
https://github.com/pybricks/support/issues/140
We currently have most MicroPython modules and some features disabled. This is because we started on Move Hub, which does not have a lot of space (~106Kb). The other hubs have more space (~232Kb), so they can have more features enabled.
This issue is to collect ideas and suggestions from the community for modules and features we should enable
ou seja eles sentem margem de manobra suficiente para poder aumentar ainda mais a imagem actual.
Todos mesmo menos esse? Quer dizer que vou proximamente poder construir um robot controlado pela base de comboio Duplo que comprei no Skærbæk Fan Weekend? ;D
Apanhaste-me :D
Apesar da LEGO não reconhecer o comboio DUPLO como Powered Up, é na verdade um hub PU.
Mas ânimo: o facto de nem o Super Mario nem o comboio terem uma imagem Pybricks não quer dizer que não possam ter - envia um exemplar ao David Lechner que ele trata disso num instante (eu em tempos fiz-lhe chegar um Raspberry Pi 2 ou 3 para o ev3dev) - a propósito, o Projecto está desde há algunas dias aceitar patronos, é só ir ao github e escolher uma modalidade.

Mas nada te impede de avançar já com esse robot - o protocolo básico está publicado, po-lo a andar para trás e para a frente com comandos BLE é relativamente simples e deves conseguir ler o sensor de cor com alguma facilidade (se não ainda tenho para aí o sniffer).
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»

Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13349
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: Prime Hub + Pybricks

Mensagem por AVCampos » 15 out 2020, 01:16

Com tanto pBrick mais capaz que tenho e sem pachorra para os usar, não vou estar a escavar no firmware de um hub tão limitado... ::) Prefiro doá-lo a ti ou ao David, para que possam investigar o que necessitarem, FOR SCIENCE!

Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15565
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Prime Hub + Pybricks

Mensagem por Conchas » 17 out 2020, 16:02

Foi uma guerra!... :P

Entre aselhices e alpha bugs, surge um problema a cada passo...
Mas lá saiu mais ou menos o que queria com o meu primeiro teste do Pybricks no SPIKE



A cor detetada muda no display do laptop e no botão on/off do SPIKE hub.
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

:brincka:

Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4067
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Prime Hub + Pybricks

Mensagem por CyberX » 17 out 2020, 17:38

:jump:
boa!
leste a documentação até ao fim?
porquê o SPIKE e nao o 51515?
ou no teu Windows só funciona com o SPIKE?
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»

Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13349
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: Prime Hub + Pybricks

Mensagem por AVCampos » 17 out 2020, 20:14

Boa! :clapping: Mas será que consegue distinguir o medium blue do sand blue? ;D

Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15565
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Prime Hub + Pybricks

Mensagem por Conchas » 17 out 2020, 21:11

CyberX Escreveu:
17 out 2020, 17:38
:jump:
boa!
leste a documentação até ao fim?
porquê o SPIKE e nao o 51515?
ou no teu Windows só funciona com o SPIKE?
Confesso que por vezes deixo escapar partes da documentação, mas aqui nem foi esse exactamente o caso.
Não consegui mesmo ligar o poetry ao hub, e o Laurens nem achou estranho. Apenas pediu desculpa (como se fosse caso para isso).
Mas descobriu que se consegue fazer copy&paste de um script para o REPL e corre-lo a partir deste.
Funciona, mas mesmo isso não foi à primeira... Tive alguns problemas que nem percebi... a coisa parece um bocado arbitrária - há problemas com espaços e comentários, e os scripts ora correm, ora não correm!

Não utilizei o MINDSTORMS, porque não quis arriscar nesta fase, se bem que está visto que o risco deve ser mínimo. Andei hoje com o Blast a fazer filmagens em Lisboa, por isso também tem estado relativamente reservado.

AVCampos Escreveu:
17 out 2020, 20:14
Boa! :clapping: Mas será que consegue distinguir o medium blue do sand blue? ;D
Consegui distinguir uma palete de 31 cores, mas é bastante sensível às condições de iluminação com as variações de local e da hora do dia...
Mesmo a utilização de uma caixa negra, parece prejudicar mais, do que ajudar!...
Requer muito mais testes!

Engraçado que o esquema que eles aplicaram parece ser exactamente aquele que eu à muito tinha idealizado.
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

:brincka:

Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4067
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Prime Hub + Pybricks

Mensagem por CyberX » 19 out 2020, 10:57

O Laurens corrigiu o problema que me obrigava a executar o código com o cabo USB ligado por isso já tenho uma demonstração decente do Line Follower:



Quanto ao código:

Código: Selecionar todos

# with Laurens Valk tips
# for Proportional control and COUNTERCLOCKWISE option

from pybricks.hubs import PrimeHub
from pybricks.parameters import Port, Color, Direction, Button
from pybricks.pupdevices import Motor, ColorDistanceSensor
from pybricks.tools import wait

hub = PrimeHub()
mL = Motor(Port.E, Direction.COUNTERCLOCKWISE)
mR = Motor(Port.F)
s = ColorDistanceSensor(Port.A)

SPEED = 95 # 40
THRESHOLD = 55
KP = 2.5

while True:
    if hub.buttons.pressed() == [Button.LEFT] :
        break
    wait(10)

while True:
    v = s.reflection()
    print(v)
    steering = (v - THRESHOLD) * KP
    mR.dc(SPEED + steering)
    mL.dc(SPEED - steering)
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»

Responder