29 de outubro de 2014

O trabalho que você verá a seguir, foi realizado por seis discentes da Universidade Federal do Oeste do Pará - UFOPA, todos graduandos em Ciência da Computação. Este trabalho, foi originalmente publicado no blog Robô Industrial e estou replicando aqui no Blog do Ronilson.

Os autores do trabalho são: Edinelson Júnior, Enéias Monteiro,Esdras Dutra, Marcelo Silva, Samuel Oliveira e eu (Ronilson Santos)

Robô Industrial? Por quê?

Na disciplina de Circuitos Digitais foram propostos vários projetos para serem executados pelos alunos, como forma de avaliação. Um dos exemplos apresentado foi o Robô Industrial, que muito nos
interessou. Dedicamo-nos então a buscar por mais informações a respeito das
funcionalidades requeridas no robô (
seguir linha, seguir comandos externos e ser capaz de movimentar-se de forma autônoma), e também informações sobre os componentes que iriamos
necessitar para suprir as necessidades de locomoção (
LDR, Sensor IR, Motores). Então, a partir daí,
teríamos uma base maior para a execução prática.



No semestre anterior, projetos similares foram executados, porém de forma individual. O desafio agora será fazer com que os códigos sejam implementados de forma conjunta, alternando a sua execução conforme a necessidade do robô, nos casos autônomos e seguidor de linha e/ou de acordo com a decisão do controlador, no caso guiado por comandos externos.




Sendo assim, foi usada a plataforma Arduino para a interação entre os componentes. Pois usa uma programação intuitiva; possibilita uma configuração ampla e é open-source.

Introdução

As inovações tecnológicas recentes mostram-se cada vez mais presentes na indústria e na vida cotidiana das pessoas, isso porque seu desenvolvimento passou a ser facilitado de vários modos e por várias áreas da tecnologia. A exemplo podemos citar a computação, de modo geral e a robótica de modo específico, fazendo uso de diversos componentes eletrônicos auxiliares, possibilitando uma experiência mais cômoda e prática para a execução de algumas atividades. Na indústria, por exemplo, tarefas antes executadas de forma interinamente repetitiva e metódica por homens foram automatizadas/facilitadas com o uso de robôs. Hoje em dia, a utilização da robótica nessas áreas trouxe meios autônomos que já desenvolvem alguns processos programados, dotados de inteligência artificial, de tal forma que não necessite de intervenção direta do ser humano na execução das atividades do robô.

Partindo desse pressuposto, fomos desafiados pelo tutor da disciplina de Circuitos Digitais do curso de Ciência da computação, somado a curiosidade de intervir de forma intelectual e na prática na montagem de um Robô Industrial, cuja características são: seguir linha, agir de forma autônoma para desviar obstáculos e obedecer comandos externos, com o intuito de automatizar a industria no qual ele será aplicado para cumprir o objetivo de aprimorar atividades antes repetitivas ao homem e incansáveis a um robô.

Diante disso, podemos citar a execução das seguintes atividades que podem ser desenvolvidas por um Robô Industrial:
  • Seguir linha para percorrer trajetórias em galpões com o intuito de  facilitar o transporte de carga por percursos repetitivos, não  precisando do acompanhamento direto de um ser humano;
  • Agir de forma autônoma para desviar de obstáculos, caso no percurso  encontre empecilhos que o impossibilite de executar a trajetória  programada para a execução de determinada tarefa, tudo isso através de  uma programação que contemple a previsão do maior número de casos
    possíveis para execução da tarefa, no ambiente de execução/trabalho do  robô;
  • E se necessário a manipulação do robô via comandos externos para que o ser humano consiga controlar o robô, seja via conexão bluetooth, wireless ou até mesmo via sistema de posicionamento globa(GPS).
Para realizarmos a implementação do projeto, detectou-se nas pesquisas realizadas pela equipe, que a utilização de Arduino em base robótica, atendia as necessidades para executar as tarefas supracitadas. A facilidade de acesso e programação ao microcontrolador, que a interface Arduino proporciona, nos possibilitou a implementação das rotinas necessárias para as funcionalidades requeridas no Robô Industrial.

Deste modo, ao finalizar a implementação este robô deverá estar aptopara seguir linha e ser capaz de vencer obstáculos colocados no meio da trilha; obedecer a comandos externos transmitidos via bluetooth; e também movimentar-se de modo autônomo, como foi exposto na páginainicial.

