
A ideia era fazer um robot modular que se deslocasse de forma semelhante a uma cobra. Com as peças que tinha à mão consegui fazer 3 módulos o que já era suficiente para um comportamento "ziguezagueante" mas a ideia seria depois de estabilizar uma primeira prova de conceito fazer crescer o robot juntando mais módulos.
Infelizmente na altura não havia forma fácil de controlar este robot, precisei de um computador com linux e uma configuração complexa que executava vários scripts de python em simultâneo para controlar cada módulo do robot de forma independente, o que nem era prático nem me permitia crescer o robot no futuro [o meu computador da altura já estava perto do limite com tantos scripts e conexões Bluetooth Low Energy simultâneas].
Mas agora que o Projecto Pybricks já suporta a comunicação entre hubs LEGO de uma forma simples limpei o pó ao robot e pu-lo finalmente a funcionar de forma totalmente autónoma, juntando apenas uma "cabeça" à cobra para controlar os módulos no lugar do computador.
O robot tem assim uma "cabeça" (um hub do tipo City como o usado nos comboios) e um corpo constituído por n "módulos" (por agora apenas 3, assentes no hub do tipo Move como o usado no BOOST):


cada módulo liga-se ao seguinte por intermédio de uma "junta" que tira partido dos dois motores internos do Move Hub para poder fazer movimentos com dois graus de liberdade, embora até agora não tenha sabido dar uso a mais do que um (ou seja, como podem ver no vídeo, apenas faço o robot ziguezaguear segundo um eixo).
A junta em si é neste momento o ponto fraco deste robot, tenho de lhe dedicar mais atenção de modo a ter algo sólido que suporte os movimentos de torção sem se desmontar. Quando/se conseguir esse objectivo então aumento o comprimento do robot adicionando mais módulos já que a forma como o robot está programado permite um número indefenido de módulos, limitado apenas pelas especificidades da norma Bluetooth. Provavelmente algumas dezenas mas para mim ter uma cobra com 6 módulos já seria razoável sem estourar demasiado as finanças (escolhi justamente o Move Hub por ser de longe o mais barato de todos no Bricklink e como já tem dois motores internos ainda me reduzir mais os custos).
A programação é relativamente simples:
- a "cabeça" faz uso da nova funcionalidade de "broadcasting" do Pybricks para enviar constantemente uma sequência de números ("3", "2", "1", "3"...) num canal Bluetooth
- todos os módulos estão à escuta nesse mesmo canal à espera do número que lhes corresponde; quando ele ocorre, acionam os motores de modo a arquear a junta com o módulo seguinte (ou, no caso do primeiro módulo, a junta com a cabeça)
O programa da cabeça:
O programa de cada módulo (neste caso o módulo que reaje ao número "1"):




