domingo, 27 de março de 2011

servos

As experiências com os servos revelaram algumas dificuldades imprevistas. Os modelos adquiridos comportam-se de forma diferente:
  • O servo HS-311 (Standard) funciona normalmente, sem qualquer problema.
  • Os restantes (HS-5625MG e HS-7955TG (Digital Torque)) não respondiam inicialmente aos comandos enviados pelo Arduino.
Depois de várias tentativas nas aulas, com a fonte de alimentação, e alguma pesquisa na internet consegui descobrir que a causa não estava no circuito eléctrico, mas sim na programação. Utilizando o método de controlar os servos usando o tempo do sinal (myservo.writeMicroseconds(i);) era possível controlar os motores mas com apenas 90º de amplitude, em vez dos anunciados 180º. Para tentar resolver este problema publiquei uma mensagem no fórum do Arduino. A ajuda foi rápida e eficaz!
Temos agora o controlo total sobre os servos.

domingo, 13 de março de 2011

Experiências com os servos

Depois da chegada dos servos, no dia 28 de Fevereiro, tenho efectuado algumas experiências com os mesmos. Utilizei, em primeiro lugar, o servo menos dispendioso (HS-311) para evitar danos por má utilização nos restantes.
Constatei que existe uma dificuldade na unidade dos ângulos utilizados para controlar os motores: Para efeitos de cálculos trigonométricos são utilizados os radianos, mas para efeitos de controlo dos servos é necessário utilizar graus. A conversão, embora um processo bastante simples, leva a alguma imprecisão que deverá ser corrigida bem como a uma maior lentidão do programa. O Arduino foi no entanto perfeitamente capaz de controlar o servo com precisão quando o ângulo foi introduzido directamente (sem cálculos prévios).
A necessidade de ligar os servos a uma fonte de alimentação externa para funcionarem todos em simultâneo impediu-me de efectuar todos os testes desejados.
Fiz uma montagem do servo HS-311 a uma placa de madeira semelhante às que utilizaremos na nossa segunda maquete. O resultado pode ver-se nas imagens a baixo:

sexta-feira, 25 de fevereiro de 2011

Maquete 2

O nosso grupo decidiu construir uma 2ª maqueta antes da maqueta final. Servirá para testar a forma do nosso braço e iniciar, o mais rapidamente possível, a programação do mesmo. Será também possível com esta maqueta estudar materiais para o revestimento e construir actuadores adequados.

Motores e financiamento da escola

A nossa escola, Escola Secundária Poeta António Aleixo, deliberou patrocinar o nosso projecto em 50% do orçamentado. Este patrocínio será concretizado pela compra dos dois servos mais dispendiosos. Os servos foram já encomendados.

Cinemática inversa

Ao longo das últimas duas semanas tentamos resolver o problema da cinemática inversa. Conseguimos chegar, ontem, a uma solução que é ainda necessário testar. Os cálculos relativos à programação do robot que o tornam capaz de, dadas as coordenadas de um certo ponto no espaço encontram-se disponíveis no nosso site de documentos.

quarta-feira, 9 de fevereiro de 2011

Programção do robot - cinemática directa

O programa do nosso robot já tem a capacidade de descobrir a posição em que se encontra a partir dos ângulos dos servos. O código pode ser encontrado no nosso site documentos.

quarta-feira, 2 de fevereiro de 2011

Colaboração do professor António Aragão

O professor Aragão surpreendeu-nos ontem com uma caixa que incluía um motor (infelizmente de corrente alterna) alguns leds, resistências e transístores, conforme pode ser visto na imagem a baixo.

terça-feira, 1 de fevereiro de 2011

Ligação Nunchuck - Arduino

Cubo 3D em movimento, controlado pelo comando nunchuck
Ligação do comando ao Arduino que envia os dados para o pc.
Conseguimos ligar com sucesso a nossa placa Arduino ao comando nunchuck da consola wii. Utilizámos um pequeno conector feito em papel, cartão, papel de alumínio e fita-cola em que se insere o conector do comando. Ligam-se cada um dos quatro cabos do conector aos pinos conforme esta imagem sugere ou, em alternativa, às portas de comunicação i2c que a placa MEGA 2560 possui. Código utilizado retirado de http://arduino.cc/playground/Main/WiiChuckClass e de http://www.windmeadow.com/node/42
Pormenor da ligação feita com papel, cartão, papel de alumínio e fita-cola