Para alcançarmos o objetivo final precisamos primeiramente ter um conhecimento básico da placa que iremos utilizar. (Vídeo 1).




Vídeo 1 - Conhecendo a Placa Romeo


E após isso, seguir adiante para entender um pouco mais sobre a programação na IDE do Arduino. (Vídeo 2).





Vídeo 2 - Introdução à programação para a plataforma Arduino


Então, tendo estes conhecimentos básicos da placa e programação, que servirão para o desenvolvimento do projeto, partimos para o conhecimento dos demais componentes que serão utilizados, que serão listados abaixo:
Figura 1. LDR (à esquerda), Sensor Óptico Reflexivo TCRT 5000 - Seguidor de Linha (à direita)

(Clique na imagem para mais detalhes)




Figura 2. Servo Motor

(Clique na imagem para mais detalhes)


Figura 3

(Clique na imagem para mais detalhes)




    Figura 4. Base robótica Tank Rover 5
    (Clique na imagem para mais detalhes)

      Figura 5. C.I. L298 
      (Clique na imagem para mais detalhes)
      Figura 6.  Módulo Bluetooth

      (Clique na imagem para mais detalhes)

      1 - Desenho esquemático do Projeto do Robô Industrial 


      Antes de passarmos para a montagem dos componentes é necessário desenvolver o desenho esquemático do projeto, onde é ilustrado de forma detalhada e técnica as disposições das conexões e componentes necessários para o seu desenvolvimento, isto é de suma importância para facilitar a documentação e implementação do projeto na prática, impedindo que hajam erros de conexões destes. Veja abaixo a Figura 7 que mostra a desenho esquemático desenvolvido no software Fritzing.

      Figura 7. Desenho esquemático do Projeto


      2 - Prototipação do Projeto - Robô Industrial


      A Prototipação apresenta o desenvolvimento, a produção de versões iniciais - protótipos (análogo a maquetes para a arquitetura) - de um sistema futuro, neste caso o Robô, com o qual é possível realizar verificações e experimentos com o intuito de avaliar algumas de suas características antes que o sistema venha realmente a ser construído de forma definitiva. Esse processo facilita aos interessados pela montagem do projeto em saber de forma mais consistente a organização dos componentes e conexões no projeto almejado. Na prototipagem, veremos de modo menos técnico como ficará o projeto no mundo real. Mostrando todos os componentes que serão utilizados e organizados da melhor forma possível para garantir a execução do código implementado. Veja abaixo na Figura 8. como os dispositivos e componentes ficarão conectados à placa controladora.

      Figura 8. Prototipação do Projeto - Robô Industrial no software Frizing.


      3 - Montagem e adptação do Seguidor de linha, LDR Esquerdo e direito e LED's no Chassi Tank Rover 5.

      Primeiramente para fazer com que a base robótica seja adaptada as necessidades do Robô Industrial seguidor de linha precisamos adaptar pequenas hastes para deixar em ponto estratégico os LED's e o Seguidor de Linha para leitura do ambiente e interpretação da linguagem lógica da programação.  As hastes foram confeccionadas a partir de pinceis de quadro branco e canetas, conforme ilustrados na sequencia de figuras abaixo:


                                   Figura 9. Pincel para Quadro Branco     Figura 10. Haste de Caneta Esferográfica


      Figura 11. Pincel e Canetas Agrupadas     Figura 12. Hastes Adaptadas ao Tank Rover 5


      4. Por dentro das Hastes do Robô Seguidor de linha.  

      Na Figura 11 apresentamos a "engenhoca" que desenvolvemos para melhorar a leitura da linha pelo Robô adaptada ao chassi do Tank Rover 5. Agora, vamos mostrar o que tem por dentro dessas hastes. Veja abaixo, na figura 13, sendo que os itens 1-2 são referentes ao LDR esquerdo e direito e os itens  2-3 refere-se ao LED esquerdo e direito. Depois de colocados dentro das hastes ficaram organizados de acordo como ilustrado na Figura 14 sendo que o número 5 que se encontra no centro faz referência ao Sensor Óptico Reflexivo.


      Figura 13. LDRs 1-2 e LEDs 3-4 para serem inseridos na Haste

      Figura 14. Disposições do LDR, LED e Sensor Óptico Reflexivo na Haste

      (1-LDR Esquerdo; 2-LDR Direito; 3-LED Esquerdo; 4-LDR Direito e 5-Sensor Óptico Reflexivo)

      Uma dos objetivos almejados pelo projeto é fazer com que o Robô Seguidor de linha possa desviar de obstáculos, aumentando assim as possibilidades de êxito na concretização do percurso programado ao robô. Esse sensor conectado a placa, tendo como suporte um servo motor para girar aumentando a área de possibilidades, fará com que o robô possa detectar obstáculos e desviar deles mantendo seu percurso. Veja abaixo na Figura 15 onde adaptamos o Sensor Ultrassônico.

      Figura 15. Sensor Ultrassônico acoplado ao servo motor no Tank Rover 5


      Abaixo iremos disponibilizar as implementações do código referente ao robô seguidor de linha, para fazer com que este realize os objetivos propostos, primeiramente devemos testar cada componente que serão utilizados, abaixo colocamos os testes e seu códigos para poder assim obter um bom desempenho. Clique nas imagens e veja os códigos na íntegra com seus respectivos comentários.


      Figura 16. Código para testar motores

      (Clique na imagem para ver o código completo)


      https://gist.github.com/esdrasdutra/f93b5c122d2d0eed6665
      Figura 17. Código para Sensor Óptico Reflexivo/Seguidor de Linha 

      (localizado no chassi do Tank Rover 5 como ilustrado na Figura 14)

      (Clique na imagem para ver o código completo)


      https://gist.github.com/esdrasdutra/98646dc2384fbe3dfcdb 
      Figura 18. Código para testar servo motor onde será acoplado o Sensor Ultrassônico
      (Clique na imagem para ver o código completo)


      https://gist.github.com/esdrasdutra/adeaed1aeb868b304534
      Figura 19. Código para testar Sensor Ultrassônico
      (Clique na imagem para ver o código completo)


      Figura 20. Código do Robô Industrial com a função seguidor de Linha implementada.
      (Clique na imagem para ver o código completo)

      Figura 21: Código com seguidor de linha implementado, desvio de obstáculo e controle via bluetooth.

      (Clique na imagem para ver o código completo)

      7. Vídeo exibindo o teste do modo seguidor de Linha


      O robô apresentado no vídeo abaixo terá as seguintes funcionalidades: Seguirá linha, será autônomo e poderá controlado via Bluetooth. Este vídeo, mostra apenas os testes do modo seguidor de linha, veja que este já executa com êxito as funcionalidades para o qual foi projetado e programado.


      Vídeo 3 - Primeiros teste do modo seguidor de Linha executando com êxito. 





      Vídeo 4 - Robô seguindo linha em um circuito com determinado nível de complexidade


      8. Vídeo exibindo o Robô executando em modo autônomo

      O Robô industrial desse projeto foi programado para assumir o modo autônomo quando houver na linha um obstáculo obstruindo a sua passagem, como este está equipado com um Sensor Ultrassônico (Figura 3) ele fará a leitura do objeto através da lógica de programação implementada (Figura 19) e através da leitura da distância ele percorrerá ao redor do objeto até encontrar a linha para continuar o seu trajeto. Veja abaixo o Vídeo 5 ilustrando a execução do modo autônomo.


      Vídeo 5. Desviando-se de obstáculo sobre a linha


      9. Vídeo exibindo o Robô executando via comando externo



      Nesta funcionalidade o Robô Industrial será controlado via comando externo, utilizaremos para esta ação um Módulo Bluetooth Rs232/ttl onde os comandos de acelerar, recuar, dobrar para direita e para esquerda será controlado, quando pareado, com o aplicativo Arduino Bluetooth RC Car (Figura 20) disponibilizado na loja de app da Google. Convém ressaltar que existem muitos outros Apps com funções semelhantes, para controlar Robô com Arduino. Abaixo explicaremos passo a passo  quais procedimentos foram adotados para realizar o controle do robô via comando externo.


      https://play.google.com/store/apps/details?id=braulio.calle.bluetoothRCcontroller
       Figura 20. Arduino Bluetooth RC Car (Aplicativo)
      (Clique na imagem para saber mais sobre o aplicativo)


      Ele é um aplicativo desenvolvido para plataforma Android, e possui uma interface gráfica interativa para o envio de diversos comandos via bluetooth. Cada botão do aplicativo envia um caractere (letra) para o Arduino, através do link serial bluetooth. No vídeo 6 exibimos como utilizamos a função de comandos via controle e o modo acelerômetro do aplicativo. Utilizaremos os seguintes comandos/botões para movimentar o robô (Figura 21).

      Figura 21. Tela do aplicativo e Tabela de movimentos customizados as necessidades do Robô Industrial.



      Vídeo 6. Robô sendo controlado via bluetooth.


      10. Tabela de atividades desenvolvidas

      Data Atividades Desenvolvidas
      19/jun Primeira reunião da equipe para levantar informações sobre quais componentes a serem utilizados no projeto
      22/jun Aquisição dos componentes eletrônicos que faltavam
      24/jun Criação do blog onde estará disponível toda a documentação do projeto
      24/jun Inicio na escrita da documentação no blog (postagens descrevendo os componentes utilizados)
      05/jul Prototipagem do projeto em ferramenta CAD (Fritzing)
      05/jul Adaptação do módulo seguidor de linha, à base robótica.
      06/jul Teste dos motores
      06/jul Teste do "módulo" seguidor de linha (IR + LDR)
      09/jul Montagem do robô e interligação dos componentes
      09/jul Organização das interligações dos componentes e desenvolvimento do modo autonomo
      13/jul Adaptação do servo motor e sensor ultrasonico à base robótica
      13/jul Teste do servo motor
      13/jul Teste do sensor ultrasonico
      14/jul Atualização da documentação do blog, com as atividades desenvolvidas até esta data.
      15/jul Apresentação parcial em sala de aula do que foi desenvolvido até o momento.
      18/jul Testes e melhoramento do codigo do robo industrial, já incluindo o modo seguidor de linha, e modo autonomo.
      22/jul Testes e melhoramento do codigo do robo industrial.
      24/jul Testes e melhoramento do codigo do robo industrial.
      25/jul Testes e melhoramento do codigo do robo industrial.
      26/jul Testes, gravação do robô em circuito, adaptação do módulo bluetooth
      27/jul Testes, gravação do robô em circuito, atualização da documentação do blog, com as atividades desenvolvidas até esta data
      28/jul Gravação do robô em circuito, desviando obstáculos, e controlado via bluetooth
      28/jul Conclusão da documentação do projeto no blog
      29/jul Apresentação final do projeto em sala de aula.



      Ao aceitarmos a proposta de projetar um robô industrial que atendesse aos requisitos necessários (seguir linha, comandos externos e modo autônomo), iniciamos então a etapa de pesquisas, onde conheceríamos mais a fundo todos os componentes que seriam usados, assim como, procuramos alguns projetos similares para que pudéssemos ter uma visão mais ampla do nosso objetivo final.



      Verificando então a ausência de alguns componentes que seriam de grande importância na construção do robô, foi efetuada a compra e assim seguimos para a estruturação do projeto para que a disposição dos componentes atendesse às nossas necessidades.


      Enquanto era executada a etapa de programação do código que viria a ser inserido no robô, outra parte da equipe estava responsável pelo site contendo toda a documentação necessária. Sendo assim, a equipe se empenhou ao máximo para apresentar os resultados obtidos, dentro do prazo estipulado pelo professor.


      Portanto, consideramos que ao os resultados obtidos até o momento, estão dentro dos esperados e o conhecimento adquirido durante esses dias deveras proveitoso. Apesar de terem sido encontradas algumas dificuldades quanto ao uso de LDR’s para a verificação da linha, pois estas não respondiam corretamente quando a incidência de luminosidade aumentava consideravelmente ou em pisos com tonalidades mais escuras; Outra dificuldade, foi em relação ao código para que o robô desviasse de obstáculos sobre a linha. Dessa forma, este foi implementado de modo que o robô sempre desvia para determinada direção, desprezando também o tamanho do obstáculo. Com isto, este robô não conseguiria desviar de obstáculos maiores com a mesma precisão. Tal problema seria solucionado se houvesse mais tempo para implementação de tomadas de decisões, de modo que o robô avaliasse a melhor alternativa para seu desvio, e se desviasse, também avaliaria possíveis soluções quando detectasse qualquer outro obstáculo posterior.


      Ressalta-se também que ao desenvolver o modo seguidor de linha, fazendo uso de LDR’s e LED’s laterais e Sensor I.R. centralizado, houve um controle mais preciso do robô durante o percurso, onde os LDR’s tiveram um papel fundamental quanto às tomadas de decisão quando o robô saia totalmente da linha, estes permitindo saber qual foi o ultimo que saiu do percurso. Possibilitou-se também fazer com que o robô chegando ao fim do percurso, se movimente circularmente no intuito de retomar ao trajeto.

      Deixe aqui seu COMENTÁRIO: