Todos os posts de ricardoteix

Robôs no V-REP

V-REP: Plataforma Virtual para Experimentos com Robôs

Introdução

A robótica amadora tem ganhado cada vez mais notoriedade devido a simplificação dos processos de produção de peças mecânicas, obtenção de módulos sensores e implementação da placa de controle .

A produção de peças mecânicas para este propósito foi alavancada pela popularização das impressoras 3D, que conseguem imprimir, a partir da modelagem tridimensional em computador, peças para montagem de braços robóticos, engrenagens e entre diversas outras possibilidades.

A parte eletrônica, que foi um gargalo durante décadas, foi suavizada com uso da plataforma Arduino (2015) pelos projetistas. A demanda por módulos de sensores e outros circuitos fáceis de utilizar fomentou um mercado que se restringia a circuitos para hobbistas, que ainda eram complexos para a maioria das pessoas. Com o mercado produzindo módulos de fácil utilização que praticamente não necessita de soldagem, aproximou pessoas da plataforma Arduino, mesmo não sendo de áreas como eletrônica ou computação. A plataforma Arduino conta com uma comunidade que cresce cada vez mais. É possível encontrar na web uma infinidade de referências para a utilização do Arduino e dos módulos que podem ser acoplados à placa de prototipação.

Apesar da se ter facilitado a construção de soluções amadoras, ainda é relativamente caro desenvolver um projeto de um robô do zero. O processo deve passar por muitos experimentos e protótipos até chegar no projeto final. O que muitos destes hobbistas, ou mesmo profissionais, não sabem é que é possível utilizar programas para simulação para que seu projeto seja refinado antes de “botar a mão na massa” na construção física do robô. O objetivo deste artigo é apresentar um simulador que tem o propósito de criar e/ou utilizar plataformas robóticas já existentes no mercado e academia e que proporcionam um ambiente computacional simples e flexível.

Robôs no V-REP

Figura 1 – Diversos robôs disponíveis no V-REP.

V-REP: Virtual Robot Experimentation Platform

Existem diversos simuladores robóticos capazes de proporcionar um ambiente para a criação e/ou utilização de modelos computacionais de robôs. Estou focando no V-REP (do inglês, Virtual Robot Experimentation Platform) (COPPELIA ROBOTICS, 2015) porque tenho mais afinidade e por dispor de uma versão gratuita para fins educacionais . A Figura 1 mostra alguns dos robôs disponíveis no V-REP

O V-REP foi desenvolvido para a criação e simulação de robôs para diversas aplicações, tanto móveis quanto estáticos, de solo, aéreos ou aquáticos. Diversos modelos de robôs amplamente utilizados já estão disponíveis no V-REP para utilização, como o e-Puck e Kilobot. Nele também é possível desenvolver seus próprios robôs e os cenários para a simulação.

Figura 2 – Simulador V-REP, versão educacional.

Na Figura 2 é apresentada a interface do V-REP, onde se observa sua composição: a Cena é onde os elementos 3D são inseridos; a Hierarquia é onde se pode verificar todos os elementos que fazem parte da Cena; na área de Modelos é possível navegar e selecionar todos os elementos disponíveis pelo simulador e adicioná-los à Cena. Além dessas três áreas principais existe barra de ferramentas principal, que fica na parte superior logo abaixo do menu, e a barra de ferramentas secundária, que fica na lateral esquerda do V-REP.

O V-REP contém três tipos de motores de simulação de física para a execução de cálculos e simulação de elementos de maneira realística. Estes motores de simulação proporcionam os mais complexos comportamentos no ambiente de simulação que vão desde a criação de robôs seguidores de linha até robôs estacionários capazes simular o processo de soldagem e corte de materiais. Além disso, o V-REP permite a definição de características dos elementos como atrito, massa, momento de inércia etc. Essas características proporcionam a criação de ambientes de simulação realistas capazes de apresentar problemas iguais ou semelhantes, aos que ocorrem no funcionamento do robô real.

O simulador em questão também possibilita a criação de sólidos primitivos como: plano, disco, cubo, esfera e cilindro, com dimensões configuráveis de acordo com a necessidade. O Vídeo 1 (SILVA, 2015a) mostra um experimento de atrito no plano inclinado utilizando o V-REP.

Vídeo 1 – Atrito no plano inclinado no V-REP.