Ligação do Arduino ao computador


domingo, 23 de janeiro de 2011

Calcular a posição do actuador

Para que o braço robótico consiga manipular objectos é determinante que se conheça a sua posição no espaço. Os servos, só por si, apenas respondem ao comando de se colocarem em certo ângulo, tornando a manipulação apenas possível por tentativa erro, em que o utilizador corrige continuamente os ângulos dos servos para obter os resultados desejados. É por isso necessário calcular a posição do actuador a partir destes ângulos (cinemática directa) e, também, o contrário: calcular os ângulos necessários para se chegar a uma dada posição (cinemática inversa).
Para se obter a posição da extremidade do braço utilizam-se eixos coordenados (a três dimensões) solidários com cada parte móvel do braço. Cada ponto de um destes eixos pode ser escrito em relação a um qualquer referencial, utilizando-se uma matriz de transformação que depende dos ângulos conhecidos entre os eixos (a que correspondem os ângulos dos servos) e da distância entre as origens dos eixos (medida de cada troço do braço).
A matéria de matemática envolvida nestes cálculos foge um pouco à que foi até agora leccionada nas aulas, pelo que solicitámos alguma ajuda aos professores de matemática (Paulo Teodoro) e de física (Eugénio Tiago).
Para mais informações acerca da mecânica e controlo de robôs manipuladores ler:
Craig, John J., Introduction to Robotics, Upper Saddle River: Pearson Education International, 2005.

domingo, 16 de janeiro de 2011

Orçamento e Financiamento

Com o novo desenho para o nosso 2º protótipo, principalmente devido à utilização de servos, o custo global do projecto aumentou. Para averiguar a sua viabilidade, já que não podemos concluir um projecto para o qual não temos financiamento suficiente, tornou-se imperativo elaborar um orçamento
Tivemos uma conversa com a senhora professora Maria João Silva da direcção da escola, à qual expusemos algumas dúvidas, em particular a capacidade da escola financiar o projecto. Foi-nos aconselhado que procurássemos patrocinadores para o projecto. É principalmente de questões "burocráticas" que o nosso trabalho de momento se trata. O orçamento está disponível para download no nosso site.

terça-feira, 4 de janeiro de 2011

Controlo com o wii nunchuck

Por sugestão do Fred, parece-me ser uma solução eficaz o controlo dos movimentos do nosso braço com a utilização do nunchuck, através do ARDUINO. Existem várias hipóteses para o controlo do braço, e que podem coexistir, utilizando a mais indicada à situação:

1. Controlo com sensores directamente ligados ao Arduino:
É relativamente fácil, como provei no caso da "fechadura" utilizar sensores do tipo interruptor para controlar os movimentos do ARDUINO. Se utilizássemos vários interruptores, cada um com uma função distinta podemos controlar sem grande dificuldade o movimento do braço.

2. Utilizando o wiinunchuck.

Esta á uma solução idêntica globalmente à anterior. Permite um controlo directo mais eficaz pelo utilizador. Este comando da consola wii tem um acelerómetro incorporado (sente os efeitos das forças que actuam sobre o comando), um mini-joystick, dois botões simples e um pequeno sinal de vibração. Funciona com o ARDUINO e existe online uma grande colecção de informações sobre como o incorporar. Aqui estão alguns exemplos:

http://www.youtube.com/watch?v=uzj0HpxRW4s
http://www.youtube.com/watch?v=Qlukl5fLi7s 

3. Através do computador. Controlar o braço utilizando o computador é também uma possibilidade. Pode permitir uma maior autonomia do robot se utilizarmos, por exemplo, uma câmara (webcam) que indentifique a posição de certos objectos, em princípio identificando-os a partir da sua cor, dando o programa ordem automática ao robot para que agarre o objecto e o coloque onde desejarmos. Utilizando o computador, e através da internet, é possível controlar o braço a partir de qualquer lugar do mundo.

Nova Visita ao IST

Fui mais uma vez amavelmente recebido pelo professor Paulo Jorge Oliveira no Instituto Superior Técnico e por alguns outros professores, técnicos e alunos de bolseiros de doutoramento nos passados dias 28 e 29 de Dezembro.
Começamos por escolher o material a utilizar. Deveria ser ao mesmo tempo barato, fácil de adaptar às nossas necessidades, adequado ao braço, leve e resistente. Foram encontradas duas soluções: o alumínio e o acrílico.
Alumínio em L
Acrílico

