[WIP] Charlie the LEGO Drummer

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

[WIP] Charlie the LEGO Drummer

Mensagem por CyberX »

Pois como tinha dito noutro sítio este fim de semana desmontei o BLAST (51515 MINDSTORMS Robot Inventor) para poder montar o Charlie

Imagem

Está bastante bem conseguido/concebido tanto este gorducho como a bateria que o acompanha, apesar de um pouco dificil de alinhar de modo a fazê-lo acertar nos pratos mais para o final (se acertar com força suficiente, o mecanismo de cada prato faz disparal o dardo, o que fica engraçado como "grand final"... quando funciona).



de qualquer maneira a ideia não era usar a bateria do set e sim uma App (TouchDAW) que me permite usar o tablet como um instrumento MIDI (neste caso dois controladores com 16 "pads" cada, cada um associado a 1 instrumento de percussão - um deles associei a uma bateria, o outro a algo que parece ser uma escola de samba)



no video estou a usar um programa muito básico na versão "estilo Scratch" da App da LEGO. Lento, lento, lento. Vou tentar a versão "micropython" só para ver como é e depois meto-lhe Pybricks.

Neste video a aplicação TouchDAW está a enviar as mensagens MIDI por WiFi (ipMIDI) pelo que podia juntar os meus outros instrumentos MIDI.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
gads
Administrator
Administrator
Mensagens: 6355
Registado: 11 set 2006, 23:58
Localização: Oeiras

Re: [WIP] Charlie the LEGO Drummer

Mensagem por gads »

O baterista está muito engraçado :fixe:
Guilherme Santos
www.historybricks.com
Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13681
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por AVCampos »

Já tinhas um instrumento de cordas, um de sopro e outro de percussão... não falta muito para termos uns Kraftwerk tugas. :fixe:
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4311
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por CyberX »

É mais uma versão Monty Python dos Toa Mata Band:


Estou seriamente a pensar em chamar à banda "The Mindstormy Python's Confinated Circus"... ainda assim receio não ser suficientemente non-sense para caracterizar a época 2020/21 cá em casa
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4311
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por CyberX »

Resolvida a parte da lentidão - video sem som que os miúdos já estão a dormir:



Por acaso estou a usar micropython (o original da LEGO) mas o ganho de velocidade não é daí - depois de ver o "código" da demonstração da App percebi que esta controla os motores por tempo/velocidade em vez de posição.

Senti-me um pouco enganado... temporizar movimentos e repeti-los é pouco "robótico". Mas ao fim de alguns testes a precisão até nem é má e o risco de martelar o touchscreen pareceu-me bastante reduzido. Estou ainda assim a usar deteção de motor em esforço, caso alguma coisa corra mal não quero estas canetas a derrapar sobre o touchscreen, mesmo com ponta almofadada podem riscar.

Ver o código da App (blocos "scratch") no telemóvel foi um filme... a aplicação já de si não é nada coerente/intuititva e quando finalmente acedo aos blocos tenho um ecran completamente abafado com meia duzia deles.

Descobrir como fazer em micropython também foi um filme - zero documentação. Felizmente outros já passaram pelo mesmo.

Fica a porção de código que controla o movimento de um braço - 3 batidas:

Código: Selecionar todos

for i in range(3):
    leftArm.run_for_time(LEFT_TIME, speed=-100, stall=True)
    while leftArm.busy(1):
        pass
    leftArm.run_for_time(LEFT_TIME +4 , speed=100, stall=True)
    while leftArm.busy(1):
        pass 
O valor de LEFT_TIME é de 135 ms. É o tempo durante o qual o motor roda, no máximo de velocidade. Ao subir junto-lhe mais 4 ms, um ajuste empírico já que me pareceu que ao fim de umas quantas batidas o braço começa a descer demasiado - é a parte pouco "robótica" da coisa a vir à tona.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13681
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por AVCampos »

E se, para acertar os timings, tiveres um "relógio global" que aos X ms liga o motor numa direcção, aos Y ms liga-o na outra direcção (independentemente de ter chegado ou não ao destino), e por aí fora?

Cada motor seria o seu "instrumentista" numa thread própria com a sua "partitura" formada por uma tabela de instantes do relógio-base e acções para cada instante. Assim é capaz de ser mais fácil de coordenar todos os motores.
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4311
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por CyberX »

Estava a pensar numa coisa assim - definir os beats per minute (135 no caso da App que é uma coisa estranha, costuma ser 120 ou 130) e uma queue de estados por motor, a cada beat mudava-se o estado dos motores.

Mas primeiro tenho de estabilizar isto e mudar para Pybricks... eu não consigo aturar programar às escuras e ter de usar 2 tools diferentes que ocupam exclusivamente o canal RF (uma para aceder ao REPL quando estou a experimentar, outra para enviar o script quando o quero apenas executar). Uma coisa completamente parva que ainda não vi esclarecida é como por um ficheiro no hub para invocar mais tarde a partir do REPL - ter que fazer copy&paste do script todo cada vez que mudo um caracter é completamente insano.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4311
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por CyberX »

Agora com som:
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
JMCampos
Sócio
Sócio
Mensagens: 3264
Registado: 08 jul 2007, 21:26
Localização: Amadora
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por JMCampos »

Vais desculpar-me, mas achei mais engraçada a actuação inicial do Charlie, com os "pratos" da LEGO... O jogo de mãos e a "atitude" estão realmente bem conseguidos.
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4311
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: [WIP] Charlie the LEGO Drummer

Mensagem por CyberX »

Estás desculpado :D

É verdade, é verdade, os artistas de hoje são mais valorizados pela atitude em palco que pelos dotes musicais... o Zé Pedro não sabia 2 acordes e formou uma banda, os Ramones fizeram uma carreira só com 1 acorde e o Zé Cabra nem se fala.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Responder