collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Quadcopter Homemade  (Lida 11588 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Quadcopter Homemade
« em: 02 de Setembro de 2014, 18:48 »
Olá a todos,
Caio imensas vezes neste fórum quando pesquiso coisas para os meus projectos e já por várias vezes me ajudou. Esta é a minha primeira participação neste fórum.

Estou a tentar desenvolver completamente de raiz um quadcopter. Não tenho conhecimentos muito aprofundados de electronónica/programação mas o meu objectivo é mesmo aprender e divertir-me um pouco no processo.

Para o meu projecto estou a usar a seguinte configuração:
- 4 motores 980Kv
- 4 ESC's 20A
- 1 Arduino Uno
- Gyro/Accelerometro MPU6050
- Bateria LIPO 3000mAh
- Estrutura de aluminio

Estado actual, ainda tudo preso por arames: (A helices foram-me entregues á 5 minutos :D )




Estou no entanto com algumas dúvidas relativamente ao sensor MPU6050.
Neste momento estou a conseguir fazer leituras do sensor sem problemas utilizando o esquema partilhado pelo Jeff Rowberg. (https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/Examples/MPU6050_raw/MPU6050_raw.ino)

A minha questão tem a ver com o Gimbal Lock. Não consigo retirar valores de rotação/orientação sem que sofram de Gimbal Lock.
No sketch do Jeff Rowberg ele fornece estes dados em vários foramtos, nomeadamente quaterniões. Mas mesmo convertendo-os para Angulos Euler, continuo a sofrer do mesmo problema.

Já alguém mais alguém teve uma problemática semelhante?

Offline msr

  • Mini Robot
  • *
  • Mensagens: 798
Re: Quadcopter Homemade
« Responder #1 em: 02 de Setembro de 2014, 20:00 »
Sempre que usas euler angles tens o problema do gimbal lock. Isto é, mesmo que obtenhas esses angulos atraves de quaternions. A ideia seria usares sempre os quaternions que são no fundo uma "tecnica" de representar o orientação de objectos, tal como euler angles, mas que nao sofrem de gimbal lock.
O gimbal lock corresponde a uma indeterminação matematica.

Mais que isto tambem nao sei :D

Mas qual é o problema na pratica que tens? Com euler angles ja deverias conseguir ver o quadcopter a voar mais ou menos à vontade.


Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Re: Quadcopter Homemade
« Responder #2 em: 02 de Setembro de 2014, 20:13 »
Na verdade não tenho um problema. Sei que posso preparar o meu quad sem sequer chegar a rotações/orientações de 90º que originem o gimbal lock.
A minha duvida surgiu quando comecei a ver quads a fazerem loopings. Acredito que para essas acrobacias, existam técnicas de para evitar o gimbal lock.

Bem acho melhor esquecer esta parte para já.

Já agora, haverá aqui mais malta a fazer projectos deste tipo totalmente de raiz? Que dificuldades têm encontrado?
Só agora tenho todas as peças para poder começar a programar a sério. Vou partilhando por aqui a evolução. :)

StarRider

  • Visitante
Re: Quadcopter Homemade
« Responder #3 em: 03 de Setembro de 2014, 11:55 »
Já agora, haverá aqui mais malta a fazer projectos deste tipo totalmente de raiz? Que dificuldades têm encontrado?
Só agora tenho todas as peças para poder começar a programar a sério. Vou partilhando por aqui a evolução. :)

Para ser sincero, esse projecto não é "de raiz", usar um arduino com código feito por outros sem perceber muito bem
o que está a acontecer está longe de ser considerado de "raiz",  mas ok.

Em tempos (2009 e penso que o mesmo anda algures aqui no forum) iniciei um projecto verdadeiramente de raiz com um
MCU de 32bits e código proprietário, acabei por abandonar e estive depois envolvido com o OpenPilot.

O maior problema está na integração do IMU e implementação do filtro Kalmam, outro problema era o máximo período do
PWM que os ESC conseguiam responder, que é essencial para uma boa estabilidade. A solução para esta ultima questão
acabou por passar (no OpenPilot) pela utilização de ESC proprietárias com interface I2C en vez da normal PWM. Nos dias
de hoje muitas ESC comerciais conseguem suportar na boa 500Hz.

Mecanicamente, essas fixações dos motores não estão com nada, só esse factor vai servir para uma má performance do
sistema. A primeira rectificação a fazer é mesmo fixar SOLIDAMENTE os motores no frame.