Outro ponto importante é a possibilidade de importar elementos 3D criados em outras ferramentas como o FreeCAD (2015), uma vez que a capacidade do V-REP de criar novos modelos é limitada. Os formatos suportados para importação são OBJ, DXF, 3DS, STL e CSV.

Cada projeto criado no V-REP inicia com uma Cena, como mostra a Figura 2. Observe que assim que o projeto é iniciado a Cena contém alguns elementos básicos como as luzes, as câmeras e o piso, que é o único elemento visual inserido na Cena quando criamos um novo projeto. Este piso aparece na Figura 2 como um plano quadrado com textura quadriculada e com 5 metros de lado. Cada quadrado na textura deste plano mede 0,5 metro de lado. Vale salientar que a origem do sistema coordenado é no centro deste plano e assim, a partir do centro, as coordenadas x e y estão no intervalo [-2,5, 2,5]. O tamanho e texturas deste plano são configuráveis no ambiente do V-REP. Além do piso, a Figura 2 também mostra um robô, o ProtoSwarBot, que eu desenvolvi enquanto estudava o V-REP.

No desenvolvimento do ProtoSwarBot foi possível verificar que há diversos tipos de sensores no V-REP. O ProtoSwarBot conta com sonar, acelerômetro, giroscópio e transceiver. Foram adicionados dois motores, um em cada roda, que não são objetos visuais mas fazem parte da mecânica funcional do simulador. É possível controlar o ProtoSwarBot aumentando o torque no motor via programação.

A linguagem de controle do V-REP é a Lua, uma linguagem de script muito simples. A biblioteca do V-REP é vasta e proporciona o controle de todos os elementos via programação. Permite ainda a criação de interface de controle em formato de janelas com botões e campos de entrada e apresentação de dados. O Vídeo 2 (SILVA, 2015b) mostra um exemplo de controle painel de controle interativo para tratar de coordenadas cartesianas e polares no V-REP.

Vídeo 2 – Coordenada polares e cartesianas com controle interativo.

O Vídeo 3 (SILVA, 2015c) mostra o ProtoSwarBot funcionando em modo “desvio de obstáculos”. É uma implementação rudimentar para fins expositivos apenas.

Vídeo 3 – Simulação do ProtoSwarBot – detecção de obstáculos.

Considerações Finais e Trabalhos Futuros

 Neste artigo foi apresentado uma ferramenta de simulação para robôs. É possível verificar que, com o auxilio do V-REP o esforço da construção de um robô, seja ele móvel ou estacionário, pode ser amenizado realizando simulações. É possível construir seu próprio robô e criar cenários experimentais para testar as funcionalidades desejadas e como elas se comportam.

Apesar da proposta de robótica o simulador não se limita a isto. É possível criar outros tipos de simulações como testes de algoritmos de comunicação e a criação de artefatos para aulas de diversas disciplinas como matemática, física e química.

Apesar da documentação disponível no site do V-REP, ainda é escasso o material disponível na web se comparado a outras plataformas de desenvolvimento. É preciso criar mais conteúdos apresentando a ferramenta e seus diversos aspectos de forma mais explicativa, sobre tudo o uso da linguagem Lua, por meio de artigos e vídeos.

Referências

Arduino. Disponível em: <http://www.arduino.cc/>. Acesso em: 24/07/2015.

COPPELIA ROBOTICS. V-REP. Disponível em: <http://www.coppeliarobotics.com/>. Acesso em: 01/05/2015.

FREECAD. FreeCAD: An Open Source parametric 3D CAD modeler. Disponível em: <http://www.freecadweb.org/>. Acesso em: 01/05/2015.

SILVA, R. T. DA. Atrito no Plano Inclinado. Disponível em: <https://youtu.be/Rw8Pjlp_qN8>. Acesso em: 4/5/2015a.

SILVA, R. T. DA. Coordenadas Polares e Cartesianas. Disponível em: <https://www.youtube.com/watch?v=bWGb2k6yatw>. Acesso em: 5/5/2015b.

SILVA, R. T. DA. Simulação do ProtoSwarBot – detecção de obstáculos. Disponível em: <https://www.youtube.com/watch?v=_LHL_mZ4VGo>. Acesso em: 23/07/2015c.

Circuito Impresso com Photoresist Film

Circuito Impresso com Photoresist Film
Figura 1. Circuito Impresso com Photoresist Film

