Universidade Federal do Ceará Engenharia de Computação Programa de Educação Tutorial Projeto SobrArm Alunos: Raimundo Farrapo Pinto Júnior Abner Sousa Nascimento Orientador: Iális Cavalcante de Paula Júnior SOBRAL - CE 17 de fevereiro de 2016
Sumário 1 Introdução 2 2 Material Utilizado 2 3 Desenvolvimento 4 3.1 Modelo e impressão.......................... 4 3.2 Arduino, mecânica e controle manual................ 6 3.3 Reconhecimento de Gestos...................... 8 4 Procedimento 8 5 Resultados e Discussões 10 6 Conclusões 10 1
1 Introdução O projeto SobrArm objetiva empregar diferentes plataformas de desenvolvimento open-source, componentes eletrônicos e impressão 3D para a construção de um braço robótico, tendo em vista máximo custo-benefício e consciência ambiental. O braço é capaz de movimentar 5 dedos com o auxílio de servo-motores e pode ser controlado por linha de comando, interface gráfica ou captura de vídeo em tempo real, via reconhecimento de imagens. 2 Material Utilizado Fonte de PC; Figura 1: Fonte de PC. 1 Kg - Filamento plástico PLA 3 mm; 2
Figura 2: Filamento PLA 3 mm. 5 - Servos-motores MG995 Tower Pro; Figura 3: Servo-motor. Arduino UNO; 3
Figura 4: Arduino UNO. Fio de Nylon 0.7 mm; Figura 5: Fio de Nylon. 3 Desenvolvimento 3.1 Modelo e impressão O braço robótico utilizado no SobrArm baseia-se no projeto open-source francês InMoov [2], que consiste em um robô humanoide, impresso em 3D, constituído da metade superior do tronco, cabeça e braços. Modificamos algumas 4
de suas peças originais para reduzir o consumo de material e limitar a movimentação apenas aos graus de liberdade estritamente necessários à execução do projeto. O material de impressão, poliácido láctico ou PLA [3], é um polímero produzido a partir de recursos naturais, como amido de milho e cana-de-açúcar. Por isso é biodegradável e completamente atóxico. Este material se liquefaz a 150, o que o torna uma das opções mais utilizadas na impressão 3D. Para a confecção das peças na impressora definimos a temperatura do hotend em 180 e aquecemos a mesa a 70. A tabela abaixo apresenta o tempo médio aproximado de impressão das peças: Tabela 1: Tempo estimado de impressão das peças Peça Tempo 2 Peças da mão 3h cada 5 Dedos 2h cada 5 Peças do braço 8h cada Total aproximado 56h O tempo pode variar conforme o modelo de impressora utlizado. Aplicamos fita dupla-face de papel sobre a mesa para garantir a aderência do material e um cooler para ajudar no resfriamento das partes já impressas. Isso garantiu que todas as peças possuíssem boa qualidade de impressão. As figuras 6, 7 e 8 mostram as peças inicialmente confeccionadas e a impressora utilizada. Figura 6: Peças da mão. Figura 7: Peças do braço. 5
Figura 8: Impressora 3D. 3.2 Arduino, mecânica e controle manual Cada dedo está conectado através de dois fios de nylon a um servo-motor, controlado pelo Arduino. Dessa maneira, é possível movimentar os dedos da mão. A tensão no fio para a movimentação dos dedos é exigente em termos de quilogramas-força. Em decorrência disso, fez-se necessária a utilização de motores e fios fortes. A figura 9, a seguir, mostra a montagem final do braço, com o Arduino e a fonte de alimentação. A variação dos ângulos aplicados aos motores para movimentar os dedos pode mudar conforme a montagem. Em nosso primeiro protótipo, utilizamos os valores da tabela abaixo, obtidos empiricamente: Tabela 2: Ângulos utilizados para rotacionar os dedos Ângulo Dedo 40-130 Mínimo 15-140 Anelar 0-120 Médio 0-120 Indicador 15-120 Polegar 6
Figura 9: Braço montado. Os ângulos são transmitidos aos dedos via código utilizado no Arduino. Definimos uma string padrão, a ser enviada para a porta de comunicação serial na forma "d1:xx d2:xx d3:xx d4:xx d5:xx", na qual: "XX" é o ângulo para que o motor deve ser alterado; "d1" representa o dedo mínimo; "d2" o dedo anelar; "d3" o dedo médio; "d4" o dedo indicador; "d5" o dedo polegar. Assim, com uma única string é possível alterar a posição de todos os dedos. Desenvolvemos um software em Python que oferece um controle manual sobre todos os dedos do braço. Nele há uma conexão direta com o Arduino, sem necessidade de processamento de dados. Através dele, é possível variar em uma escala de 0 a 100 o grau de abertura de cada dedo, bem como realizar movimentos pré-definidos. 7
3.3 Reconhecimento de Gestos Para capturar e reconhecer gestos do usuário, aplicamos técnicas de visão computacional [5], em conjunto com uma fonte de captura. O algoritmo que desenvolvemos é capaz de reconhecer gestos em tempo real ou gravados em vídeo, desde que as condições de iluminação do ambiente sejam estáveis. Ele consiste em 3 etapas: Captura de amostra visual do ambiente; Extração do cenário e detecção dos dados; Transmissão dos dados. O processo de captura da amostra consiste, inicialmente, na extração de uma imagem fixa, chamada de background ou cenário, que será usada para subtrair os elementos visuais sobrepostos. Na fase seguinte, o único objeto com características visuais diferente do background deve ser o braço do usuário. A cada frame, os pixels são comparados com os dados armazenados. Assim, produzimos uma imagem binária e com base nela obtermos um polígono cujos vértices estão sobre as pontas dos dedos. Utilizamos o dedo médio como referência para identificar os demais dedos. Para isto, calculamos o ângulo de cada vértice com o dedo médio e compararemos com valores de ângulos que obtivemos empiricamente. Por fim, a distância entre o dedo e o centro será utilizada para calcular o quão aberto ou fechado este dedo se encontra e a informação será enviada ao Arduino. 4 Procedimento A configuração final dos equipamentos é simples. Estabelecemos a comunicação de um computador com o Arduino através de um cabo USB A-B (mesmo utilizado na maioria das impressoras), conectamos a fonte de alimentação e executamos os softwares desenvolvidos. Os motores do braço estão dispostos conforme a imagem 10. Para nos referirmos a eles, utilizamos a nomenclatura descrita a seguir: M1, M2 e M3, parte superior, da esquerda para a direita, respectivamente; M4 e M5, parte inferior, também sob a mesma ordem. O torque dos motores é elevado, 13 Kg.cm, o mesmo aplicado em projetos de aeromodelismo. Por conseguinte, em virtude da considerável corrente necessária para o funcionamento dos motores, optamos por empregar uma fonte externa de computador. 8
Figura 10: Disposição dos motores. Os fios de alimentação dos motores são conectados à fonte e o fio de PWM às portas digitais do Arduino, conforme a ordem: M1 na porta 6, controlando o dedo anelar M2 na porta 10, controlando o dedo médio M3 na porta 11, controlando o dedo indicador M4 na porta 5, controlando o dedo mínimo M5 na porta 12, controlando o dedo polegar A imagem 11 esquematiza as ligações dos motores com o Arduino. Figura 11: Ligações dos motores e Arduino. 9
5 Resultados e Discussões O funcionamento do braço mecânico ocorreu de forma adequada. Embora sua capacidade de movimentação seja substancialmente inferior a um braço orgânico, ou mesmo a próteses robóticas mais avançadas, o produto final é adequado à margem de custo a que se propõe. Futuros aprimoramentos quanto ao material e tecnologia de impressão utilizados abrirão novas possibilidades, como a implementação de partes flexíveis, redução do atrito e melhoria do design. Obtivemos resultados satisfatórios quanto ao reconhecimento de imagens. O software foi capaz de detectar a posição e grau de abertura dos dedos com relativa precisão, desde que observada a qualidade do material capturado, condições de luz e resolução da filmagem. Devido à alta demanda computacional do processamento de imagens, é necessário observar as configurações de hardware do aparelho que irá executar o software, porém, a maioria dos laptops domésticos dotados de webcam deve ser capaz de executá-lo com fluidez. Futuramente a aplicação de técnicas para a previsão de dados e eliminação de ruídos deve melhorar consideravelmente a precisão dos dados obtidos. 6 Conclusões Construímos um braço mecânico de baixo custo utilizando uma impressora 3D e material plástico biodegradável. Desenvolvemos uma interface gráfica para o controle do braço, bem como um software capaz de detectar gestos manuais em tempo real e transmiti-los ao robô. Futuros testes com novos materiais e técnicas de processamento serão realizados, para evoluir o protótipo atual e ampliar sua eficiência. Referências [1] The BSD 3-Clause License. Open Source Initiative. Disponível em https: //opensource.org/licenses/bsd-3-clause, Acesso em: 8 fev. 2016. [2] Open source 3d printed life-size robot. InMoov. Disponível em http:// inmoov.fr, Acesso em: 15 fev. 2016. [3] PLA monomere (Polylactic Acid). Matbase. Disponível em http:// tinyurl.com/material-imp3d-pla, Acesso em: 15 fev. 2016. [4] Gary Bradski and Adrian Kaehler. Learning OpenCV: Computer vision with the OpenCV library. O Reilly Media, Inc., 2008. [5] Rafael C. Gonzalez and Richard E. Woods. Digital Image Processing (3rd Edition). Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 2006. 10