Partindo do pressuposto que usaríamos o alumínio, utilizando as peças do catálogo que me forneceram na visita anterior, um da Farnell e outro da RS, desenhámos várias esboços do braço, que fossem o mais possível aos nossos objectivos mas permitisse um bom desempenho do braço e fossem exequíveis por nós. O resultado está compilado no esboço 3D, disponível para download no nosso site. Este modelo tem pelo menos dois defeitos:
- O servo do ombro que faz a rotação que eleva o restante braço deveria estar do lado com maior peso para evitar as torções.
- A barra de suporte que está do lado esquerdo nesta imagem deve ser mais curta.


Os motores utilizados neste projecto são servos. Os mais potentes, na base, poderão ter de custar cerca de 100€ (x2), o do cotovelo cerca de 50€ e o da garra, ainda não desenhada no esquema 3D, cerca de 10€. O custo destes motores faz elevar bastante o orçamento global do projecto face ao previsto, pelo que há a necessidade de encontrar patrocínios, que serão indispensáveis à continuação do desenvolvimento do projecto. Temos ainda de ponderar a utilização de contra-pesos para aproximar o centro de massa de cada segmento a seu eixo de rotação.

segunda-feira, 27 de dezembro de 2010

Experiência com o ARDUINO

Tentei fazer com o arduino uma espécie de "fechadura". O objectivo foi testar a linguagem de programação do arduino, utilizar vários interruptores em simultâneo e um altifalante controlado por eles.
O que fiz foi uma fechadura a que correspondem uma série de chaves. Cada chave tem uma forma diferente do metal condutor. O arduino lê os contactos que se fazem e identifica o utilizador a que corresponde a chave. Caso se trate do utilizador desejado executa uma acção.
Pode ver-se o funcionamento no seguinte vídeo:

segunda-feira, 20 de dezembro de 2010

Visita ao IST

Na passada sexta-feira, desloquei-me a Lisboa, onde realizei duas actividades no âmbito do projecto. Infelizmente, do nosso grupo, apenas eu pude ir a Lisboa neste dia.

I. Dimofel - Loja de componentes electrónicos.
Nesta loja, na Avenida da Liberdade, comprei algumas resistências, transístores, um potenciómetro e um pequeno altifalante. Estas peças serão provavelmente necessárias no nosso protótipo final e também nalgumas das experiências para começar a programar e interagir com o ARDUINO.

II. Instituto Superior Técnico - Instituto de Sistemas e Robótica

Fui recebido pelo Senhor professor Paulo Jorge Oliveira que me deu informações importantes e amavelmente respondeu a algumas perguntas que tinham surgido no desenvolvimento do nosso projecto, mas que para as quais ainda não tínhamos obtido resposta (até por não sabermos a quem perguntar). Este professor introduziu-me também ao departamento onde está o robot CHICO e alguns outros, todos eles fascinantes e muito complexos.

1. O sistema hidráulico. Foi desaconselhado o uso deste sistema por complicar o braço. Normalmente utiliza-se este sistema para obter grandes forças, mas utilizando um complexo sistema de pressão de óleo. O sistema que utilizávamos com seringas é pouco preciso e pouco resistente. O melhor será utiizar um tipo de motores a que chamam servos. Têm geralmente um grau de liberdade de 180º. São bastante fáceis de controlar electronicamente e podem ter grande força quando têm acoplada uma caixa de desmultiplicação (para cada ciclo do eixo do servo o motor executa um maior número de ciclos. A força aplicada no eixo é maior - princípio semelhante ao aplicado nas alavancas).

2. Forma do braço. Se seguirmos as recomendações devemos alterar a forma do nosso braço já que estava pensada para o sistema hidraulico. Foram-me oferecidos dois enormes catálogos com peças, motores, ferramentas, circuitos, componentes electrónicos que aumentam a nossa capacidade de obter aquilo que nos faz verdadeiramente falta. O único inconveniente são os preços - muitas das vezes proíbitivos para os produtos de maior qualidade - mas para aquilo que pretendemos podem encontrar-se algumas peças acessíveis. Os materiais que utilizam na construção dos vários robôs que vi são essencialmente metais e materiais compostos, cujo preço nos impede de os utilizarmos. Assim, e sem outras alternativas de momento, penso ser a madeira o material mais fácil para experimentarmos. Numa fase mais avançada podemos encomendar peças feitas por medida do seguinte site: http://www.shapeways.com/ (é possível enviar os ficheiros de modelos a 3D por nós criados e a impressão é efectuada e enviada por correio!)

