Plataforma de Stewart com Pybricks

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

Plataforma de Stewart com Pybricks

Mensagem por CyberX »

Quando recebi o helicóptero de salvamento 42145 depois da exposição de Viana veio-me à ideia integrá-lo num género de simulador de voo.

Uma forma de fazer isto, em controlo e automação, é usar uma Plataforma de Stewart que tira partido de 6 actuadores lineares para conseguir controlar os seis graus de liberdade de um objecto livre (x, y, z, pitch, roll, yaw)

Imagem

Enquanto pesquisava descobri que já havia alguns malucos que tinham feito isto com LEGO Technic, sendo o mais recente (e a meu ver mais bem conseguido) o WayneG, com duas versões que submeteu sem sucesso ao LEGO Ideas e disponibilizou no Rebrickable.

A versão mais recente do WayneG usa os sensores IMU internos de 2 hubs Technic (Control+) para implementar 2 joysticks - um para controlar x,y e z e o outro para controlar pitch, roll e yaw. Mas o tipo é completamente chanfrado e implementou o "código" todo na App Powered Up da LEGO, sã só 25 páginas de blocos e mais blocos para implementar a máquina bastante complexa necessária para o controlo.

Nas palavras do próprio autor: "⚠️ Considerable PoweredUp coding efforts, ONLY for crazy ones ;-)"

Além disso ele documentou a coisa para uma versão da App que já não existe, a LEGO (obrigadinho) mudou radicalmente o aspecto dos blocos (e por vezes a funcionalidade) por isso se já era um frete implementar aquilo na versão anterior, ainda é preciso entender os blocos todos (que a LEGO nunca documentou com a desculpa de ser tudo intuitivo) e entender a que blocos correspondem na nova versão da App (idem, aspas).

Por isso decidi fazer isto com Pybricks. Python é python e não muda e para calcular uma raiz quadrada de uma soma não é preciso ligar 500 blocos, [quase que] basta escrever a fórmula.

Só que há uma diferença na abordagem entre o Pybricks e a LEGO que dá algum trabalho: a App Powered Up é que controla tudo pelo que as operações são feitas no telemóvel, que lê os valores dos 2 hubs (sensor IMU, posições dos motores) e depois controla os motores; já com Pybricks é o hub que faz tudo pelo que teria de por ambos a comunicar entre si os valores dos sensores IMU e das posições dos motores e coordenarem-se no controlo dos motores.

Demasiado trabalho.

Como são 6 motores e tenho um hub Robot Inventor disponível que justamente permite ligar 6 motores, passei os motores para o hub RI que passa a ser o Master disto tudo, recebendo dos hubs Technic Control+ apenas a parte dos joysticks.

Não é que reduza a matemática, que continua a ser a mesma e bem lixada para quem não mexe em matrizes desde a faculdade por isso por agora apenas consigo controlar a altitude (z) que é bastante simples porque basta fazer todos os 6 motores rodar o mesmo número de rotações em simultâneo.



Até a Oeiras BRInCKa da próxima semana vou tentar implementar mais alguma das variáveis. Mas pelo menos assim já tenho algo para mostrar.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15905
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Plataforma de Stewart com Pybricks

Mensagem por Conchas »

Uma coisa que sempre desejei fazer foi trabalhar com inverse cinematics (para uma plataforma stewart como esta, ou um braço robótico).
Foi uma matéria que nunca estudei na faculdade e com que nunca trabalhei, e não será pera doce.