Quais são as principais duvidas em termos de firmware ?

PA

Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Re: Quadcopter Homemade
« Responder #4 em: 03 de Setembro de 2014, 16:51 »
Ok, fui um pouco ambicioso no "completamente de raiz".
Na verdade foi mais na óptica do carpinteiro que quando faz um móvel de raiz, não tem necessariamente de ir ao pinhal cortar árvores.  :D
Mas concordo contigo.

Eu estou a utilizar o IMU MPU6050 que é barato e em parte resolve praticamente as questões do filtro de Kalman uma vez que o próprio já faz internamente cálculos de fusão do gyro com o acelerómetro de forma a garantir valores de output já bastante fiáveis.
Nos meus testes tenho obtido valores muito corretos, verificando apenas um pequeno drift no tempo num dos eixos. No entanto este drift é pequeno e constante, pelo que é simples de corrigir em código.

O facto de usar o sketch do Jeff Rowberg tem a ver com a as características proprietárias do MPU6050 e da pouca informação disponível por parte do fornecedor. Neste caso, o Jeff Rowberg fez um excelente trabalho de engenharia reversa e partilhou o seu trabalho.
A outra razão tem a ver com o meu conhecimento reduzido a este nível, que requer programação de baixo nível, que não domino simplesmente.

Em relação aos ESC's comprei os Emax SimonK 20A que suporta frequencias entre 30Hz - 500Hz.

Na parte mecânica tens toda a razão, mas neste momento está ainda tudo preso por arames apenas para ir estudando e não fazer furos/suportes definitivos que depois tenha de alterar.
O suporte definitivo dos motores vai ser simplesmente assim:


Dito isto, sobre o firmware a minha maior preocupação será mesmo a implementação do PID. Tenho lido algumas coisas, mas nunca fiz nada do género.

Vou colocando updates/dúvidas.
Obrigado pelos vossos comentários.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Quadcopter Homemade
« Responder #5 em: 03 de Setembro de 2014, 17:26 »
Resposta rápida:

O PID é das coisas mais basicas de se implementer em código, que até admira ser tão simples, recomendo a leitura:
http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
Avr fanboy

StarRider

  • Visitante
Re: Quadcopter Homemade
« Responder #6 em: 03 de Setembro de 2014, 18:22 »
Ok, fui um pouco ambicioso no "completamente de raiz".
Na verdade foi mais na óptica do carpinteiro que quando faz um móvel de raiz, não tem necessariamente de ir ao pinhal cortar árvores.  :D
Mas concordo contigo.

Boas Alex,

Nota que não queria retirar o mérito ao teu projecto, antes pelo contrário quero dar os parabéns.



Eu estou a utilizar o IMU MPU6050 que é barato e em parte resolve praticamente as questões do filtro de Kalman uma vez que o próprio já faz internamente cálculos de fusão do gyro com o acelerómetro de forma a garantir valores de output já bastante fiáveis.
Nos meus testes tenho obtido valores muito corretos, verificando apenas um pequeno drift no tempo num dos eixos. No entanto este drift é pequeno e constante, pelo que é simples de corrigir em código.

O facto de usar o sketch do Jeff Rowberg tem a ver com a as características proprietárias do MPU6050 e da pouca informação disponível por parte do fornecedor. Neste caso, o Jeff Rowberg fez um excelente trabalho de engenharia reversa e partilhou o seu trabalho.
A outra razão tem a ver com o meu conhecimento reduzido a este nível, que requer programação de baixo nível, que não domino simplesmente.

Apesar de eu ser inimigo mortal do arduino tenho que reconhecer que na verdade facilita muito as coisas ... e pelo que vejo
no teu caso vais mais alem do que simplesmente a "copia", vejo que estás dentro do assunto, mais uma vez os meus
parabéns.


Eu estou a utilizar o IMU MPU6050 Em relação aos ESC's comprei os Emax SimonK 20A que suporta frequencias entre 30Hz - 500Hz.

Na parte mecânica tens toda a razão, mas neste momento está ainda tudo preso por arames apenas para ir estudando e não fazer furos/suportes definitivos que depois tenha de alterar.
O suporte definitivo dos motores vai ser simplesmente assim:

Dito isto, sobre o firmware a minha maior preocupação será mesmo a implementação do PID. Tenho lido algumas coisas, mas nunca fiz nada do género.

Vou colocando updates/dúvidas.
Obrigado pelos vossos comentários.

Como o senso já disse, o PID pode parecer mais complicado do que realmente é, o truque está em conseguir encontrar os
termos correctos para um determinado sistema, sendo que cada caso é um caso.

Dá também uma vista de olhos aqui:
http://wiki.openpilot.org/display/Doc/Stabilization+Tuning++Multirotor
Isto está implementado para um STM32F4 (usando a toolchain da Keil) mas a ideia é sempre a mesma.

Por coincidência tenho um quad com exactamente o mesmo tipo de frame do teu e os problemas que tive foram
exactamente na resistência da ligação dos motores e na esquadria da frame (faz click nas fotos para tamanho grande).



Para resolver o problema das vibrações e torção da frame tive que reforçar a zona central com uma placa de dural
como podes ver nesta foto:


A fixação dos motores é muito importante, não cometas os mesmos erros que eu cometi fixando os motores assim:


Arranja uma "chapa" de aluminio de uns 4mm de espessura para prender o motor com 4 parafusos e depois prende
a chapa solidamente (parafusos M5) à frame ... acredita que os motores têm uma tendência para "abandonar" a
frame se forem presos como podes ver na minha foto :(

Outra questão é o isolamento da vibração, no OpenPilot usava uns pads de borracha que me foram enviados da Austrália
... mas nunca conseguir encontrar os mesmos na Europa. A minha solução neste caso (antes do OpenPilot) foi isolar a
board da frame recorrendo a isto:


Vai dando noticias.

Abraços,
PA

Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Re: Quadcopter Homemade
« Responder #7 em: 03 de Setembro de 2014, 23:43 »
@StarRider são exactamente esse tipo de dicas que são valiosas para mim nesta fase.

Vou ter isso em conta.

Muito obrigado pelas dicas.

Amanha ja faço um update.

Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Re: Quadcopter Homemade
« Responder #8 em: 16 de Outubro de 2014, 23:38 »
Ok, pessoal já lá vai algum tempo desde a ultima vez que comentei este post, mas como prometido vou partilhar um pouco a experiência que tenho tido na construção do meu quadcopter.

Antes demais, as desculpas pelo longo post.

Ainda não está acabado, mas finalmente estou a começar a ver a luz ao fundo do tunel. Tenho deparado com imensos problemas, mas como o objectivo inicial era aprender, esses problemas estão a desenrolar-se nesse sentido.

No meu ultimo update, andava ás voltas com a programação do arduino e na construção da frame.
Actualmente já tenho um modelo praticamente no seu formato final, faltando-me apenas corrigir alguns pormenores.





-- FRAME --
A nivel de problemas, a frame foi a maior dor de cabeça. O modelo que deixei nas primeiras fotos era demasiado pesado, no entanto estavel e sem grandes vibrações.
Decidi, devido ao peso, construir uma nova frame pensada desde o inicio com um tubo de alumínio mais fino. Esta nova frame ficou muito pior, cheia de vibrações por todo o lado. Foi pior a emenda que o soneto.
Com isto tudo, ja tinha gasto uns bons trocos na construção das duas frames. O facto de não ter muitas ferramentas e o dinheiro já gasto obrigou-me a mudar de estratégia. Decidi comprar uma frame já feita e optei por uma das baratinhas da hobbyking. Quando a recebi e a montei só me apeteceu gritar "PORQUE RAIO NÃO COMPREI UMA FRAME LOGO DE INICIO?!!?!?!!"

É verdade, uma frame já feita poupa imenso trabalho e fica muitooo mais barato. A minha ficou em cerca de 10/15€ e totalmente funcional já com uma das bases com a placa PCB para soldar as ligações dos ESC's e bateria.
A frame que comprei foi esta: https://www.hobbyking.com/hobbyking/store/__57917__Q450_V3_Glass_Fiber_Quadcopter_Frame_450mm_Integrated_PCB_Version_UK_Warehouse_.html

Com esta frame praticamente todos os problemas da estrutura ficaram resolvidos.

1ª Frame:



2ª Frame:






Frame final:



-- CAIXA DE PROTEÇÃO DA ELECTRÓNICA--
Após a parte da frame resolvida, e uma placa de circuito feita em perfboard, achei que estava na hora de arranjar uma solução para a proteger e servir de suporte a alguns leds de sinalização, switch on/off etc.
Esta parte foi relativamente simples. Comprei um pequeno tupperware com as dimensões necessárias, fiz uns pequenos recortes com um dremel e no fim até ficou com bom aspecto, apesar dos recortes feitos a olho.
No fim tive de fazer uns pequenos ajustes porque na verdade a placa é ligeiramente maior que a caixa, mas para já, não é problemático.
De momento a caixa está presa com braçadeiras, mas no final a ideia é usar parafusos.






-- CONFIGURAÇÃO X OU + ? --
Inicialmente, a minha ideia era que em termos de código seria mais simples fazer um quad configurado em "+". Porque? Uhm... Pois nem sei bem.
A verdade é que não investiguei muito sobre este tema e ainda agora não faço ideia quais as vantagens de uma configuração sobre a outra.
Com o passar do tempo, e apercebeno-me que quase todos os quads que via na net usavam a configuração em "X", decidi seguir esta via tb. Não faço ideia se é melhor ou pior. Gostava de ouvir umas opiniões sobre este tema.


-- PLATAFORMA DE TESTES --
Ok, quando cheguei á parte em que tudo já estava mais ou menos composto, chegou a altura de começar a ver como se comportava o bicho. Vi montes de malta na net com o quad preso com um fio e a testar cada eixo individualmente com este sistema. Decidi seguir a mesma abordagem, pendurei-o debaixo da mesa da cozinha e lá vai ele. Mas não gostei do facto de o quad balançar bastante por isso tentei outras alternativas.
Entretanto decidi que devia investir numa plataforma como deve ser, o mais estavel possivel. Fiz um escoço num papel, fui ao AKI, mandei cortar as madeiras e meia hora depois ja tinha uma plataforma de testes como deve ser. :)
Esta plataforma é muito mais estavel e consigo monitorizar muito melhor o comportamento do quadcopter.

Primeira plataforma:
[video]https://www.youtube.com/watch?v=PRNB5fYqQf4&list=UUQ6nMsKHpvHb-5KXWSLG4Xw[/video]

Outra plataforma:


Plataforma final:



-- HÉLICES E MOTORES --
O maior problema que tive até agora, à parte da frame, teve a ver com as hélices e com os motores.
Durante bastante tempo, nunca consegui afinar o PID ao ponto de ficar minimamente estável. Decidi investigar um pouco e percebi que poderiam existir problemas de calibração dos motores e das hélices.
Segui vários videos do youtube sobre como calibrar as hélices e os motores, aplicando pequenos pedaços de fita cola em zonas especificas. Aí fiquei a perceber que realmente tinha alguns problemas de calibração que causavam imensa vibração. Eliminei essa vibração ao máximo que consegui. Para tal usei a aplicação Max Vibrometer (Android) para medir as vibrações geradas.
Mesmo assim, continuava com um problema grave de não conseguir afinar minimamente o PID.
Comecei a desconfiar que um dos motores deveria estar a andar mais devagar que os outros. Lembrei-me de usar entao outra aplicação android, o FrequenSee que basicamente me apresenta o espectro de frequencias que o som dos motores produzia.
Cheguei à conclusão que em todos os motores no mesmo nivel de velocidade, era apresentado um pico exactamente na mesma frequencia, há excepção de um dos motores que estava sempre mais a baixo.
Decidi entao programar esse motor com uma velocidade 1.4x superior aos outros. Aí FINALMENTE comecei a ver qualquer coisa. Já consigo estabilizar minimamente o QUAD! :D

PID sem qualquer efeito devido ao motor avariado:


Max Vibrometer (Android)


FrequenSee(Android)



-- SOFTWARE DE DEBUG --
De forma a conseguir feedback instantaneo do comportamento do quad na plataforma de testes, decidi fazer uma pequena aplicação que me mostrasse em tempo real alguns parametros.
Pretendia ver o output para os motores, outputs do PID e setpoints vs inputs.
Para tal fiz duas pequenas aplicações em Procesing onde a primeira me exibe os gráficos em tempo real e os guarda num ficheiro. A segunda bassicamente permite-me olhar para esses ficheiros e analisa-los posteriormente.
Como se pode ver, depois de corrigido o problema do motor que roda mais lentamente, já começo a ter relações Setpoint/Input mais razoaveis. :)



Quad em modo corta-relva (qdo eu pensava que já tinha o PID mais ou menos encaminhado! LOL):



Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Quadcopter Homemade
« Responder #9 em: 17 de Outubro de 2014, 10:21 »
Muitos parabens pelo projecto :) Dizes que não gostas do metodo das cordas nas pernas da mesma mas se ele estiver bem calibrado deve se manter estavel por isso se calhar devias tentar la novamente.

O ideal era teres alguma telemetria por radio, pelo menos da atitude do quadcopter, pois pelo video para o PID não estar a mandar os mesmos valores para todos os motores é porque a atitude nãod eve estar correta, ou então, calibraste os ESCs?

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Quadcopter Homemade
« Responder #10 em: 17 de Outubro de 2014, 11:17 »
(nunca trabalhei com quads, por isso posso estar a meter água nos comentários a seguir)

Essa plataforma final parece-me que limita demasiado os movimentos do quad: só permite rotação num dos eixos, quando tens que ter em contra a rotação nos 3 eixos e translação nos mesmos. O sistema das cordinhas mantém essa liberdade, apenas restringe a amplitude das mesmas.

Offline Nunito

  • Mini Robot
  • *
  • Mensagens: 923
Re: Quadcopter Homemade
« Responder #11 em: 17 de Outubro de 2014, 17:39 »
AlexMiguel, eu também comecei por afinar os ganhos PID da minha multiwii com esse sistema de o quad estar preso a fios, com receio de ele se espetar contra o tecto  :)
Mas conclui que isso ainda me estava a dificultar mais as afinações, foi então que comecei a afinar pegando nele com a mão, inicialmente sem hélices, cuidado.

Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Re: Quadcopter Homemade
« Responder #12 em: 17 de Outubro de 2014, 18:10 »
Muitos parabens pelo projecto :) Dizes que não gostas do metodo das cordas nas pernas da mesma mas se ele estiver bem calibrado deve se manter estavel por isso se calhar devias tentar la novamente.

O ideal era teres alguma telemetria por radio, pelo menos da atitude do quadcopter, pois pelo video para o PID não estar a mandar os mesmos valores para todos os motores é porque a atitude nãod eve estar correta, ou então, calibraste os ESCs?

Neste momento estou a fazer telemetria via USB. Utilizo uma aplicação que fiz para ver os dados em tempo real, como podes ver na seguinte imagem.



Como dizes, tenho tido problemas com um dos motores que anda mais devagar. Hoje estive a calibrar os ESCs mas ainda não tive tempo de testar. Em relação à plataforma de teste, estou bastante contente com a estrutura de madeira. Mas talvez volte a dar uma nova oportunidade ás pernas da mesa outra vez. :)


(nunca trabalhei com quads, por isso posso estar a meter água nos comentários a seguir)

Essa plataforma final parece-me que limita demasiado os movimentos do quad: só permite rotação num dos eixos, quando tens que ter em contra a rotação nos 3 eixos e translação nos mesmos. O sistema das cordinhas mantém essa liberdade, apenas restringe a amplitude das mesmas.


Em relação aos quads, o que tenho visto é afinação de PID individual por cada eixo. E faz sentido. Se no fim todos os eixos estiverem devidamente calibrados, no fim tudo deverá manter-se estável. Existe até malta que desliga os motores dos eixos nao utilizados (em configuração "+") e utilize apenas 2.

AlexMiguel, eu também comecei por afinar os ganhos PID da minha multiwii com esse sistema de o quad estar preso a fios, com receio de ele se espetar contra o tecto  :)
Mas conclui que isso ainda me estava a dificultar mais as afinações, foi então que comecei a afinar pegando nele com a mão, inicialmente sem hélices, cuidado.

Sobre isso, tenho um belo de um corte num dos dedos que ainda está a sarar. Chama-se a isso ganhar experiência! :D

Offline Electropepper

  • Mini Robot
  • *
  • Mensagens: 116
    • Electropepper
Re: Quadcopter Homemade
« Responder #13 em: 17 de Outubro de 2014, 19:33 »
Muito bom, Parabens  :D
E o que controla isto tudo é apenas um arduino ?

Offline alexmiguel

  • Mini Robot
  • *
  • Mensagens: 20
    • 3D Printer PT
Re: Quadcopter Homemade
« Responder #14 em: 17 de Outubro de 2014, 19:43 »
Muito bom, Parabens  :D
E o que controla isto tudo é apenas um arduino ?

Sim é apenas um arduino Uno. O arduino recebe os dados do controlo remoto (podes ve-lo no primeiro video do post anterior) e os dados do MPU6050 (Gyro + Accelerometro).
Depois de cozinhados estes dados, são enviadas instruções para cada um dos motores através dos ESC's. :)
Em termos conceptuais é bastante simples.  ;)