Plataforma de Stewart com Pybricks
Plataforma de Stewart com Pybricks
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)
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.
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)
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?»
«De génio, criança e louco... porquê só 1 pouco?»
- Conchas
- Direcção
- Mensagens: 15918
- Registado: 26 jan 2007, 15:20
- Localização: Feijó (Almada)
- Contacto:
Re: Plataforma de Stewart com Pybricks
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
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
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
Re: Plataforma de Stewart com Pybricks
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
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
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
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?»
«De génio, criança e louco... porquê só 1 pouco?»
- Conchas
- Direcção
- Mensagens: 15918
- Registado: 26 jan 2007, 15:20
- Localização: Feijó (Almada)
- Contacto:
Re: Plataforma de Stewart com Pybricks
https://www.rosroboticslearning.com/inverse-kinematics
Os settings desssa framework acima, naõ devem ser aplicáveis a plataformas stewart.
Os settings desssa framework acima, naõ devem ser aplicáveis a plataformas stewart.
FCorreia
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
Re: Plataforma de Stewart com Pybricks
nope; como tu tb falaste em braços robóticos peguei por aí;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.
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?»
«De génio, criança e louco... porquê só 1 pouco?»
Re: Plataforma de Stewart com Pybricks
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:
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:
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
«De génio, criança e louco... porquê só 1 pouco?»
- Conchas
- Direcção
- Mensagens: 15918
- Registado: 26 jan 2007, 15:20
- Localização: Feijó (Almada)
- Contacto:
Re: Plataforma de Stewart com Pybricks
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.
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
LEGO Fan, a lifelong experience - Play Well (Leg Godt)
#EUusoOmeuLUGBULKnosEVENTOSdaPLUG
We are working to build a better
LEGO Fan, a lifelong experience - Play Well (Leg Godt)