Modular Pythonic Python

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

Modular Pythonic Python

Mensagem por CyberX »

Este é um projecto que comecei fisicamente no início do Grande Confinamento mas que esteve parado vários anos.

Imagem

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):

Imagem

Imagem

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:
Imagem

O programa de cada módulo (neste caso o módulo que reaje ao número "1"):
Imagem
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15888
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Modular Pythonic Python

Mensagem por Conchas »

Tenho ideia que se move um módulo de cada vez e assim é dificil fazer progredir no terreno.
Talvez com os módulos a moverem-se em simultâneo...
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

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

Oeiras :brincka: 2024, 25-28 de Abril
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4314
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Modular Pythonic Python

Mensagem por CyberX »

Tb acho isso mas era necessário ter mais módulos para poder ter mais a moverem-se em simultâneo. Com 4 por exemplo podia enviar uma sequência "2", "1", "2"... e metade dos módulos dobravam-se para um lado enquanto a outra metade dobrava-se para o outro.

Este tipo aqui, com Arduino e servos RC comuns, usou 12 módulos e implementou o movimento fazendo percorrer uma onda sinusoidal ao longo do corpo. Mas tb usou um par de rodinhas LEGO em cada módulo para reduzir o atrito:

Imagem
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4314
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Modular Pythonic Python

Mensagem por CyberX »

A cobra cresceu, tem agora 6 módulos mais a cabeça:



reforcei as juntas e diminuí um pouco a velocidade de rotação dos motores de modo a fazer movimentos menos bruscos e assim esforçar menos as juntas pelo que agora não se desfazem nos primeiros 15 segundos (aguentam pelo menos 2 minutos). Desvantagem: muito mais lento.

também alterei um pouco o movimento de modo que em "modo cobra" não tem já a tendência que tinha antes de curvar para a direita. A alteração não tem impacto quando em "modo lagarta".

Cada módulo tem 26.5L de comprimento, 16L de largura e 9L de altura. A cabeça e a cauda (que é puramente decorativa) têm 9L cada. Com 6 módulos a cobra tem já 177L de comprimento (cerca de 142 cm). Para estar em condições de levar à Oeiras BRInCKa 2024 faltam ainda alguns painéis amarelos no 5º e 6º módulo para o corpo ficar homogéneo e se tiver oportunidade vou tentar embelezar a cabeça.

7 hubs significam 42 pilhas AAA... vai ser tramado recarregar tanta pilha em plena exposição.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4314
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Modular Pythonic Python

Mensagem por CyberX »

A cobra desenvolveu uma pele e ganhou uma nova cabeça e nova cauda:



A menos que arranje alguma ideia para a cabeça não devo mexer mais, agora é tentar melhor o movimento o que vai requer alguma experimentação com a programação e muitas horas a recarregar pilhas.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13683
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: Modular Pythonic Python

Mensagem por AVCampos »

Agora só falta fazer a parte mais fácil: sempre que a pitão colide com um objecto que não uma parede ou ela própria, esse objecto desaparece e ela ganha mais um segmento. ;D
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4314
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Modular Pythonic Python

Mensagem por CyberX »

AVCampos Escreveu: 22 mar 2024, 18:11 Agora só falta fazer a parte mais fácil: sempre que a pitão colide com um objecto que não uma parede ou ela própria, esse objecto desaparece e ela ganha mais um segmento. ;D
bora lá - se fizeres um Nokia à escala eu faço essa tal de parte mais fácil
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
AVCampos
Sócio
Sócio
Mensagens: 13683
Registado: 27 fev 2007, 19:26
Localização: Barreiro
Contacto:

Re: Modular Pythonic Python

Mensagem por AVCampos »

Não, obrigado: eu só colecciono Siemens. :D
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4314
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Modular Pythonic Python

Mensagem por CyberX »

Pequenas alterações:
- aumentei um pouco a cabeça, estava a "chocalhar" violentamente
- segui a sugestão do @AVCampos e mandei vir dois olhos Dreamzz
- acrescentei uma língua
- coloquei 4 "stud boats" em cada módulo para reduzir um pouco o atrito

a pitão tem agora 220.5 unidades de comprimento (cerca de 176 cm)

Imagem

Imagem
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Responder