[WIP] Charlie the LEGO Drummer
[WIP] Charlie the LEGO Drummer
Pois como tinha dito noutro sítio este fim de semana desmontei o BLAST (51515 MINDSTORMS Robot Inventor) para poder montar o Charlie
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.
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?»
«De génio, criança e louco... porquê só 1 pouco?»
Re: [WIP] Charlie the LEGO Drummer
O baterista está muito engraçado
Guilherme Santos
www.historybricks.com
www.historybricks.com
Re: [WIP] Charlie the LEGO Drummer
Já tinhas um instrumento de cordas, um de sopro e outro de percussão... não falta muito para termos uns Kraftwerk tugas.
Re: [WIP] Charlie the LEGO Drummer
É 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
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?»
«De génio, criança e louco... porquê só 1 pouco?»
Re: [WIP] Charlie the LEGO Drummer
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:
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.
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
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
«De génio, criança e louco... porquê só 1 pouco?»
Re: [WIP] Charlie the LEGO Drummer
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.
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.
Re: [WIP] Charlie the LEGO Drummer
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.
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?»
«De génio, criança e louco... porquê só 1 pouco?»
Re: [WIP] Charlie the LEGO Drummer
Agora com som:
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
«De génio, criança e louco... porquê só 1 pouco?»
Re: [WIP] Charlie the LEGO Drummer
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.
Re: [WIP] Charlie the LEGO Drummer
Estás desculpado
É 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.
É 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?»
«De génio, criança e louco... porquê só 1 pouco?»