3. Controlo. A placa de controlo ARDUINO que haviamos adquirido é adequada ao nosso objectivo. As razões apontadas são semelhantes às que nos levaram a escolhê-la.

4. Robôs: Na minha visita tive a oportunidade de conhecer alguns robôs que utilizavam braços robóticos humanóides. Podem ser observados nos vídeos abaixo. Agradeço desde já a disponibilidade de todos os professores e alunos que me receberam.

Programa Com Ciência de 15.12.10 na RTP2

Neste programa fala-se de alguns robôs, tanto nos primeiros minutos como também depois da entrevista ao Sr. Ministro Mariano Gago.
http://ww1.rtp.pt/programas-rtp/index.php?p_id=26914&c_id=8&dif=tv&idpod=48896

segunda-feira, 6 de dezembro de 2010

Ajuda do professor António Aragão

O professor Aragão visitou hoje a nossa aula de Área Projecto. Explicámos-lhe as nossas ideias para o projecto e ele ajudou-nos, para já, na parte da electrónica (na qual tem bastantes conhecimentos) e prometeu-nos uma ajuda na parte mecânica.
De momento, as nossas maiores dificuldades para pôr o braço a funcionar são:
  1. Controlar um motor, com a placa Arduino, nos dois sentidos.
  2. Fazer a ligação deste motor ao sistema hidráulico.
Resolvidos estes dois obstáculos, será mais fácil continuar com o desenvolvimento mais rápido do projecto.

sábado, 4 de dezembro de 2010

Desenvolvimentos no controlo de motores

O circuito que se mostra no vídeo do último post sofreu duas ligeiras alterações: Foram adicionadas mais duas pilhas de 1,5 V em série (totalizando assim cerca de 6V), fazendo o motor girar mais rápido. Foi também adicionado um diodo em paralelo com o motor para evitar danos na placa arduino.
Este circuito permite controlar a velocidade de um motor, mas apenas num sentido. Para conseguir inverter o sentido são necessários mais alguns componentes adicionais.
Procurei por locais em Portimão onde se vendessem componentes electrónicos. mas não consegui encontrar nenhum. Apenas se vende estes componentes em Lisboa e no Porto.
Agora que já é possível controlar os motores (ou qualquer outro dispositivo que consuma alguma corrente), embora de forma limitada, é necessário fornecer transformar esta energia eléctrica controlada em pressão hidráulica, de modo a fazer mover o braço.
Neste site pode ser encontrado um esquema de um circuito que permite controlar o motor em ambos os sentidos: http://fablab.lowtech.org/w/doku.php/arduino/controllers_and_sensors

quarta-feira, 1 de dezembro de 2010

Motor já funciona com o arduíno!


Pela primeira vez consegui ligar um motor ao arduíno, que o controla! O circuito é bastante simples, mas foi difícil de conceber. Baseei-me nos exemplos que publiquei aqui no site. O vídeo ilustra o resultado que não é muito espectacular, mas pode agora ser adaptado através de programação. O motor liga e desliga a cada segundo que passa.

Informação sobre motores, servos e a sua ligação ao arduino/placa controladora

Aqui estão os resultados de uma pesquisa sobre motores e servos (motores com controlo de rotações e velocidade), em inglês:
http://www.princeton.edu/~mae412/TEXT/NTRAK2002/292-302.pdf
http://www.arduino.cc/playground/Learning/SingleServoExample
http://itp.nyu.edu/physcomp/Tutorials/HighCurrentLoads

Esquemas de circutos no arduino

http://farm1.static.flickr.com/128/331539446_a545f48ca2_o.jpg

Neste esquema ilustra-se como é possível ligar um motor ao arduino, através de um transístor. Não é possível ligar o motor directamente porque cada um dos pinos do arduino não consegue fornecer a quantidade de energia solicitada e destruir-se-ia em segundos.

Outras informações sobre motores ligados ao arduino: http://www.arduino.cc/playground/Main/DCMotorControl

domingo, 28 de novembro de 2010

Arduino - programação e circuitos

Ao longo deste mês tenho tentado aprender a programar e a construir circuitos simples, tendo por base o arduino.
A linguagem de programação utilizada é baseada em C/C++ e é à primeira vista algo assustadora. Um olhar mais atento revela que, com algum esforço e tempo, é até bastante intuitiva.
Já no caso dos circuitos a situação é um pouco diferente. Existem bastantes instruções para as montagens, mas em muitas delas são usados componentes que não possuímos e que são difíciceis de arranjar por perto. Como não tenho grandes conhecimentos na área da electrónica tudo se torna um pouco mais difícil. Existem lojas especializadas em Lisboa que enviam estes componentes por correio.
Mas nem tudo são más notícias. Por aquilo que consegui apurar, para o nosso braço talvez precisemos apenas de alguns transístores, resistências, diodos e motores, para além, claro da placa Arduino e de uma fonte de alimentação. Todos estes componente não são excessivamente caros (à excepção da placa controladora).
À procura de componentes tenho dilacerado um velho leitor de DVD que tenho em casa. O resultado é animador: 3 motores, um fusível, dezenas de condensadores, alguns botões (que não consegui ainda separar da placa) e uma fonte de alimentação (não sei se a mais adequada...).
Estamos de momento a redigir o relatório do primeiro período. Confesso não ser uma das actividades mais aliciantes, mas é antes de tudo algo necessário.
Tenho também feito alguma pesquisa em sites de universidades portuguesas sobre actividades e palestras no âmbito do nosso trabalho, mas até agora o sucesso foi nulo.
Para mais informações sobre o arduino e a sua linguagem de programação consultar: http://www.arduino.cc/en/Reference/HomePage

quarta-feira, 27 de outubro de 2010

Seringas frágeis

No nosso sistema hidráulico pensávamos usar seringas, mas as que usámos deixaram-me com pouca confiança:
Duas seringas que lavámos com água quente ficaram com a borracha que as torna estanque distorcida, ligeiramente expandida, deixando de executar correctamente a sua função. Uma outra seringa perdeu a sua borracha, conforme se mostra na imagem desta mensagem. O seu preço reduzido revelou também duração de utilização reduzida. Com o tempo as seringas que utilizadas passaram a comprimir-se e distender-se com maior dificuldade. Utilizámos lubrificante, o que melhorou substancialmente o seu comportamento, mas que exige, pelo menos da forma como foi por nós aplicado, reposição frequente.

Prototipo 1 -esboço 3D

Esta é uma imagem do ficheiro a 3D disponível para download no nosso site. Esta é uma ideia de como construir o primeiro protótipo.

segunda-feira, 25 de outubro de 2010

O nosso sistema hidráulico

No nosso braço robótico pretendemos usar um sistema hidráulico.
No nosso caso serão usadas seringas de tamanho pequeno e médio ( de 1 a 2,5 mL), que funcionarão como os efectores, de acordo com o esquema.
Em alguns casos poderá ser mais vantajoso a utilização directa dos motores.
Temos ainda alguma dificuldade na ligação do motor à seringa e são necessários alguns componentes electrónicos na ligação motor - placa que ainda não possuímos.

Madeira!

Na construção do nosso primeiro protótipo deparámo-nos com algumas dificuldades na construção utilizando tubos de PVC conforme planeado.
Assim sendo optámos por construí-lo em madeira um material versátil, barato e fácil de manipular (esperemos também que bom para a construção do nosso protótipo). Continuamos a tentar implementar o sistema hidráulico!

domingo, 10 de outubro de 2010

A experimentar o Arduino

Conforme tínhamos decidido na última aula, vou começar a aprender algumas coisas acerca de robótica.
Para tal encomendei a placa arduino mega 2560, que chegou esta sexta-feira.Optei por esta placa conroladora pois para além de ser uma das mais baratas do mercado, não é muito difícil de programar e tem uma vasta documentação online para a aprendizagem.
Aqui estão algumas imagens da placa:

O primeiro projecto que fiz foi bastante simples: fazer piscar o Led (light emission diode) da placa, no pino 13, de 1 em 1 segundo.
Depois liguei a placa a um altifalante e consegui pô-la a tocar uma "música" a partir de um projecto exemplo do arduino:

Para mais informações acerca do arduino: www.arduino.cc/

segunda-feira, 4 de outubro de 2010

Arduíno

Neste site que o Fred me indicou, existem placas controladoras que podemos vir a utilizar na parte da automatização do nosso braço. São simples de trabalhar e baratas...
http://arduino.cc/en/