Teria de fazer alguns cursos e como tal com tempo que tenho atualmente, não deverá ser para os anos mais próximos. :(
Quem sabe um dia!

Se souberem de bouns livros práticos ou cursos online de robótica em geral e inverse cinematics em particular, sou todo houvidos
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: 4335
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Plataforma de Stewart com Pybricks

Mensagem por CyberX »

também não tenho tempo para avançar nisso como gostaria, no verão até comprei um kit Arduino de um braço 4DOF que tem código no github que se pode analisar, a ideia era converter para python e adaptar a um braço em LEGO como o que levei a Viana... mas depois o tico queimou.

há várias frameworks disponíveis que já incluem a matemática toda e "só" é necessário parametrizar. Não tenho investido muito nisso por isso não tenho noção das mais generalizadas mas aponto esta só porque mete python e PUMA (um robot ou uma gama de robots que existia no Técnico quando estava a terminar o curso)

https://github.com/JamesPCVR/Inverse-Ki ... GUI-Python

Imagem

os conceitos não são muito complexos, são dados em menos de uma dúzia de aulas nas cadeiras de Controlo. É feito um modelo do manipulador, que corresponde a um sistema de equações que representam o movimento dos vários subcomponentes do braço (ombro, cotovelo, pulso...) consoate o ângulo de rotação aplicado em cada junta. É costume usarem-se matrizes que se vão multiplando sucessivamente até obter uma final que no caso de um 6DOF é bastante grande, com os vários parâmetros (comprimentos de cada troço e mais algumas constantes relacionadas com os motores). Isso é a cinemática directa. Depois para a cinemática inversa praticamente basta inverter a matriz (o que felizmente hoje em dia já se faz com programas, na altura perdiamos um par de dias a fazer contas espalhadas por várias páginas).

https://www.rosroboticslearning.com/forward-kinematics
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15905
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Plataforma de Stewart com Pybricks

Mensagem por Conchas »

https://www.rosroboticslearning.com/inverse-kinematics

Os settings desssa framework acima, naõ devem ser aplicáveis a plataformas stewart.
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: 4335
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Plataforma de Stewart com Pybricks

Mensagem por CyberX »

Conchas Escreveu: 20 abr 2024, 21:20 https://www.rosroboticslearning.com/inverse-kinematics

Os settings desssa framework acima, naõ devem ser aplicáveis a plataformas stewart.
nope; como tu tb falaste em braços robóticos peguei por aí;

tb há pplataformas stewart no github, mas menos. Experimenta esta aqui:
https://github.com/Yeok-c/Stewart_Py

mas se falares com o Nard qqcoisa dos ROBOTMAK3RS ele pode explicar-te o modelo para uma plataforma Stewart, parece que está a concluir uma e conhecendo a peça deve ter um modelo extremamente desenvolvido
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4335
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Plataforma de Stewart com Pybricks

Mensagem por CyberX »

Correu melhor do que estava à espera, consegui implementar os 6 graus de liberdade a tempo de Oeiras:



No video começo por calibrar os 2 joysticks (depois de ligar, move-se cada um deles nas 3 direções para determinar os valores extremos, depois deixa-se repousar uns segundos para determinar o valor neutro) e depois inicializo a plataforma contraindo os 6 actuadores lineares para determinar o mínimo e deslocando-a depois para o valor médio que passa a ser a posição quando os 2 joysticks estão na posição neutra (soltos).

Tive de reduzir um bocado os valores extremos porque com o helicóptero em cima a plataforma acabava tombando - ainda assim acho que vou jogar pelo seguro e para Oeiras monto a plataforma em cima de uma base Technic para lhe dar maior estabilidade.

Os joysticks são bastante sensíveis, sobretudo (ainda não percebi porquê) o da esquerda usado para os ângulos (pitch, roll, yaw). Ambos tendem a "derivar" os valores neutros por isso de vez em quando é necessário reiniciá-los para recalibrar.

Algumas fotos:

Imagem

Imagem

Imagem
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15905
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Plataforma de Stewart com Pybricks

Mensagem por Conchas »

Os IUM tendem a derivar um pouco imagino eu!

Por outro lado tenho de ver isso melhor ao vivo, para ver se entendo as restrições mecânicas que os seis atuadores causam entre si, e mesmo a liberdade das articulações de cada um deles.
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
Responder