Por volta de 1997, ainda moleque, fiquei fascinado com a possibilidade de poder criar meus próprios circuitos em casa. Um amigo havia me mostrado que, com um lápis Piloto utilizado para escrever em transparências para retroprojetores  era possível desenhar meu próprio circuito sobre uma placa com uma face cobreada e depois corroer no ácido. Foram muitos momentos de aprendizado e diversão com revistas sobre eletrônica que traziam circuitos legais para montar.  Após 20 anos a frente daquela época aqui estamos nós. Daquele processo árduo e cansativo apenas uma coisa não mudou: ainda continuo corroendo minhas placas com Percloreto de Ferro.

Atualmente existem diversas formas de fazer sua própria placa em casa. A parte do processo que mais dá trabalho e que afeta diretamente a qualidade da placa é a de transferir para a placa cobreada o modelo feito em computador.

A seguir vou mostrar como eu faço minhas placas atualmente.  O processo não é 100% preciso mas, por se tratar de uma técnica caseira para hobbistas, acredito ser suficiente para a maioria dos casos. A Figura 1 apresenta uma das placas que fiz usando o método.

O Photoresist Film (Filme Fotoresistivo), ou Photoresist Dry Film, é uma película fotossensível. A parte fotossensível vem entre duas camadas de plástico transparente para proteção. Quando exposta à luz a película reage aos raios UV e se fixa à superfície onde está posicionada. Cada tipo de luz emite uma intensidade de raios UV diferente por isso é crucial que seja evitada qualquer exposição da película a focos luz, especialmente ao sol.

A seguir apresento um pequeno tutorial que fiz com a experiência que tive com a técnica e fiz um vídeo, que está logo em seguida, capturando o processo de uma das minhas placas .

LISTA DE MATERIAIS

  1. Um Photoresist Film do tamanho de sua placa
  2. Placa de Circuito Impresso virgem
  3. Lã de aço (Bombril)
  4. Elevador de PH para piscinas (Barrilha Leve, Ph+ ou outro)
  5. Negativo do circuito impresso a laser em transparência ou laser film
  6. Soda Cáustica
  7. Recipientes de vidro para corrosão e utilização da solução com soda cáustica.
  8. Luvas para evitar o contato com a soda cáustica
  9. Um rolo tipo esponja (Figura 2)
  10. Bandeja de pintura (Figura 2) ou outro recipiente grande o suficiente para passar o rolo na placa .
  11. Secador de cabelo.
  12. Lâmpada UV / Luz Negra
  13. Água
Figura 2. Rolo de espuma e bandeja de pintura
Figura 2. Rolo de espuma, a esquerda e bandeja de pintura, a direita.

ETAPAS

Limpeza da Placa

  1. Limpar a placa com esponja de aço (Bombril)
  2. Certificar-se de tirar todas as possíveis partículas da placa
  3. Evitar tocar na placa diretamente com as mãos para evitar oleosidade

Aplicação do Filme: esta etapa deve ser realizada em local com pouca luz para não inutilizar o filme.

  1. O filme tem três camadas. As duas mais externas são protetoras. A interna é fotossensível. Uma camada plástica externa deve ser retirada para aplicação da camada central à placa.
  2. Há diversas formas de se aplicar o filme para que ele fique livre de bolhas. Normalmente utiliza-se uma máquina de laminar, porém se você não tiver a uma aconselho passar uma leve camada de vaselina líquida com um algodão ou papel untado. Não devem ser deixados fiapos, então tome cuidado. A vaselina vai facilitar o deslocamento do filme na placa e ajudar e facilitar a retirar as bolhas com uma espátula ou cartão de crédito. Outra forma é a aplicação com auxílio de um secador de cabelos.
  3. Coloque o circuito em negativo sobre a placa impresso em transparência a laser ou laser film. A vaselina também pode servir para juntar o negativo à placa já com o filme aplicado.
  4. O filme deve ser exposto à luz e onde incidir luz no filme, este ficará rígido. A melhor opção é uma lâmpada UV, que pode ficar cerca de 20 cm de distância da placa durante 2 minutos. Este procedimento é crucial para o sucesso do processo, pois de passar muito tempo todo o filme vai se fixar demais a placa e se ficar de menos a parte que deve ser fixado não ficará. Estes parâmetros são os que eu utilizo nas minhas produções. Você pode testar outras formas ou ver outros tutoriais que não utilizam luz UV.
  5. Após expor à luz UV, retire a outra camada protetora.
  6. Prepare uma solução de barrilha leve (ou outro elevador de PH, utilizado em piscinas) sendo 200ml de água para 1 colher pequena (de chá) do elevador de PH.
  7. Passe levemente um rolo de esponja sobre a placa imersa na solução de PH elevado até que a parte não exposta à luz saia totalmente. Cuidado para não fazer muita força e danificar as trilhas.
  8. Em seguida passe a placa em água limpa para retirar o excesso da solução alcalina e seque-a preferencialmente com secador de cabelo. Você não deve demorar para realizar esta etapa, pois a solução alcalina pode continuar a fazer efeito e, assim, danificando o resultado.
  9. Após a secagem pode realizar a corrosão com percloreto de ferro.
  10. Depois da corrosão da placa você deve retirar a parte que protege as trilhas. A forma mais eficiente é utilizando soda cáustica. Você deve preparar uma solução suficiente para cobrir a placa com  água e uma quantidade pequena (meia colher de sopa) de soda cáustica, espere alguns minutos e toda a camada de proteção sairá.
  11. Se ocorrerem falhas na etapa 13 anterior você deve iniciar o processo do início com um novo filme. A película deve ser retirada da placa mais facilmente com soda cáustica como descrito no item 13.

 

