15
0 Copyright© 2013 - Kleber Afonso Tiburcio Livro sob N. Registro: 600.233 Livro: 1.149 Folha: 339 ROBÔ INTELIGENTE Técnicas de visão artificial e comando de voz Primeira Edição/2013 (Agosto de 2013) Nenhuma parte desta publicação poderá ser produzida sem autorização prévia e escrita do autor. Este livro publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias. O editor utiliza estas marcas somente para fins editoriais e em beneficio dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos. Entre no nosso grupo para tirar dúvidas e baixar os arquivos e códigos-fonte do projeto. O endereço é: http://tech.groups.yahoo.com/group/build_smart_robot Para entrar no grupo, nós enviaremos um convite para o endereço de e-mail que você usou para comprar este livro. Depois é só seguir as instruções contidas no convite. Se você não receber o convite entre em contato no nosso endereço de e-mail: [email protected] Todos os direitos reservados para: Kleber Afonso Tiburcio

Técnicas de visão artificial e comando de voz Primeira ... · Entre no nosso grupo para tirar dúvidas e baixar os arquivos e códigos-fonte do projeto. ... Algoritmo de detecção

  • Upload
    ledung

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

0

Copyright© 2013 - Kleber Afonso Tiburcio

Livro sob N. Registro: 600.233 Livro: 1.149 Folha: 339

ROBÔ INTELIGENTE Técnicas de visão artificial e comando de voz

Primeira Edição/2013 (Agosto de 2013)

Nenhuma parte desta publicação poderá ser produzida sem autorização prévia e escrita do autor. Este livro publica nomes comerciais e marcas registradas de produtos pertencentes a diversas companhias. O editor utiliza estas marcas somente para fins editoriais e em beneficio dos proprietários das marcas, sem nenhuma intenção de atingir seus direitos.

Entre no nosso grupo para tirar dúvidas e baixar os arquivos e códigos-fonte do projeto. O endereço é: http://tech.groups.yahoo.com/group/build_smart_robot

Para entrar no grupo, nós enviaremos um convite para o endereço de e-mail que você usou para comprar este livro. Depois é só seguir as instruções contidas no convite. Se você não receber o convite entre em contato no nosso endereço de e-mail: [email protected]

Todos os direitos reservados para: Kleber Afonso Tiburcio

1

Sumário

Prefácio – Pág. 3 Sobre o Livro – Pág. 5

Capítulo 1 – Eletrônica 1.1 – Introdução – Pág. 10 1.2 – Acessórios mais utilizados em eletrônica – Pág. 10 1.3 – A Solda – Pág. 10 1.4 – Ferro de soldar – Pág. 11 1.5 – Sugador de solda – Pág. 11 1.6 – Placa de circuito impresso – Pág. 12 1.7 – Percloreto de ferro e caneta para desenho de circuitos – Pág. 12 1.8 – Como fazer uma solda bem feita? – Pág. 14 1.9 – Os componentes eletrônicos – Pág. 15 1.10 – Os componentes que utilizaremos são os seguintes – Pág. 15 1.10.1 – Resistores – Pág. 15 1.10.2 – Cristais – Pág. 16 1.10.3 – Capacitores cerâmicos – Pág. 16 1.10.4 – Circuito Integrado L293D – Pág. 17 1.10.5 – Multímetro – Pág. 17 Capítulo 2 – Mecânica 2.1 – Introdução – Pág. 21 2.2 – Modelix – Pág. 21 2.3 – Motor e caixa de redução – Pág. 22 2.4 – Mini Retífica – Pág. 23 2.5 – Outros acessórios – Pág. 23 Capítulo 3 – PIC 18F452 e LCD Gráfico 3.1 – PIC 18F452 – Pág. 26 3.2 – Gravando um programa no PIC – Pág. 27 3.3 – Compilando e gravando o programa no PIC – Pág. 28 3.4 – LCD Gráfico – Informações gerais – Pág. 29 Capítulo 4 – Projetando e desenvolvendo o circuito eletrônico 4.1 – Introdução – Pág. 32 4.2 – Construindo o circuito – Pág. 32 4.3 – Lista de componentes – Pág. 33 4.4 – Ligar os pontos do circuito – Pág. 34 Capítulo 5 – Montando a estrutura mecânica do robô 5.1 – Introdução – Pág. 38 5.2 – Caixa de redução – Pág. 38

2

5.3 – Montagem do corpo robótico – Pág. 38 Capítulo 6 – Programação do recurso de voz 6.1 – Introdução – Pág. 55 6.2 – Instalação Visual C++ e Visual C# 2010 Express Edition – Pág. 56 6.3 – Registrando o Visual C# – Pág. 65 6.4 – Registrando o Visual C++ – Pág. 68 6.5 – Biblioteca de voz – Pág. 70 6.6 – Instalando o pacote de voz em português – Pág. 78 6.7 – Programando o reconhecimento de voz sintetizada – Pág. 88 6.8 – Código fonte da tela que carrega as palavras – Pág. 91 6.9 – Função de comando de voz – Pág. 95 Capítulo 7 – Programação da visão artificial 7.1 – Introdução – Pág. 98 7.2 – Algoritmo de detecção do movimento dos motores – Pág. 99 7.3 – Instalando o OpenCV – Pág. 99 7.4 – Configurando as bibliotecas do OpenCV – Pág. 104 7.5 – Configurando as opções globais do Visual Studio – Pág. 107 7.6 – Programando a visão artificial – Pág. 110 Capítulo 8 – Programação da porta USB 8.1 – Introdução – Pág. 117 8.2 – Programando a biblioteca USB – Pág. 121 8.3 – Biblioteca de funções – Pág. 125 8.4 – Comandos de voz e coordenadas da webcam – Pág. 129 Capítulo 9 – Programação do Micro-controlador PIC 9.1 – Mikrobasic – Pág. 131 9.2 – Programação para micro-controladores – Pág. 131 9.3 – Programando o LCD Gráfico – Pág. 134 9.4 – O programa para controle dos motores – Pág. 139 9.5 – Entendendo o programa que controla o robô – Pág. 140 Conclusão – Pág. 144 Complemento – Pág. 146         

3

Prefácio

A presente obra trata-se de um trabalho bem elaborado, fundamentado por diversos estudos e pesquisas experimentais no campo da mecatrônica ao longo dos anos. Kleber Afonso Tibúrcio, um grande amigo e exímio técnico em desenvolvimento de software e de hardware, apresenta um conteúdo significante aos que desejam maior conhecimento acerca dessa área tão surpreendente e inovadora.

Atuando ao lado do autor deste interessante livro, posso declarar que as experiências e descobertas obtidas no decorrer de sua carreira profissional foram mais do que importantes para a concretização deste projeto. É notável como ao longo do percurso, as linguagens experimentadas, em suas mais variadas versões, tornaram-se úteis e significativas na conclusão das pesquisas aqui realizadas. Com uma linguagem clara e objetiva, repleto de ilustrações e curiosidades sobre o assunto, a obra visa apresentar técnicas para a construção e a programação de um robô, capaz de responder a diversos comandos manuais e de voz, além de ensinar técnicas de visão artificial.

Louvo a Jesus pela vida do autor e peço que lhe conceda mais e mais sabedoria. Renato Zibordi Junior Consultor de TI Site: www.zibordi.com.br 

 

4

Dedico este livro à minha família, em especial à minha mãe Maria Amélia e aos poucos e verdadeiros amigos. Em memória de Amália e Clóvis

5

Sobre o livro

Este livro ensina algumas técnicas da ciência da robótica, apresentando passo a passo a construção de um robô que tem a capacidade de responder a comandos de voz, enxergar movimentos num ambiente e interagir com o humano. O Robô é um dispositivo eletromecânico, capaz de realizar tarefas de maneira autônoma. Os robôs industriais utilizados nas linhas de produção são a forma mais comum de robôs, porém esta situação esta mudando recentemente devido à popularização dos robôs comerciais limpadores de pisos e cortadores de gramas.

Outras aplicações incluem o tratamento de lixo tóxico, exploração subaquática e espacial, cirurgias, mineração, busca/resgate e localização de minas terrestres. Os robôs também aparecem nas áreas do entretenimento e tarefas caseiras.   O termo robô tem origem na palavra checa robota, que significa “trabalho forçado”. Ao contrário de alguns trabalhos similares de outros autores, este livro tem o enfoque na capacidade do robô em realizar atividades autônomas – sem a interferência direta do homem – e no princípio de que ele possa "pensar por si". Nós abordaremos principalmente, além da montagem mecânica e eletrônica do corpo do robô, a questão da inteligência artificial. Hoje esta ciência ainda está engatinhando (um texto muito interessante sobre I.A. pode ser encontrado no site http://pt.wikipedia.org/wiki/Inteligência_artificial). Ensinaremos essa matéria de forma simples e didática, dando a você uma noção da programação de um robô para que este consiga “enxergar” e fazer distinção de movimentos, “ouvir” e identificar instruções de voz, ter uma conversa razoável com um interlocutor humano e se movimentar de acordo com sua própria “vontade”.   Apesar de ainda estarem engatinhando, já existem projetos caros e complexos sendo desenvolvidos para suprir as deficiências

6

dos sentidos robóticos mais avançados como a visão e audição, para se tornarem futuramente mais parecidos com os mesmos sentidos humanos. Todas essas matérias serão aplicadas no nosso projeto e explicadas passo a passo. Mas então, como funciona a magia de fazer com que o robô decida por tomar certas ações por conta própria? Fazendo as devidas analogias com o mecanismo humano, podemos comparar a estrutura mecânica que sustenta o corpo robótico com os ossos. Os motores que fornecem os movimentos, com os músculos. A eletrônica que alimenta os motores, sensores e assessórios com a energia biológica que impulsiona o organismo humano.   E onde se encaixa o cérebro neste contexto? As máquinas basicamente são burras, um amontoado de peças mecânicas e eletrônicas de que nada servem se não existir uma "alma" por trás comandando tudo. E esta "alma" que dá sentido à máquina se chama programa ou software. A programação de computadores é a ciência que dá vida a uma máquina. E o programador é o arquiteto por trás de tudo isso. O que será ensinado adiante não é fazer de você um exímio programador, mas dar base para que evolua nos programas apresentados aqui, fazendo do seu próprio robô uma peça única. Um breve resumo da História da robótica No século I, um grego chamado Heron de Alexandria teve a idéia de criar um engenho mecânico movido por cordas de pressão que tinha a função de movimentar e controlar bonecos, velas, portas, etc. Este pode ter sido o primeiro computador de tarefas programadas e repetitivas. Outro pioneiro, na década de 1930, Wallace J. Eckert trabalhava num laboratório de computação com uma máquina fabricada pela IBM, ao qual a programação era feita a base de cartões perfurados. Na época, Wallace trabalhava em astronomia e ele programou o computador da IBM para retornar resultados matemáticos e salvar as informações em outros cartões

7

perfurados, processo parecido com os pentes de memória dos dias atuais. Foi ele também quem elaborou as técnicas de depuração de programas, para identificar e corrigir eventuais erros na programação dos cartões, algo bastante arcaico nos dias de hoje, mas na época foi uma inovação. Os seus trabalhos nessa área influenciaram os responsáveis pela fabricação da primeira bomba atômica. Outro programador notável, Alan Turing, é frequentemente mencionado como o pai da ciência da computação. Ele foi responsável por ajudar na elaboração de um programa destinado a quebrar o código alemão ENIGMA durante a Segunda Guerra Mundial, utilizado no computador chamado "Máquina Enigma". O que você precisa obter para realizar o projeto apresentado neste livro? Algumas premissas devem ser atendidas antes de iniciar o projeto. Todos os nossos testes foram feitos nos sistemas operacionais Windows XP, 7 e 8, uma webcam com 640 colunas X 480 linhas e um computador com 2 Gigabytes de memória. É aconselhável que você possua uma máquina semelhante. Utilizaremos três linguagens de programação e vamos explicar passo a passo como trabalhar com elas no nosso projeto. As linguagens de programação são os seguintes: Visual C# 2010 Express Edition Visual C++ 2010 Express Edition Mikrobasic 7 O Visual C++ Express Edition e o Visual C# Express Edition são softwares livres que podem ser usados a vontade, sem nenhum custo. O Mikrobasic 7 é um software fabricado pela mikroElektronika, que disponibiliza uma versão experimental grátis para download. Porém, no nosso projeto, deve-se adquirir a versão completa, pois a experimental é limitada e só permite um programa do tamanho de 2 Kbytes. O Mikrobasic pode ser comprado por US$99,00 (noventa e nove dólares).

8

Você vai descobrir que vale a pena comprar o MikroBasic, pois ele será muito útil em seus próprios projetos e o custo compensa a enorme gama de recursos que possui esta linguagem. Para quem não quiser de jeito nenhum comprar o Mikrobasic, não se preocupe, no site http://tech.groups.yahoo.com/group/build_smart_robot/files/ fornecemos todos os códigos fonte e código compilados para utilizarmos neste projeto. Mais adiante, forneceremos os links de onde poderão ser baixados os softwares. Microsoft Visual C ++ é uma marca registrada da Microsoft Corporation Microsoft Visual C# é uma marca registrada da Microsoft Corporation Mikrobasic é uma marca registrada da mikroElektronika

LEMBRE-SE: COMPRAR SOFTWARE PIRATA É CRIME!

9

Capítulo 1 A Eletrônica

10

1.1 - Introdução A Eletrônica é o ramo da ciência que estuda o uso de circuitos formados por componentes elétricos e eletrônicos, com o objetivo principal de representar, armazenar, transmitir ou processar informações além do controle de processos e servomecanismos. Ela se divide em eletrônica analógica e digital (usada principalmente em computadores). Nosso objetivo aqui não é ensinar eletrônica detalhadamente, mas sim dar base para você realizar facilmente o projeto eletrônico abordados neste livro. 1.2 - Acessórios mais utilizados em eletrônica: A solda, ferro de soldar, placa de circuito impresso, removedor de solda, caneta para desenho do circuito, percloreto de ferro e o multímetro são os acessórios mais comuns na bancada de um hobbysta e de um técnico em eletrônica. Você deve adquirir esses materiais para que coloque em prática os ensinamentos deste livro. 1.3 - A Solda As soldas têm a função de ligar componentes eletrônicos em placas de circuito impresso. As soldas mais comuns são aquelas de estanho de 1 mm, como mostrada na Figura 1.

Figura 1 - Solda em embalagem em formato de tubo, com 4 metros de fio.

11

1.4 - Ferro de soldar Outro acessório obrigatório é o ferro de soldar (mostrado na figura 2). Os ferros de soldar mais comuns são aqueles de potência entre 30 e 40 Watts.

Figura 2 – Ferro de soldar e suporte. 1.5 - Sugador de solda Quando você precisar remover soldas frias ou excessos de solda num circuito, você deve utilizar o sugador (Figura 3). Posicione o ferro de soldar e o sugador próximos à solda a ser removida. Após esta derreter, dispare o sugador e jogue fora o conteúdo removido.

Figura 3 - Sugador de solda.

12

1.6 - Placa de circuito impresso A mais comum placa de circuito impresso (Figura 4) utilizada pelos hobbystas é feita de fenolite ou fibra de vidro e tem a superfície coberta com uma ou duas faces de fina película de cobre ou níquel. A placa tem a função de manter os componentes eletrônicos conectados em série ou paralelo, ativando-os através da passagem da corrente elétrica.

Figura 4 - Placa de Fenolite. 1.7 - Percloreto de ferro e caneta para desenho de circuitos O percloreto de ferro (Figura 5) é um ácido utilizado para corroer a fina camada de cobre das placas de circuito impresso. Para este processo deve ser utilizada também uma caneta (Figura 6) com tinta especial para desenhar as trilhas do circuito eletrônico, que não é corroída facilmente pelo percloreto de ferro.

Figura 5 - Percloreto de Ferro.

13

Figura 6 - Caneta para desenhar trilhas. Para iniciar a corrosão de uma placa de fenolite, deve-se primeiro limpá-la com um pano úmido e depois passar uma palha de aço sobre a superfície metálica. Depois se deve desenhar o circuito com a caneta especial e fazer os furos na placa com uma mini-furadeira elétrica ou um furador manual (Figura 7), abrir o percloreto de ferro e derramar o líquido num vasilhame de plástico (para isso, podem-se utilizar os recipientes de sorvete de 2 litros).

Figura 7 - Furador manual.

14

ATENÇÃO

Cuidado com o manuseio do percloreto, pois além de ser tóxico, ele mancha permanentemente roupas, pisos e azulejos e não sai nem com reza brava! Faça todos os procedimentos num local isolado e longe de crianças e animais. Após o uso, guarde-o em local seguro. O produto pode ser reutilizado diversas vezes.

Mexa um pouco o liquido com um pedaço de madeira. Coloque a placa de circuito já desenhada e devidamente furada imersa no percloreto. Aguarde de 5 a 10 minutos e retire a placa. Você verá que a corrosão ainda não está totalmente concluída, pois existem algumas partes de cobre cor-de-rosa ainda na placa. Mova a placa pra frente e para trás dentro do percloreto até que o excesso de cobre desapareça, ficando apenas as trilhas que foram desenhadas com a caneta especial. Finalmente, remova a tinta preta com um algodão molhado com acetona. 1.8 - Como fazer uma solda bem feita? Uma boa solda deve ser feita com cuidado e algum treino. A solda deve ser fina e de boa qualidade com uma percentagem alta de estanho e de antioxidante (que serve para remover a sujeira ou oxidação dos pontos de solda). Treine a soldagem com as instruções a seguir: . Faça-a em cima de uma mesa, sentado confortavelmente e sob bastante iluminação. . A superfície da placa (item 1.6) e os componentes devem estar bem limpos. Se houver algum resíduo de solda nos componentes usados, remova-os com uma espátula ou canivete. . Depois de o ferro ter esquentado o suficiente para derreter a solda, encoste a ponta deste entre a placa, o componente e a solda, exatamente no ponto onde deve ser feita a soldagem.

. A solda deve ficar com aspecto liso e brilhante, sem a formação