quinta-feira, 11 de abril de 2013

Experiência Sensores no Fanuc

Durante os últimos dias tenho-me ocupado da experiência a realizar no Fanuc.

A tarefa não tem sido propriamente fácil. Isto porque na indecisão de como fazer os programas para os movimentos do braço robótico têm surgido alguns problemas. Existem essencialmente já disponíveis 2 formas de fazer os programas destes movimentos:

- Programação direta na consola do Fanuc.
- Programação com recurso a uma interface RobCOMM que permite por TCP/IP executar movimentos no braço robótico.

Neste momento o recurso ao RobCOMM é muito limitado, uma vez que não permite algumas funções.

A alternativa escolhida foi a programação por via da consola do Fanuc.

MAS... !!!!!!

Ainda existe um problema...

Através do módulo ROS consigo vizualizar a resposta dos sensores, contudo, e uma vez que preciso saber a diferença entre o resultado dos sensores e o movimento que estes estão a ter, necessito ainda da curva da ponta do Fanuc.

Este é o novo entrave... é onde tenho q focar a minha atenção. Caso contrário, tenho a resposta dos sensores mas não disponho da informação do movimento original e sem isso não é possível fazer o estudo da resposta dos sensores.

Como ainda não tinha mostrado, apresento aqui algumas imagens do sensor RAZOR montado no suporte com este montado também no braço robótico Fanuc.



Durante alguns testes que tenho vindo a realizar, tenho observado já que a potência dos servomotores do Fanuc são tais que mesmo a 10cm de distância ainda existe muita distorção do campo magnético medido pelo magnetómetro. Por isso precisarei de uma haste do suporte maior. Talvez com um comprimento na ordem dos 15cm... em vez dos seus atuais 7cm.

Suporte sensores

Como numas das publicações anteriores tinha referido, desta vez trago imagens do suporte que vai ser utilizado nas experiências a realizar com os sensores aplicados no braço robótico da Fanuc.

Este suporte é composto por 3 componentes. Uma em alumínio que prende ao end-effector (a peça mais à direita nas imagens do suporte), uma haste em nylon que cria uma certa distância entre os sensores e os servomotores do braço robótico (a peça do meio) e por fim, (a peça mais à esquerda nas imagens do suporte) em nylon também, a peça onde os sensores são presos.



Todo o suporte foi maquinado por mim.

quinta-feira, 4 de abril de 2013

Rede Sensores - Multiplexer

O sensor que mais interesse despertou para a rede inercial foi o minIMU-v2 Pololu uma vez que com ele se estabelecia uma comunicação por I2C, uma comunicação que requer apenas 1 par de condutores e capaz de estabelecer facilmente redes uma vez que na comunicação os slaves devem ter endereços distintos. Ora qual não foi a minha surpresa quando descobri que estes sensores não dispunham de endereços configuráveis e estão sim pré-estabelecidos de fábrica.

Sendo assim, a facilidade da montagem de rede por I2C desapareceu, forçando a novas abordagens.

A nova ideia de estabelecer uma rede, sem que para isso seja necessário um arduino UNO por cada sensor, passa por utilizar um Multiplexer que agulha a comunicação Master/Slave Entre o arduino e um sensor de cada vez.

Já testei esta nova abordagem com uma rede de 2 sensores ligados a um arduino UNO por meio de um Multiplexer, no entanto pareceu-me que apenas estaria a ser feita a leitura de apenas um sensor. É possível que o código possa ter erros ou que algum cabo pudesse estar solto. Para tirar isto a limpo, será preciso fazer mais testes.

Em alternativa, existe ainda um tipo de Multiplexer próprio para comunicações I2C. A diferença entre os 2 reside no facto de o primeiro multiplexer apenas ter um canal que vai agulhando entre várias possibilidades, 1 para 8 no caso do multiplexer usado, e o segundo já agulha pares de canais, ou seja, em vez de mudar apenas entre pinos SDA (pino de transferência de dados em I2C), também comuta entre pinos SCL (pino de sincronismo entre dispositivos) em simultâneo garantindo a continuidade da comunicação.

Suporte para Experiência de Sensores no Fanuc

Por forma a avaliar o desempenho e rigor das medições feitas pelos sensore (depois de calibrados),  está planeada uma experiência na qual se colocam os sensores num suporte que está fixo ao braço robótico 6DOF da FANUC existente no LAR e se executam movimentos com o mesmo por forma a avaliar a resposta dos sensores aos movimentos do braço robótico. Pensamos que assim será mais fácil a apreciação destes para prosseguir com a rede constituida pelos sensores.

Após a realização do projeto do suporte, deparei-me com a ausência do responsável da oficina do departamento. Pus então mãos à obra mas demorou tempo a mais que o previsto, uma vez que nem sempre tinha máquinas disponíveis.

Contudo, passado este tempo acabei o suporte!

Agora falta ter os sensores prontos a testar, o que não está a ser tarefa fácil... pelo menos o sensor pololu que não estou a conseguir calibrar decentemente seja por que algoritmo for!

Futuramente adicionarei fotos do suporte realizado.

MinIMU - v2 Problema

Passei alguns dias a tentar fazer com que este sensor funcionasse com o algorítmo adaptado do sensor Razor. Depois de pensar que tinha conseguido a fusão do sensor e algoritmo, não consegui obter uma boa calibração.

Esta união apresenta atraso na resposta e más medições. Um fracasso portanto.

Mesmo com o algoritmo disponibilizado pelo site, ainda não consegui obter bons valores para a orientação deste sensor.

terça-feira, 2 de abril de 2013

MinIMU

Uma vez que o algoritmo utilizado pelo sensor Razor tem um melhor método de calibração, pensei em utilizar o esse algoritmo no sensor MinIMU-v2 Pololu.

Utilizando puramente o primeiro algorítmo revelou-se um pequeno desafio para mim, uma vez que não consegui estabelecer bem a comunicação com o sensor, por isso, para contornar o problema recorri às bibliotecas disponibilizadas no site do MinIMU para comunicar com o sensor e utilizei-as no algoritmo do sensor Razor. Assim, consegui utilizar o mesmo algoritmo para os 2 sensores. 

Para além desse algoritmo ter melhores métodos de calibração, esta metodologia vai permitir ainda a comparação mais direta entre sensores.

Utilização e Calibração dos Sensores

Para que as leituras dos sensores possam ser utilizadas, estes necessitam de calibração. Esta necessidade deve-se às pequenas variações por exemplo na constante gravitacional no caso do acelerómetro e no campo magnético que pode ser afetado por materiais ferromagnéticos, circuitos eléctricos, entre outros.

Como já expliquei na publicação anterior, estes sensores serão utilizados com a implementação do algoritmo que calcula a matriz DCM. Para isso, existem já exemplos online que podem ser utilizados e adaptados em caso de ser necessário.

Para o IMU Razor existe um tutorial muito simples e completo que explica como utilizar este sensor. Para ver esse tutorial, clique aqui.

Este tutorial, além de fornecer o algoritmo para a aplicação da matriz DCM, ainda contém algoritmos de calibração que se têm mostrado promissores nos meus pequenos testes.

Para o MinIMU-v2 Pololu, apenas consegui encontrar a página indicada no site do sensor. Para a visualizar clique aqui. Este algitmo exemplo é igual ao do sensor anterior, contudo, a calibração por este disponibilizada não aparenta ser tão robusta.

Desde já, no que toca a comparações entre os 2 sensores, o Razor aparenta ser mais robusto, já possui microcontrolador integrado na sua placa, contudo, é maior e comunica por RS232. O facto da comunicação ser por RS232 não é prejudicial, contudo comparando com a comunicação do sensor MinIMU-v2 Pololu, este segundo requer comunicação por I2C, o que mais facilmente permitiria uma instalação da rede de sensores muito mais fácil. Este segundo sensor além de comunicar por I2C é muito mais pequeno, contudo não vem apetrexado de microcontrolador, o que significa que precisa de um arduino (neste caso utilizo o UNO) para poder comunicar com o sensor.

Sensores

Com o objetivo de conseguir com que o humanoide se mantenha em equilíbrio bípede, na realização deste projeto, será implementada uma rede de sensores inercias (IMU - Inertial Measurement Unit) no mesmo por forma a obter informação sobre a sua estabilidade em situação de equilíbrio.

Esta metodologia foi pensada tendo como ponto de inspiração o aparelho vestibular humano, sendo o maior responsável pelo nosso equilíbrio enquanto seres bípedes.

Neste caso, os sensores inerciais, os quais vou referir mais adiante, servirão como sistema de aquisição da orientação do robô ou seu centro de massa por forma a possibilitar a identificação de uma situação de instabilidade, de forma a poder corrigi-la a tempo de prevenir a queda do humanoide.

Para a rede inercial a instalar no humanoide, estão disponíveis dois modelos de sensores inerciais:





Pololu MinIMU-v2 9DOF








Razor IMU 9 DOF









Ambos os sensores são constituidos por acelerómetro, giroscópio e magnetómetro, perfazendo um total de 9 graus de liberdade.

Associado a cada sensor, está um algoritmo que vai permitir saber a sua orientação no espaço (ângulos de Euler). Este algoritmo apenas utiliza os dados vindos de cada sensor para determinar o matriz de rotação utilizada para converter nos ângulos de Euler (matriz também conhecida por DCM - Direction Cosine Matrix).


Os sensores são de 9dof , contudo o DCM funciona também com 6dof, ou seja, apenas com o acelerómetro e giroscópio. mas uma vez que por vezes o giroscópio fica com drift , o magnetómetro entra no sistema para corrigir esse problema, caso se verifique. Contudo , e porque nem tudo é um mar de rosas, o magnetómetro em ambientes onde o campo magnético não seja constante, apresenta alteração dos valores por este recebidos, podendo dar origem a erros.

Dada a sensibilidade deste tipo de sensores, ainda será ponderada e avaliada a necessidade da aplicação de um filtro de Kalman por forma a estabilizar as leituras dos sensores.

Robô Humanoide do PHUA

- 25 Graus de Liberdade ;

- 65 cm Altura;

- 6 kg;

- Estrutura em alumínio;

- Atuação Ativa
     - Servomotores HITEC;

- Atuação Passiva
     - Elásticos.






Este é o módulo do PHUA, que depois de outros módulos, arrancou com este último em 2009.

De momento, o objetivo dos trabalhos que se desenvolvem em torno deste humanoide centra-se em atribuir-lhe a capacidade de se equilibrar.