FALHAS

Quando terminar a etapa 11, onde passamos o rolo de espuma, você deve verificar se sua placa ficou sem falhas. A Figura 3 apresenta um tipo de falha que pode ocorrer de o filme estiver amassado, ou mesmo com dobras. Se isso ocorrer o ideal seria retirar o filme da placa e reiniciar o processo como descrito no item 13, porém se você considerar que a falha não é tão grave pode simplesmente cobrir o erro com lápis marcador de CD ou retroprojetor.

Figura 3. Falhas no filme após a etapa 11.
Figura 3. Falhas no filme após a etapa 11.

Espero que tenham gostado. Qualquer dúvida, sugestão ou crítica usem os comentários sem pena.

Cuidado com o Watchdog Timer no Arduino

Mesmo já tendo utilizados outras famílias de microcontroladores nem sempre você acaba lembrando do básico quando utiliza Arduino, e isso pode se um problema.

Para controlar o portão eletrônico e o alarme do condomínio, fiz um sistema utilizando um Arduino Uno, um Shield Ethernet e 2 relés juntamente com um controle que funcionava tanto para o portão quanto para o alarme. O sistema fica ligado ao roteador e funciona mesmo fora da rede local através da web.

Um problema que percebi é que nem sempre o sistema estava ativo e como não sabia ainda qual era realmente o problema resolvi ativar o WDT (Watchdog Timer) do Arduino. Para quem não sabe o WTD é uma parte independente do processamento principal do microcontrolador que, quanto ativo, realiza uma contagem e se chegar ao limite gera uma interrupção reiniciando o sistema para previnir que este fique travado durante muito tempo por algum problema ocorrido. Para que não ocorra sempre você deve resetar o WDT para que ele nunca alcance seu limite e assim seu código possa ser executado normalmente.

Quando ativei o WTD do meu sistema ele não funcionou bem como deveria. O sistema ficou se reiniciando o tempo todo (é o que acho, não cheguei a esta conclusão empiricamente) e dessa forma eu não conseguia realizar um novo upload para o Arduino e achei que equele chip estava perdido, pois sempre ocorria um timeout na gravação e um mensagem “avrdude: stk500_getsync(): not in sync: resp=0x00″, como se minha placa não fosse a correta ou não estivesse funcionando corretamente.

errowtd
Código que causa loop infinito de resets no Arduino.

Após fazer algumas pesquisas sem sucesso na web resolvi fazer uma tentativa fora do comum para gravar o chip. Após a etapa de compilação e um pouco depois do aparecimento da mensagem “Uploading…”, eu fiz um curto rápido, utilizando um fio, entre o GND e o 5V da placa. Após o curto a placa faz um reset diferente do realizando através do botão e o Arduino consegui entrar em modo gravação. Tentei muitas coisas sem sucesso antes dessa sugestão desesperada. Fiz a mesma coisa em um Arduino Nano e também tive sucesso.

Não tenho tanta experiência com Arduino e não sou profissional na área. Se alguém quiser enviar ou, por comentário mesmo, fazer alguma observação ou sugestão fiquem à vontade.