domingo, 21 de abril de 2013

Atrasado mas está aqui!

Bem... era suposto ter feito este post há uns dias atrás mas mais vale tarde do que nunca (espero)!

No inicio da semana, conforme me foi pedido pelo professor Vitor, fiz um novo modulo de ROS para servir de intermédio entre a aquisição da força (ou outros sensores) e monitorização/comando do joystick háptico. Este modulo, com o nome haptic_force, tem a função de renderizar as forças a serem enviadas para o Phantom conforme os sensores instalados no robô.

Neste momento o único executável activo faz uma simples conversão de cada uma das coordenadas do COP para um vetor de força a 2D representado no Phantom no plano horizontal. A conversão é feita com uma equação da obtida pelo MatLab.


O gráfico acima mostra a recta que foi implementada para a componente y do COP. Os factores das rectas serão actualizados após a calibração das células de carga.

O modulo haptic_force poderá ser aumentado ou refeito conforme se utilizem mais sensores instalados no robô humanóide, como por exemplo sensores inerciais.


Após esta este modulo estar feito e testado, tal como falei no post anterior, estive a mexer com o robô!

(YYEESSS!!!!!)

Estive um dia a ver os trabalhos feitos anteriormente nomeadamente as funções e classes feitas para controlo dos servos. Depois de este estudo decidi pegar em algumas funções do trabalho do Eng. Pedro Cruz e fazer uma classe para controlar os servos do tronco e pernas.

Na quinta-feira recebi um email que dizia que as placas de circuito impresso estavam prontas. Obrigado Sr. Júlio! Aqui estão elas ao lado do Arduino Fio onde vão ser instaladas.



 E agora é esta a minha prioridade: acabar o hardware! Fazer os 109 furos em cada placa e soldar todos os componentes. Depois disso é seguir para a máquina de ensaios uniaxial de tração/compressão para com as placas e amplificadores operacionais calibrar todas as células de carga.

Vamos a isso!

sexta-feira, 12 de abril de 2013

Módulo para o Phantom e Otimização


Esta semana estive novamente à espera de coisas diversas, logo faço código! Neste caso particular estive à volta dos módulos de phantom_control e pressure_cells.

No módulo phantom_control, foi criada uma estrutura que tem todos os principais campos de estado do joystick (posição, ângulos das juntas, estado dos botões, etc). Esta estrutura é depois colocada numa mensagem ROS que neste momento, apenas com este módulo a correr, tem uma frequência de publicação de aproximadamente 990 Hz. É esperado que quando estiverem mais módulos a correr ao mesmo tempo, esta referencia desça. Devido à incapacidade de os drivers de Linux para ter dois dispositivos Fire-Wire vamos ter de usar dois PC's, assim é possível reduzir efeito de baixa de frequência.

Além disso está também à espera de uma mensagem de "Força" para actualizar o force feedback do Phantom. Esta mensagem é um vector de força XYZ.

O módulo pressure_cells foi remexido e optimizado. Tem agora dois parâmetros ROS para no ficheiro de launch definir se vamos publicar as mensagens de virtualização para o RViz e para definir se os pés estão ao mesmo nível. O primeiro parâmetro serve para optimizar a velocidade de processamento deste módulo; o segundo é para as experiências praticas de validação onde temos ambos os pés ao mesmo nível e queremos calcular o centro de pressão geral com as medições de todas as células de carga montadas no robô humanóide. As mensagens dos centros de pressão foram mudadas, agora são apenas um valor de X e Y e existem 3 mensagens a serem publicadas: uma para cada pé (/cop_left e /cop_rigth) e uma para o conjunto (/cop_left_right). As duas primeiras estão a ser publicadas a cerca de 1280 Hz e a ultima à volta de 1030 Hz.

Para a semana, se não houver hardware continuo com o código desta vez no módulo humanoid_control e comunicar com os servomotores.

sábado, 6 de abril de 2013

Conversor chega e descobri ROS com OpenHaptics


No inicio desta semana chegou o conversor/variador para a fonte de bancada. "Está feito! Agora podemos trabalhar com o robô sem ter-mos medo de que as baterias não rebentei na nossa mão!" pensamos nós.



Não! O conversor vem por defeito com o output para 5.1V, e nós precisamos de algo entre os 6 e 7.4 Volts.... Para mudar é necessário um programador!!!! Eu sei que isto é equipamento de primeira para modelismo todo XPTO mas vá lá! Bem... fui a uns forums pesquisar e falar com umas pessoas e neste momento não tenho muitas hipóteses... Comprar um (não me parece porque é só para uma vez) ou arranjar alguém que me faça isso. Se alguém que não os meus orientadores e colegas lerem isto e poderem ajudar avisem!

Visto que as placas impressas ainda não vieram comecei a mexer com o joystic Phantom e é muito fixe! :D


Tive alguns problemas para resolver de maneira a compilar os exemplos da biblioteca OpenHaptics mas agora a maioria funciona (alguns que utilizam o GLUTMesa dão problemas). Depois de experimentar e modificar alguns, resolvi fazer um modulo de ROS para a monotorização e comando do joystic. Mas antes procurei se alguém já tinha feito isto. E aqui está : http://www.ros.org/wiki/phantom_omni.

Após ver experimentar o código destes amigalhaços, percebi que apesar de não conseguir usar o que eles fizeram diretamente. No entanto, estrutura do programa exemplo e a maneira que eles usam para juntar a plataforma de programação do ROS com a biblioteca OpenHaptics vai me dar muito jeito para estruturar o modulo que vou agora fazer.