Académique Documents
Professionnel Documents
Culture Documents
DIEGO GABRIEL LEE DIOGO GUILHERME GARCIA DE FREITAS LEONARDO WATANABE KUME LUS FERNANDO GUERREIRO
CURITIBA 2013
DIEGO GABRIEL LEE DIOGO GUILHERME GARCIA DE FREITAS LEONARDO WATANABE KUME LUS FERNANDO GUERREIRO
CURITIBA 2013
TERMO DE APROVAO
Diego Gabriel Lee Diogo Guilherme Garcia de Freitas Leonardo Watanabe Kume Lus Fernando Guerreiro
Monografia do projeto de Oficinas de Integrao 2, com apresentao prevista para 25 de setembro de 2013 na Universidade Tecnolgica Federal do Paran, como requisito para aprovao na matria. Aprovada por:
Orientador:
Banca:
RESUMO
Este projeto descreve o planejamento, a construo, o funcionamento e possveis aplicaes de um dispositivo para mapeamento tridimensional de ambientes baseado em ultrassom. Basicamente o trabalho envolve o desenvolvimento de um dispositivo para movimentar um sensor de ultrassom que mede distncias em um percurso pr-definido, a cada nova posio do sensor, gravar a distncia medida em relao a um ponto especfico do ambiente e representar graficamente no computador cada ponto analisado. Ao final do mapeamento o resultado ser um conjunto de pontos dispostos em uma representao computacional em escala do ambiente real.
LISTA DE FIGURAS Figura 1: Prottipo do dispositivo. Fonte: autoria prpria ............................................ 5 Figura 2: Diagrama de blocos do dispositivo. Fonte: autoria prpria ........................... 6 Figura 3: Placa de desenvolvimento Arduino UNO R3. Fonte: (ARDUINO, 2013) ...... 7 Figura 4: Diagrama de tempo do funcionamento do sensor de ultrassom. Fonte: (CircuitsToday, 2013) .................................................................................................. 8 Figura 5: Sensor de ultrassom HC-SR04. Fonte: (CircuitsToday, 2013) ..................... 9 Figura 6: Exemplo de sinal de controle de um servomotor. Fonte: (Lirtex, 2013) ..... 10 Figura 7: Sistema esfrico de coordenas. Fonte: ()................................................... 12 Figura 8: modelo em CAD do dispositivo. Fonte: autoria prpria. ............................. 13 Figura 9: Fluxograma da rotina de mapeamento. Fonte: autoria prpria. ................. 15 Figura 10: Modelo em CAD do dispositivo exemplificando uma leitura. Fonte: autoria prpria. ...................................................................................................................... 16 Figura 11: Fluxograma do software mapeador. Fonte: autoria prpria. ..................... 17 Figura 12: Janela de controle e display do software. Fonte: autoria prpria. ............ 19 Figura 13: Objeto a ser mapeado e o resultado visto de dois ngulos diferentes. Fonte: autoria prpria. ............................................................................................... 23 Figura 14: Fotos do local de tamanho mdio a ser mapeado. Fonte: autoria prpria. .................................................................................................................................. 24 Figura 15: Resultado do mapeamento de tamanho mdio na primeira posio. Fonte: autoria prpria. .......................................................................................................... 24 Figura 16: Resultado do mapeamento de tamanho mdio na segunda posio. Fonte: autoria prpria. ............................................................................................... 25 Figura 17: Resultado do mapeamento de tamanho mdio na terceira posio. Fonte: autoria prpria. .......................................................................................................... 25 Figura 19: Planta do ambiente de tamanho grande. Fonte: autoria prpria. ............. 27 Figura 20: Fotos do ambiente de tamanho grande a ser mapeado pelo dispositivo. Fonte: autoria prpria. ............................................................................................... 27 Figura 21: Resultado do mapeamento de um ambiente de tamanho grande. Fonte: autoria prpria. .......................................................................................................... 28 Figura 22: Representao da situao ideal para a leitura do sensor. Fonte: autoria prpria. ...................................................................................................................... 29 Figura 23: Representao de uma situao ruim para a leitura do sensor. Fonte: autoria prpria. .......................................................................................................... 30
SUMRIO 1 2 3 3.1 3.2 4 4.1 4.2 4.3 4.4 5 5.1 5.2 5.3 6 6.1 6.2 6.3 6.4 7 8 9 A. B. C. D. INTRODUO ........................................................................................ 3 DESCRIO DO PROJETO ................................................................... 5 REFERENCIAL TERICO ...................................................................... 7 Hardware .............................................................................................. 7 Software ............................................................................................. 11 METODOLOGIA DE EXECUO ........................................................ 13 Montagem fsica do dispositivo .......................................................... 13 Elaborao de rotinas de mapeamento .............................................. 14 Envio de dados ................................................................................... 15 Implementao do software de mapeamento tridimensional.............. 16 PROBLEMAS ENCONTRADOS ........................................................... 21 Posicionamento dos motores ............................................................. 21 OpenGL .............................................................................................. 21 Sensor de Ultrassom .......................................................................... 22 TESTES................................................................................................. 23 Ambiente de tamanho pequeno ......................................................... 23 Ambiente de tamanho mdio .............................................................. 24 Ambiente de tamanho grande ............................................................ 26 Interpretao dos testes ..................................................................... 29 CONCLUSO ....................................................................................... 32 TRABALHOS FUTUROS PARA O PROJETO ..................................... 34 REFERNCIAS BIBLIOGRFICAS ..................................................... 35 CRONOGRAMA .................................................................................... 36 ORAMENTO ....................................................................................... 37 CDIGO ARDUNO .............................................................................. 38 RELATRIO DE REUNIES ................................................................ 40
1 INTRODUO
A robtica e a computao, que antes eram desenvolvidas em sua maioria nas pesquisas de ponta ou para fins industriais, agora esto se tornando atividades mais populares, ou seja, mais pessoas esto tendo acesso e se interessando por essas reas. Estas passaram de atividades formais e acadmicas para algo mais experimental e at recreativo. Um dos motivos dessa mudana de paradigma pode ser a queda dos preos dos computadores e componentes eletrnicos e tambm a maior disponibilidade de peas e plataformas de desenvolvimento universais. Com isso os problemas clssicos da robtica e computao comeam a ser confrontados por mais pessoas e, portanto h maior possibilidade para que surjam solues criativas. Por exemplo: o problema de mapear um ambiente de forma eficiente ao levantar a topologia detalhada do local ou marcar pontos especficos que sirvam de referncia para algum sistema de navegao. Para contornar o problema preciso coletar dados a respeito do ambiente e process-los de tal forma que gerem uma representao do mundo real no computador, e com isso o sistema consiga executar tarefas baseado em seu reconhecimento do ambiente. Esse um dos problemas clssicos da robtica e tem muitas aplicaes prticas, por isso j existe uma abordagem padro, pelo menos em um primeiro momento, para resolv-lo. O passo inicial para resolver esse problema coletar os dados do ambiente, no caso de um mapeamento tridimensional uma abordagem seria escolher um ponto do ambiente, fixar um sensor e medir as distncias dos objetos em relao a esse ponto fixo. Dispondo de um sistema que possa se movimentar possvel coletar dados necessrios para mapear o ambiente em trs dimenses. Os dados brutos resultantes dessa forma de mapeamento so chamados de point cloud (Wikipedia, 2013), a traduo literal do termo em ingls nuvem de pontos, ou seja, basicamente um conjunto de pontos dispostos espacialmente em um sistema de coordenadas onde cada ponto coletado referente a uma superfcie do ambiente real. As limitaes desse mtodo dependem basicamente da qualidade do sensor (preciso nas medidas de distncia e velocidade de leitura) e da liberdade de movimentao do sistema (possibilidade de mapear todos os pontos do ambiente, velocidade de movimentao dos sensores e nmero de sensores). Mas essa
abordagem relativamente simples de implementar e em muitos sistemas o passo bsico para o mapeamento eficiente de ambientes, aps coletar os dados possvel processar o point cloud polgonos. O projeto desenvolvido nessa disciplina visa exatamente produzir uma nuvem de pontos a partir de um sistema simples e de baixo custo, dessa forma o sistema pode ser construdo por mais pessoas e serve como uma introduo ao tema de mapeamento tridimensional de ambientes. para gerar outras representaes como superfcies ou
2 DESCRIO DO PROJETO
Inicialmente o projeto prev o mapeamento de pequenos ambientes, por exemplo, os cmodos de uma residncia, portanto o dispositivo ficar fixo no centro do local para realizar as medies. Para movimentar o sensor de ultrassom sero usados dois servomotores acoplados. Dessa forma o dispositivo tem dois graus de liberdade, ou seja, pode realizar rotaes em torno de dois eixos no espao. O acoplamento entre os motores pode ser melhor compreendido ao observar a Figura 1.
Como se v na Figura 1, o item numerado como 1 o motor que movimenta o dispositivo no plano horizontal, o item 2 no plano vertical, o 3 o sonar, o 4 o arduino e o 5 uma placa de circuito impresso feita apenas para facilitar a conexo dos fios. O controle coordenado dos motores e a aquisio dos dados sero feitos pela placa de desenvolvimento Arduino UNO R3, que utiliza o microcontrolador ATMEGA328 (ARDUINO, 2013). O mapeamento ser feito ao longo de um percurso, no qual a cada nova posio assumida pelo sensor de ultrassom feita uma leitura de distncia. Ento, para cada uma de todas as possveis posies do percurso so gravadas trs informaes: a distncia medida em relao aos obstculos e a posio angular de
cada motor em relao ao seu respectivo eixo de rotao. Associando a cada ponto no espao essas trs informaes pode-se mapear o ambiente atravs de coordenadas esfricas. At esse ponto o sistema capaz apenas de movimentar o sensor no espao e gerar os dados referentes a um ponto, ento preciso enviar esses pontos medidos, atravs da interface serial presente na placa Arduino, para o software de mapeamento tridimensional processar cada um individualmente e gerar um conjunto de pontos em coordenadas cartesianas, que ser desenhado no ambiente 3D computacional em escala com a realidade. O software de mapeamento tridimensional ir funcionar em trs etapas: processamento dos pontos adquiridos pelo hardware (transformao de
coordenadas esfricas para cartesianas), atualizao do conjunto de pontos (adicionar o ltimo ponto recebido a um conjunto de pontos j processados) e representao na tela do conjunto de pontos (plotagem dos pontos e do ambiente tridimensional na tela atravs de instrues para a placa de vdeo do computador). Cada item destacado anteriormente est representado no diagrama de blocos na ilustrado na Figura 2.
3 REFERENCIAL TERICO
Podemos separar o projeto em hardware e software, o primeiro envolvendo os dispositivos fsicos e o segundo dizendo respeito a transformao dos dados obtidos em um mapa 3D. Cada uma das partes envolve diferentes assuntos que so abordados em vrias matrias do curso de Engenharia de Computao.
Basicamente a placa da Figura 3, facilita a utilizao do microcontrolador ao dispor de forma organizada os pinos entrada e sada digital e analgicos, alm de fornecer uma interface de comunicao serial com o computador, permitindo a troca de dados de forma relativamente fcil. Alm disso, a pgina do Arduino fornece uma interface de programao em linguagem C, dispondo de diversas bibliotecas que encapsulam operaes comuns do micro controlador em funes de fcil utilizao.
Para este projeto utilizaremos os pinos de sada digital para enviar sinais aos motores e ao sensor de ultrassom, processo melhor descrito nas sees 3.1.2 e 3.1.3.
O sensor HCSR04 (CircuitsToday, 2013) funciona da seguinte maneira, conforme ilustrado na Figura 4, ao receber um sinal de pelo menos 10s em 5V, nvel lgico 1 no pino Trigger, o mdulo emite oito pulsos de ultrassom a uma frequncia de 40kHz, em seguida o sensor capta a reflexo do som que aps ser processada pelo circuito controlador do mdulo gera um sinal de resposta no pino Echo, a durao do sinal de resposta em 5V diretamente proporcional a distncia medida.
Alguns aspectos podem influenciar na reflexo do som emitido na direo de um objeto, tais como o tipo de superfcie, dimenses, distncia e ngulo em relao ao sensor. O entendimento detalhado desse procedimento de reflexo no faz parte do escopo do projeto, pois como o mapeamento do ambiente baseado em milhares de pontos a omisso de alguns pontos por causa de leituras imprecisas no afeta a qualidade geral do mapeamento. Alm disso, pretende-se trabalhar com ambientes em que j se conhea as caractersticas dos objetos a serem analisados.
3.1.3 Servomotores
Um servomotor consiste basicamente de: um motor de corrente contnua, uma caixa de engrenagens de reduo, um potencimetro e sensor de posio. Basicamente o servomotor agrega esses componentes para manter uma determinada posio, quando est alimentado (usualmente de 4,8V at 6,0V) e recebe determinados pulsos no pino de sinal. Esses pulsos so sinais de onda retangular modulada em PWM, onde a largura do pulso controla a posio angular do servomotor. Na maioria dos servomotores a largura do pulso deve variar de 1 milissegundo at 2 milissegundos, fazendo com que o ngulo varie 180 graus, conforme a Figura 6.
10
O mais importante de cada pulso o tempo em nvel lgico alto e o perodo pode variar sem alterar o posicionamento do servomotor, desde que a frequncia dos pulsos seja suficientemente alta para que o motor no se desligue. A frequncia usada tipicamente em torno de 50Hz. (Valkenburg, 1961).Dependendo da marca do servomotor, esse tempo em nvel lgico alto pode variar entre 0,5 milissegundos a 3,5 milissegundos. Para controlar os motores usando o Arduino existe uma biblioteca especfica, a Servo.h. Ela oferece uma classe Servo com funes prontas (ARDUINO, 2013). As duas funes utilizadas no projeto so: attach - associa um pino do Arduino ao objeto da classe servo. Mudando-se os parmetros de entrada dessa funo, pode-se alterar os tempos mnimo e mximo do nvel lgico 1 do sinal enviado ao servomotor, que pode ser til pois cada servomotor pode ter especificaes diferentes. Os tempos padro so: mnimo 544 microssegundos para 0 grau e mximo 2400 microssegundos para 180 graus. write - o parmetro de entrada determina o ngulo que deseja-se mover o servomotor, variando de 0 a 180 graus. O uso desses comandos pode ser observado no cdigo de controle da placa Arduino em anexo.
11
12
que os pontos obtidos podem ser representados em coordenadas esfricas, pois apresentam um raio da origem at o ponto (M), um ngulo na vertical ( ) e outro ngulo na horizontal ( ), conforme a Figura 7. Contudo, para que estes dados sejam aplicveis no programa, necessria a transformao das coordenadas esfricas para coordenadas cartesianas (SANTOS,2013). A razo disto que funo que se usa para desenhar os pontos na biblioteca LWJGL usa os parmetros de acordo com os eixos x, y e z. A transformao efetiva das coordenadas ocorre na aplicao das seguintes equaes:
13
4 METODOLOGIA DE EXECUO
A seguir descrito o processo de implementao do projeto em etapas, um cronograma completo com o tempo previsto para cada tarefa pode ser observado no ANEXO 1. As tarefas descritas nessa seo compreendem etapas do projeto j concludas ou em andamento. Etapas como anlise de resultados; ajustes finais; correo de erros e concluses sero descritas futuramente
14
15
16
era o suficiente para representar um nmero inteiro positivo maior que 255. Depois o software decodifica a string para extrair os valores e atribu-los a variveis. Um exemplo de leitura dos dados pode ser observado na Figura 10 na qual ele enviaria uma leitura como os seguintes dados: 24cm, 45cm e 180 graus.
Figura 10: Modelo em CAD do dispositivo exemplificando uma leitura. Fonte: autoria prpria.
17
18
19
20
1- Controle de escala: permite ao usurio mudar a escala da plotagem, varia de 1:1 at 1:10. 2- Posicionamento do sensor: ao inserir a posio do sensor em cada eixo (x=vermelho, y=verde, z= azul) e clicar no boto OK o sensor deslocado para a posio escolhida pelo usurio e a partir de ento os pontos passam a ser desenhados em relao a esse novo referencial. 3- Leitura do sensor: apenas exibe o valor correspondente a distncia atual medida pelo sensor de ultrassom, serve para auxiliar no deslocamento do sensor no espao caso o usurio no disponha de algum instrumento para medir distncias. Tambm til para testar se o sensor est funcionando adequadamente. 4- Botes START/PAUSE e STOP: ao clicar em START o display comea a desenhar os pontos recebidos do hardware, com isso o rtulo do boto muda para PAUSE que ao ser clicado congela o mapeamento no ltimo ponto desenhado, o que ativa a opo START novamente retomando o mapeamento de onde parou. Caso o usurio clique em STOP o display cancela o mapeamento e apaga todos os pontos j desenhados, alm disso, quando o mapeamento recomear pelo clique em START os motores voltam para a posio angular 0. 5- Botes Salvar e Carregar mapeamento: agregam as funcionalidades essenciais de salvar e carregar mapeamentos. Clicando em salvar todos os pontos mapeados so guardados em um arquivo de texto que posteriormente pode ser carregado pelo programa. Ao carregar um mapeamento salvo anteriormente possvel continuar a plotagem de pontos normalmente, sendo que os novos pontos podem ser salvos junto com os anteriores gerando um novo mapeamento gravado em arquivo. 6- Opo Mostrar grade : Mostra ou esconde uma grade no plano XZ, essa grade serve para auxiliar na visualizao dos pontos e tambm para estimar medidas, visto que o valor do espaamento em centmetros entre uma linha e outra sempre exibido. A grade, assim como todos os elementos do programa acompanham as mudanas na escala em tempo real.
21
5.2 OpenGL
Apenas trabalhar com as instrues OpenGL j foi um desafio, pois este assunto no abordado no curso de Engenharia de Computao e requer conhecimento prvio de como funciona uma placa de vdeo e a sua comunicao com o processador e memria do computador. Em linhas gerais a placa de vdeo tem um processador e memria dedicados para realizar clculos de posicionamento de vrtices, renderizao de polgonos e preenchimentos de texturas, o que exige basicamente clculos envolvendo matrizes de nmeros reais. Assim as placas de
22
vdeo operam com processamento paralelo e conseguem realizar esses clculos muito mais rpido que o processador, o nico problema a troca de dados entre o processador e a placa de vdeo, que o gargalo para a velocidade de renderizao de imagens na tela do computador. O problema que ocorreu no incio do projeto foi que a cada vez que um ponto era calculado e desenhado havia uma chamada para a placa de vdeo, o processador e a placa ficavam trocando informaes a cada operao de calcular um novo ponto e para manter os pontos anteriores na tela era necessrio desenhlos novamente. Pode-se notar que com um nmero elevado de pontos h muito retrabalho desenhando os anteriores e mandando para a placa de vdeo. Assim o processador do computador ficava sobrecarregado por mandar informao para a placa de vdeo em uma frequncia muito alta. A soluo foi programar de modo mais eficiente a atualizao dos pontos atravs da criao de um buffer que vai guardando gradualmente os pontos calculados e somente quando a tela atualizada que o vetor de pontos mandado para a placa de vdeo. Dessa forma a placa j recebe um vetor com grande quantidade de pontos e os desenha de forma paralela, e s h nova comunicao entre a placa de vdeo e o processador quando a tela atualizada, operao que ocorre com muito menos frequncia que o clculo de um novo ponto.
23
6 TESTES
Aps a implementao do hardware e o desenvolvimento do software foram realizados alguns testes para analisar se o funcionamento do dispositivo estaria de acordo com o esperado. Nesta seo descrito o procedimento de cada teste realizado, os respectivos resultados encontrados e quais as medidas tomadas para solucionar eventuais problemas.
provavelmente devido ao material de papelo. Para o balde o resultado ficou bom mesmo havendo alguns pontos discrepantes, provavelmente por causa da reverberao do som dentro do balde. A
Figura 13
Figura 13: Objeto a ser mapeado e o resultado visto de dois ngulos diferentes. Fonte: autoria prpria.
24
Figura 14: Fotos do local de tamanho mdio a ser mapeado. Fonte: autoria prpria.
Figura 15: Resultado do mapeamento de tamanho mdio na primeira posio. Fonte: autoria prpria.
25
Figura 16: Resultado do mapeamento de tamanho mdio na segunda posio. Fonte: autoria prpria.
Figura 17: Resultado do mapeamento de tamanho mdio na terceira posio. Fonte: autoria prpria.
26
Para essa situao foi necessrio usar a funo de movimentar o sensor no espao, pois em apenas um ponto o mapeamento no era suficiente para detalhar o objeto. Nesse caso foram usados trs pontos diferentes. possvel observar na Figura 16 e na Figura 17 que alguns pontos so desenhados no software como se estivessem atravessando a parede, em locais que no deveriam estar. Isso ocorre devido s reflexes que devido ao angulo que atingem o obstculo, deveriam ser sinais perdidos, porm, acabam por atingir outro obstculo mais distante e voltar para o sonar, causando uma leitura indesejada do sensor.
pois o sensor est analisando pontos prximos como se correspondessem a uma mesma distncia. Apesar de o mapeamento distorcer os objetos e no ser possvel detalhar muito superfcies irregulares, a disposio dos obstculos no quarto fica bem prxima do real, e, portanto esse dispositivo poderia ser integrado a um sistema de navegao onde preciso apenas saber se em determinada regio existe um obstculo. O local escolhido foi um quarto como aparece na Figura 18.
27
Figura 19: Fotos do ambiente de tamanho grande a ser mapeado pelo dispositivo. Fonte: autoria prpria.
28
Figura 20: Resultado do mapeamento de um ambiente de tamanho grande. Fonte: autoria prpria.
29
Figura 21: Representao da situao ideal para a leitura do sensor. Fonte: autoria prpria.
30
Dependendo do tipo de ambiente o som pode refletir em vrios objetos antes de voltar ao sensor e a distncia medida ser maior que a desejada, pois no necessariamente as ondas refletidas provm do ponto em que o sensor est emitindo, essa situao chamada de reflexo fantasma. Outra situao quando o ngulo entre o objeto e o sensor faz com que o som refletido nunca chegue ao sensor, como aparece na Figura 22, gerando uma leitura invlida (zero ou fora de alcance).
Figura 22: Representao de uma situao ruim para a leitura do sensor. Fonte: autoria prpria.
Uma forma de tratar essas leituras incorretas e filtrar pontos discrepantes seria utilizar um algoritmo de ocupao, que cria o mapa do ambiente integrando os dados coletados ao longo do tempo (Varveropoulus).De forma bem resumida, esse algoritmo atribui uma probabilidade de existir um obstculo em cada ponto do espao compreendido no mapa considerando que a emisso da onda sonora pode ser aproximada para um formato cnico. Inicialmente todos os pontos do mapa tem a mesma probabilidade de conter objetos ou no, ento aps vrias medies ao mover o sensor no ambiente, cada ponto do mapa visto de diferentes ngulos passa a ter uma probabilidade maior ou menor de possuir algum objeto. Quanto maior o nmero de mapeamentos maior a probabilidade de o mapa gerado estar correto. Ento a equipe adicionou no software a possibilidade de mover a referncia de onde est sendo medida cada ponto. Assim, passou a ser possvel a
31
movimentao do sensor para realizar medies de diferentes ngulos, desde que o usurio indicasse no software o quanto foi movimentado em cada eixo. Porm no possvel a implementao do algoritmo de ocupao devido a sua complexidade e falta de tempo, visto que o problema foi detectado nas fases finais do projeto. Alm disso, com todo o estudo sobre os sensores percebeu-se a importncia de se escolher adequadamente um sensor que atenda as necessidades e seja vivel. Como o objetivo era criar um dispositivo de baixo custo, no chegamos a testar um mapeamento com sensores de maior preciso.
32
7 CONCLUSO
Apesar de cumprir os objetivos propostos o projeto teve um resultado abaixo do esperado, ou seja, a implementao de baixo custo, principalmente o sensor de ultrassom, comprometeu a preciso e a qualidade final do projeto, mesmo gerando uma nuvem de pontos passvel de ser utilizada em aplicaes de robtica e ainda ser possvel processar os dados para melhor-los o resultado final no ficou visualmente agradvel, ocorreu muita distoro dos objetos mapeados. Devido a imprevistos e principalmente a inexperincia com hardware a equipe demorou muito para resolver problemas relativamente simples e acabou perdendo o foco do projeto. Mesmo que o software e o hardware pudessem ser desenvolvidos em paralelo ocorreram momentos em que toda a equipe concentrou-se em um problema a ser superado, dessa forma outras partes do projeto ficaram sem evoluir enquanto aquele determinado problema era trabalhado. Por exemplo: o software de mapeamento comeou a ser desenvolvido antes da montagem do hardware, pois ainda no dispnhamos das peas, ento inicialmente o programa avanou bastante e ficou praticamente pronto, usamos pontos gerados arbitrariamente para testar o mapeamento, mas quando comeamos a montar o hardware surgiram os problemas e o software ficou parado. S voltamos a desenvolver o software na hora de integrar as partes do projeto e nesse momento no havia mais tempo para implementar todas as ideias iniciais. Independente do resultado do projeto a experincia adquirida durante o processo j valeu o esforo da equipe, pois este o primeiro momento do curso em que aplicamos conhecimentos de vrias disciplinas para integrar software e hardware com a finalidade de resolver um problema prtico, ou seja, a implementao ou pelo menos a tentativa de realizar um projeto desse carter uma amostra da realidade que enfrentaremos no restante do curso e na vida profissional, portanto esse trabalho j serve para testar nossas habilidades como engenheiros. Alm disso, o projeto, ainda que superficialmente, aborda o tema de computao grfica e serve como uma introduo a essa rea de estudo crescente. Pode-se dizer que esse trabalho no est esgotado, com algumas melhorias ele pode ser aproveitado em projetos futuros visto que se todas as ideias iniciais fossem implementadas o dispositivo se tornaria muito mais verstil e integrvel com outras pospostas de robtica ou computao. Portanto esse projeto tem pleno
33
potencial de ser utilizado em conjunto com sistemas de mapeamento e navegao em ambientes pequenos, alm de ser relativamente fcil de construir a um custo acessvel para estudantes ou entusiastas de robtica e computao.
34
Utilizar mais de um sensor para aumentar o nmero de leituras por unidade de tempo; Software em Java controlar o comportamento dos motores (rotinas de mapeamento); Realizar algum tipo de processamento sobre a nuvem de pontos gerada, por exemplo: criar uma linha entre pontos que estejam a uma determinada distncia um do outro.
Estudo e escolha de um sensor mais eficiente para a aplicao Implementao do algoritmo de ocupao que utiliza probabilidade para interpretar mais eficientemente os dados recebidos pelo sensor. Integrao do projeto com um rob mvel com odometria, fazendo com que a parte de movimentao seja autnoma
35
9 REFERNCIAS BIBLIOGRFICAS
ARDUINO. (2013). Arduino UNO. Acesso em Agosto de 2013, disponvel em http://arduino.cc/en/Main/arduinoBoardUno CircuitsToday. (2013). CircuitsToday. Acesso em Agosto de 2013, disponvel em http://www.circuitstoday.com/ultrasonic-range-finder-using-8051 Lirtex. (2013). Lirtex Thecnology on the edge of time. Acesso em Agosto de 2013, disponvel control/ LWJGL. (2013). Lightweight Java Game Library. Acesso em Agosto de 2013, disponvel em http://www.lwjgl.org/ Margolis, M. (2011). Arduino Cookbook. O'Reilly media. OpenGl. (2013). OpenGl The Industry's Foundation for High Performance Graphics. Acesso em Agosto de 2013, disponvel em http://www.opengl.org/ ROSSUM. (2013). Rossum project. Acesso em Setembro de 2013, disponvel em http://rossum.sourceforge.net/ RXTX. (2013). RXTX Wiki. Acesso em Agosto de 2013, disponvel em http://rxtx.qbang.org/wiki/index.php/Main_Page SANTOS. (s.d.). Santos, R. J. (2012). Matrizes, vetorres e geometria analtica. Belo Horizonte: Imprensa Universitria. SAWICZ, D. (s.d.). Hobby Servo Fundamentals. Fonte: em http://www.lirtex.com/robotics/servo-motors-information-and-
http://www.princeton.edu/~mae412/TEXT/NTRAK2002/292-302.pdf Valkenburg, V. (1961). Sistemas sncronos e servomecanismos bsicos (2 ed.). New York: Nooger & Nevile. Varveropoulus, V. (s.d.). Robot localization and Map Construction Using Sonar Data . Acesso em Setembro de 2013, disponvel em The Rossum Project: http://rossum.sourceforge.net/ Wikipedia. (2013). Point Cloud. Acesso em 09, disponvel em Wikipedia: The Free Encyclopedia: http://en.wikipedia.org/wiki/Point_cloud
36
A. CRONOGRAMA
37
B. ORAMENTO
Tabela 1: Oramento do projeto. Fonte: Os autores
Descrio Servomotor TowerPro (MG995) Arduino UNO Sensor ultrassom (HCSR04) Outros (parafusos, suporte madeira, fios e conectores) TOTAL
* Valores baseados em <http://www.mercadolivre.com.br/> cotaes da
38
C. CDIGO ARDUNO
#include <Servo.h> #include <NewPing.h> #define TRIGGER_PIN 5 //pino utilizado para o trigger do sensor de ultrassom #define ECHO_PIN 6 // pino utilizado para o echo do sensor de ultrassom #define MAX_DISTANCE 500 // Maximum distance we want to ping for (in centimeters). //Maximum sensor distance is rated at 400-500cm. #define VARIACAO_HORIZONTAL 2 //determina a variao de ngulo horizontal #define VARIACAO_VERTICAL 5 //determina a variao de ngulo vertical NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. Servo servoHorizontal, servoVertical; int horizontal = 0, vertical=0; int distancia = 0; boolean aumentaAnguloHorizontal = true; void setup() { servoHorizontal.attach(9); // associa o pino 9 ao objeto do servo horizontal servoVertical.attach(10); // associa o pino 9 ao objeto do servo vertical Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results. } void loop() { servoVertical.write(vertical); servoHorizontal.write(horizontal); lerSensor(horizontal,vertical); if(aumentaAnguloHorizontal == true) { horizontal += VARIACAO_HORIZONTAL; //incrementa o ngulo horizontal if(horizontal >= 180) //chegou no limite do servo horizontal { horizontal = 180; //evita valores maiores que 180 aumentaAnguloHorizontal = false; //muda o sentido do movimento if(vertical >= 180){ //chegou no limite do servo vertical vertical = 0; } else{ vertical += VARIACAO_VERTICAL; //incrementa o ngulo vertical } }
39 } else { horizontal -= VARIACAO_HORIZONTAL; //decrementa o ngulo horizontal if(horizontal <= 0) //chegou no limite do servo horizontal { horizontal = 0; //evita valores negativos aumentaAnguloHorizontal = true; //muda o sentido do movimento if(vertical >= 180){//chegou no limite do servo vertical vertical = 0; } else{ vertical += VARIACAO_VERTICAL; //incrementa o ngulo vertical } } } }
void lerSensor(int theta, int phi) { delay(30); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings. unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS). distancia = uS / US_ROUNDTRIP_CM; if(distancia != 0)// verifica se teve medio vlida { //envia para o computador os valores da distncia medida e ngulos dos servos por comunicao serial Serial.println(String(distancia)+"#"+String(theta)+"#"+String(phi)); } }
40
D. RELATRIO DE REUNIES
Data: 03/07/2013 Atividades Desenvolvidas: Testes com Arduino (sensor distncia). Testa da comunicao serial do Arduino para Java. Pesquisas sobre comunicao serial e desenvolvimento 3D em Java Pesquisas de preo dos componentes (servomotor e sensor ultrassom).
Prximas atividades: Testar o servo motor e o sensor de ultrassom. Programao de um ambiente 3D(testes com pontos aleatrios).
Data: 10/07/2013 Atividades Desenvolvidas: Reunio com o orientador da equipe: o Apresentao de solues para o mecanismo rotativo onde o sensor de ultrassom ser acoplado. o Sugesto de modo de calibrao utilizando um laser centralizado junto com o sensor para visualizar o local onde est ocorrendo a medio. o Discusso da possibilidade de usar formas para minimizar os erros e os buracos entre os pontos medidos, usando ferramentas matemticas como probabilidade ou se aproveitar da impreciso dos servomotores para plotar mais de um ponto na mesma posio. Testes com a distncia medida pelo sonar, sendo que este mostrou resultados bons com apenas algumas medies discrepantes. Testes do ultrassom utilizando o osciloscpio. Pesquisa sobre a ferramenta OpenGL.
Prximas atividades: Comeo da programao de um ambiente 3D utilizando OpenGL. Elaborao de uma base para o acoplamento do sensor no mecanismo rotativo.
Data: 31/07/2013 Atividades Desenvolvidas: Definio do modelo do dispositivo fsico no SketchUp. Definio das ferramentas e bibliotecas utilizadas para o desenvolvimento do software. Instalao das ferramentas e bibliotecas utilizadas para o desenvolvimento do software nos computadores da equipe. Reconhecimento das diretrizes para a confeco do relatrio de acompanhamento. Obteno dos materiais para confeco do dispositivo fsico.
Prximas atividades: Confeccionar as partes necessrias para o dispositivo fsico. Redigir o relatrio de progresso. Desenvolver mtodo para transformar coordenadas esfricas em coordenadas retangulares.
41
Data: 07/08/2013 Atividades Desenvolvidas: Testes controlando o servo motor com o Arduino Tentativa de corrigir a falha detectada no servo Elaborao da base de acoplamento do dispositivo Elaborao do relatrio de progresso
Prximas atividades: Arrumar o servo motor para que tenha condies de uso no projeto, ou comprar um novo se for o caso. Redigir o relatrio de progresso Otimizar o processo de desenho de imagens no software Testar distncia de alcance do sensor
Data: 14/08/2013 Atividades Desenvolvidas: Tentativa de corrigir a falha detectada no servo Elaborao do relatrio de progresso Verificao do raio de alcance do sensor de ultrassom
Prximas atividades: Montar o dispositivo com os novos servos Otimizar o processo de desenho de imagens no software Comear o desenvolvimento do software definitivo
Data: 28/08/2013 Atividades Desenvolvidas: Teste do dispositivo montado o Debug do software o Soluo de problemas dos servos o Soluo de problemas do sensor Discusso da ideia de fazer uma PCI para facilitar a montagem Reunio com o orientador para discusses sobre o dispositivo e relatrio
Prximas atividades: Elaborar o projeto do PCI e execut-lo Elaborao dos cabos necessrios
42
Elaborao dos cabos Elaborao da PCI Detectado problemas com o atual esquema da PCI Discusso de ideias para resolver os problemas do sensor
Prximas atividades: Refazer o projeto da PCI Resolver os problemas detectados com os servos e o sensor
Data: 11/09/2013 Atividades Desenvolvidas: Discusso e soluo com o professor sobre o problema com os servos Descobrimento do problema com a biblioteca Servo.h do arduino
Prximas atividades: Elaborar a monografia final Testar o software junto com o dispositivo Solucionar o problema do servo