Mestrado Integrado em Engenharia Electrotécnica e de Computadores. 2013/2014 1º Semestre. Portfolio MEEC. Guia de Laboratório.



Documentos relacionados
Como produzir e publicar uma apresentação online dinâmica (Prezi)

8. Perguntas e Respostas

SISTEMA DE CLIMATIZAÇÃO

Alguns truques do Excel. 1- Títulos com inclinação. 2- Preencha automaticamente células em branco

GESTÃO DE INFORMAÇÃO PESSOAL OUTLOOK (1)

Como produzir um texto no computador.

Como enviar e receber correio eletrónico utilizando o Gmail

Manual de Utilizador. Caderno. Recursos da Unidade Curricular. Gabinete de Ensino à Distância do IPP.

Akropole Catequista. Todos os Ficheiros no Akropole Catequista trabalham com uma simples barra de edição, com 4 botões:

MANUAL DO UTILIZADOR DA WEBCAM HP

R O B Ó T I C A. Sensor Smart. Ultrassom. Versão Hardware: 1.0 Versão Firmware: 1.0 REVISÃO

Facturação Guia do Utilizador

Formador: Carlos Maia

Manual do Gestor da Informação do Sistema

Configurando um Sensor

Tabelas vista de estrutura

Boot Camp Manual de Instalação e Configuração

Boot Camp Manual de Instalação e Configuração

Manual do Teclado de Satisfação Online WebOpinião

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Este tutorial tem por objectivo explicar como trabalhar com o Microsoft Office PowerPoint.

Estatística no EXCEL

IRISPen Air 7. Guia rápido. (Windows & Mac OS X)

GUIA RÁPIDO DE INSTALAÇÃO DO SCANSNAP S300

Portátil Série Aspire

ROBERTO OLIVEIRA CUNHA

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Queda livre de um corpo

Manual do Utilizador. Manual do Utilizador Modelo10 no sisgep. Data última versão: Versão : 1.2. Data criação:

Introdução ao CoolEdit c : programa de edição de som digital

Ferramenta de Apoio ao Jogo 2 (Ensino da Leitura) incluído nos Jogos da Mimocas

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

1 o º ciclo. Índice TUTORIAL

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

Conectar diferentes pesquisas na internet por um menu

Manual para criar actividades com o Jclic. Versão 1.0. Manual de Luís Vives Traduzido e adaptado por. Milena Jorge

Aula 4 Estatística Conceitos básicos

Gestor de Janelas Gnome

COMO PROGRAMAR SEU TIME

Como fazer uma pesquisa de Imagens

1. A corrida de vetores numa folha de papel.

Introdução. Conteúdo da embalagem. Especificações. Requisitos de sistema. Versão Portuguesa SWEEX.COM. IP002 Sweex USB Internet Phone

Actividade 1 Uma direcção, dois sentidos...

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

GeoGebra Quickstart Guía Rápida de Referência sobre GeoGebra autor: Markus Hohenwarter

fx-82ms fx-83ms fx-85ms fx-270ms fx-300ms fx-350ms

Ensinar o conceito de regressão linear com o Geogebra

KF2.4 MANUAL DE UTILIZADOR

Ajuda do software OBELISK top2 V3.0

Criar um formulário do tipo Diálogo modal ; Alterar a cor de fundo de um formulário; Inserir botões de comando e caixas de texto;

Treinamento em BrOffice.org Writer

Objectivos Gerais da Aplicação 5 Requisitos Mínimos e Recomendados 5 Processo de Instalação 6

IMPRESSÃO DE DADOS VARIÁVEIS usando Adobe InDesign e OpenOffice.org

Alteração do POC (Decreto de Lei nº. 35/2005) no sispoc

Actividade 2 Intensidade da luz

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Introdução. Conteúdo da embalagem. Especificações. Requisitos de sistema. Versão Portuguesa SWEEX.COM. IP001 Sweex USB Internet Phone with Display

Oficina de produção de tutoriais. TUTORIAL Muan - Pixilation

Mas para iniciar o uso do CRM é necessário efetuar algumas configurações em primeiro lugar.

O Manual do ssc. Peter H. Grasch

AMBIENTE DE PROGRAMAÇÃO PYTHON

1. Criar uma nova apresentação

MANUAL DE UTILIZAÇÃO. EcclesiaSoft v.01

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

Usando o do-file editor Automatizando o Stata

LGTi Tecnologia. Manual - Outlook Web App. Soluções Inteligentes. Siner Engenharia

E ainda uma terceira com as opções deste último exemplo, em que a cor de fundo deve ser verdeescuro.

Como incorporar música. numa apresentação de. PowerPoint?

Primeiros passos das Planilhas de Obra v2.6

Instalação. Conteúdos da embalagem

Instituto Superior Técnico Licenciatura em Engenharia Informática e de Computadores. Projecto de. Arquitectura de Computadores.

Manual do InCD Reader

SISTEMA MEDLINK E-TISS PASSO-A-PASSO (USE JUNTO COM A VÍDEO AULA)

Exposição Matemática Viva (piso 0)

INFORMÁTICA BÁSICA. Word. Professor: Enir da Silva Fonseca

Tutorial :: Introdução ao VHDL em ambiente Design Works

4. Tarefa 16 Introdução ao Ruído. Objetivo: Método: Capacitações: Módulo Necessário: Análise de PCM e de links

ESCOLA EB2,3/S Dr. ISIDORO DE SOUSA

Manual de Transição TWT Sítio de Disciplina para Moodle 2.6

Instalar o computador

Veja em Tela cheia abaixo: Página nº 2

Tutorial ConvertXtoDVD 3

Catálogo Nacional de Compras Públicas. Manual de Fornecedores

Sistema Integrado de Bibliotecas da Universidade de Lisboa

7. Gestão de ficheiros em X Window O Konqueror

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Dinâmica de um Sistema de Partículas Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU

EW1085R2 Recetor Bluetooth MICRO USB Classe 2

SIMULAÇÃO DO MOVIMENTO DE QUEDA DE UM CORPO COM E SEM RESISTÊNCIA DO AR

1 ACESSO PARA SECRETÁRIA CONFIGURAR HORÁRIOS DE ATENDIMENTO BLOQUEANDO E HABILITANDO HORÁRIOS PRÉ-DEFININDO PARÂMETROS DE

Esse produto é um produto composto e tem subprodutos

Compositor de Impressão do QGIS

Planeamento e Seguimento de Projectos

RESPOSTAS DAS QUESTÕES ANULADAS OU COM MUDANÇA DE GABARITO

Portal do Projeto Tempo de Ser

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

Carrera Pessoal Guia de uso

CADASTRO DE OBRAS E PROJETOS DE ENGENHARIA

Manipulação de Células, linhas e Colunas

Manual de Utilização do PDV Klavix

Transcrição:

Mestrado Integrado em Engenharia Electrotécnica e de Computadores 2013/2014 1º Semestre Portfolio MEEC Guia de Laboratório Sessão 3 Sensores, dados e decisão Preparado por João Miranda Lemos Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Portfolio MEEC Guia de Laboratório Pag. 1

Sessão nº 3 Sensores, dados e decisão Objectivos O objectivo desta sessão é a realização de ensaios para a exploração dos sensores. É utilizado o bloco data logger para adquirir e representar graficamente dados, gravando-os em seguida num ficheiro. Utilização do MATLAB para representar os dados. Utilização dos dados numéricos para programar o robot: Programa de paragem suave, em que o robot ajusta a sua velocidade tendo em conta a distância a um obstáculo. Escrita de um relatório em LATEX com a descrição dos ensaios. Elementos a entregar no final sa sessão No final desta sessão, cada grupo deve entregar um relatório com a descrição dos ensaios realizados. O relatório deve ser em formato pdf com no máximo 2 páginas. Descrição do trabalho Sensores e dados O robot determina o que se passa no mundo exterior através de sensores. Sensores são dispositivos electrónicos que permitem gerar sinais eléctricos ou digitais que traduzem a medida de uma variável física. Figura 3-1. Sensores disponíveis no laboratório. Da esquerda para a direita: Som, ultrasónico (distância) e de intensidade luminosa. A figura 3-1 mostra os três tipos de sensores que estão disponíveis no robot do laboratório: O sensor de som mede a intensidade do som. De um modo muito simplista, podemos pensar nele como um microfone. O sensor de som está ligado ao porto 2 do NXT. O sensor ultrasónico mede a distância a que se encontra um obstáculo para o qual esteja apontado. Também de maneira muito simplista, um dos orifícios emite um som, cujo eco no obstáculo é detectado por um dispositivo colocado no outro orifício. A distância ao obstáculo é estimada a partir do tempo entre a Portfolio MEEC Guia de Laboratório Pag. 2

emissão do som e a recepção do eco. O sensor ultrasónico está ligado ao porto 4 do NXT. O sensor de intensidade luminosa mede a intensidade luminosa reflectida por uma superfície. Dispõe de uma fonte de luz (LED) para melhorar a sua capacidade de medida. Consoante a superfície for mais ou menos clara, reflectirá mais ou menos luz, gerando o sensor uma medida da luz reflectida que lhe chega. O sensor de intensidade luminosa está ligado ao porto 3 do NXT. Quando estão em funcionamento, os sensores geram uma sequência de números que correspondem às medidas que vão sendo sucessivamente feitas. Matemáticamente, estas medidas são uma função do tempo. Dizemos que se trata de um sinal. Um sinal não é mais do que uma função em que a variável independente é o tempo e a variável dependente é a medida de uma variável. 10 9 8 7 6 5 4 3 2 1 0 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Tempo [s] Figura 3-2. Exemplo de um sinal discreto. No instante 1s o sinal tem o valor 5 (numas dadas unidades), no instante 2s tem o valor 6, e assim sucessivamente. Na prática não fazemos medidas continuamente, mas sim espaçadas de um intervalo de tempo. Por exemplo, podemos fazer a leitura do valor medido pelo sensor de 1 segundo em 1 segundo, tal como se mostra na figura 3-2. Estes sinais em que o tempo é uma sequência de instantes (e não uma variável contínua) dizem-se sinais discretos. Designa-se por intervalo de amostragem (sampling time) o intervalo de tempo entre duas leituras sucessivas. Nos casos que consideraremos o intervalo de amostragem é constante (em geral, pode não ser constante, dependendo das aplicações). Portfolio MEEC Guia de Laboratório Pag. 3

O inverso do intervalo de amostragem é a taxa de amostragem (sampling rate). Se o intervalo de amostragem for expresso na unidade [segundo], a taxa de amostragem é expressa na unidade [Hertz]. Programa para decidir se um objecto é claro ou escuro O objectivo deste exercício é escrever e testar um programa que faça repetidamente a leitura do sensor de intensidade luminosa e que emita um som dizendo Light se a superfície for mais clara, e outro dizendo Dark se for escura. Usando a paleta de programação (régua que contém os ícones dos diversos blocos e que se encontra no lado esquerdo da área de trabalho) reduzida que utilizou construa o programa cujo diagrama de blocos se encontra na figura 3-3. Figura 3-3. Programa para decidir se uma superfície é clara ou escura. Se a superfície for escura o altifalante diz Dark, e se for clara diz Light. Figura 3-4. Ícone do bloco de ciclo na paleta reduzida. Para escrever este programa abra a paleta reduzida e comece por arrastar e posicionar na área de trabalho o bloco de ciclo, cujo ícone se mostra na figura 3-4. Tal como foi estudado no trabalho de laboratório 1, este bloco força a execução repetida dos blocos colocados no seu interior. A configuração de defeito é Ilimitada, o que significa que o ciclo é repetido sem parar (até que o NXT seja desligado). Em seguida, coloque no interior do ciclo um bloco de decisão, cujo ícone se mostra na figura 3-5. Portfolio MEEC Guia de Laboratório Pag. 4

Figura 3-5. Ícone do bloco de decisão na paleta reduzida. O bloco de decisão permite executar uma de duas sequências de blocos, consoante o valor da variável (por exemplo a leitura de um sensor) a que está associado. Figura 3-6. Janela de configuração do bloco de decisão. A figura 3-6 mostra a janela onde se escrevem os parâmetros que configuram o bloco de decisão. Deve escolher o sensor de luz no menu indicado com a oval vermelha. Os outros parâmetros são os de defeito. Repare que o porto escolhido para ligar o sensor é o 3. Reapare ainda que, do lado direito pode escolher o valor de um limiar e, ainda, que ramop se segue como resultado da comparação do sinal lido com o limiar. Finalmente, acrescente os blocos de altifalante com os sons a serem gerados em cada um dos casos ( Dark e Light ). Estes blocos devem colocados nos dois ramos da saída do bloco de decisão. Para testar o programa, coloque o NXT directamente sobre a mesa de trabalho e corra o programa. Passe com a folha de cartolina com a fita preta de que dispõe (deve estar em cima da sua bancada) e oiça o altifalante. Está ou não de acordo com o que espera? Coloque o bordo entre a fita preta e o papel branco na mesa, sob o sensor e desloqueo lentamente para um lado e outro. Observe o que se passa. Experimente vários valores para o limiar (deve reconfigurar o bloco de decisão). Programa para decidir se um obstáculo está mais perto ou mais longe do que uma dada distância. Desenvolva agora um programa semelhante para decidir se um obstáculo (por exemplo um caderno) está mais perto ou mais longe do que uma dada distância. Para tal, use o bloco de decisão associado ao sensor ultrasónico de distância. Para começar, tome como distância padrão 40cm. Se o obstáculo estiver a uma distância menor do que 40cm o porgrama deverá dizer Backward ; se estiver a mais de 40cm deverá dizer Forward. Teste o programa. Este programa deverá ser descrito no relatório. Portfolio MEEC Guia de Laboratório Pag. 5

Programa para registo de dados O NXT-G (linguagem de programação gráfica do NXT) inclui um bloco que permite registar dados e gravá-los num ficheiro de texto para tratamento posterior. Por exemplo, podemos representar graficamente os dados para incluir num relatório, ou fazer cálculos com eles. Neste exercício vamos utilzar o bloco de aquisição de dados do NXT-G para registar em ficheiro dados lidos pelos sensores. Vamos começar pelo sensor de intensidade luminosa e depois repetiremos o exercício com os sensores de distância e de intensidade sonora. Figura 3-7. Programa para adquirir dados lidos com o sensor de intensidade luminosa. A figura 3-7 mostra o programa que permite aquirir dados lidos com o sensor de intensidade luminosa. Figura 3-8. O ícone Avançado na paleta completa. Para obter o bloco de aquisição de dados, clique no ícone Avançado na paleta completa, o qual se mostra na figura 3-8. Ao clocar neste ícone, ele é expandido, tal como se mostra na figura 3-9. Escolha o ícone indicado pelo círculo a vermelho nesta figura. Figura 3-9. Clicando no ícon Avançado na paleta completa este expande-se tal como se mostra na figura. O ícon Start Datalog, indicado pela oval a vermelho, permite adquirir dados. Não confundir com o ícon End Datalog que não é necessário usar neste trabalho e que tem uma representação gráfica semelhante. Portfolio MEEC Guia de Laboratório Pag. 6

Figura 3-10. Janela de configuração do bloco de aquisição de dados. A janela de configuração do bloco de aquisição de dados mostra-se na figura 3-10. Nesta janela deve definir os parâmetros que definem a aquisição de dados: O nome do ficheiro onde serão guardados os dados resultantes do ensaio; A duração do ensaio; O ritmo de amostragem; Qual o sensor relativamente ao qual se faz a aquisição de dados. Os três primeiros itens estão do lado esquerdo da janela e a escolha do sensor encointra-se assinalada pela oval encarnada. Figura 3-11. Representação gráfica dos dados adquiridos com o sensor de luz. Corra agora o programa. Abre-se uma janela com o aspecto da figura 3-11. Passe sucessivamente a cartolina branca com a fita branca à frente do sensor. Observe a medida da intensidade luminosa reflectida no gráfico enquanto ele está a ser traçado. Repare que a lista de números que traduzem estas medidas sucessivas se pode ver na Portfolio MEEC Guia de Laboratório Pag. 7

tabela na parte inferior da imagem. Grave o ficheiro usando o tab file na parte superior esquerda. Repita o ensaio com os sensores de distância e de intensidade sonora, registando os dados em ficheiros. Observações: Quando grava o ficheiro tenha em conta o directório onde ele fica! O número de pontos que gravamos é o produto do número de pontos por segundo vezes a duração em segundo da experiência. Se não tivermos cuidado, este número pode ser estupidamente grande e exceder a memória disponível. Para os efeitos deste trabalho, um número total de 100 a 200 pontos é mais do que suficiente. Esta observação mostra que o adágio popular Bem aventuados os sábios num elevador porque o saber não ocupa lugar não é verdadeiro. De facto, contrariamente ao que se diz, o saber ocupa lugar! Se a memória do NXT ficar cheia pode sempre apagar os programas e dados que nela se foram acumulando. Lembre-se de manter sempre cópias de segurança na sua pen. Representação dos dados no MATLAB Fizemos uma experiência, registámos os resultados num ficheiro e agora queremos manipular os dados, por exemplo para os analisarmos. Para isso vamos introduzir um novo programa que se chama MATLAB, e que o irá acompanhar ao longo de todo o curso e e mesmo da sua vida profissional (dou-lhe um exemplo: O desenvolvimento dos modelos dos carros da Toyota, para testes em simulação, começa por ser todo feito em MATLAB). É possível controlar o NXT a partir do MATLAB (terá oportunidade de fazer isto em unidades curriculares mais avançadas do curso) mas, para já, iremos fazer uma coisa muito mais simples: Simplesmente, iremos gerar um gráfico com os dados usando o MATLAB. Antes de começar propriamente a usar o MATLAB vamos ver o formato do ficheiro de dados gerado pelo NXT-G. Este ficheiro é um ficheiro de texto. Isto não é um formato muito eficiente (há maneiras de representar os dados usando menos espaço, o que é importante quando trabalhamos com milhões de milhões de dados), mas tem a vantagem de podermos manipulá-lo facilmente. Copiue o ficheiro de dados que obteve com o NXT-G e trabalhe com a cópia. Assim, mantém os dados originais em segurança e não tem de repetir a esperiência se Portfolio MEEC Guia de Laboratório Pag. 8

cometer algum erro. Abra o ficheiro de dados (a cópia) com o editor Notepad. Isto pode ser feito facilmente clicando duplamente sobre o nome do ficheiro. Figura 3-12. Um aspecto do ficheiro de dados gerado pelo NXT. A figura 3-12 mostra um aspecto do ficheiro. Há uma parte inicial com um cabeçalho em que se incluem diversas informações sobre a experiência. Depois aparecem duas listas de números. Cada elemento da lista mais à esquerda é o instante em que se faz a aquisição de uma dada leitura da medida do sensor e o elemento mais à direita é a medida. Queremos importar estas listas para o MATLAB para as podermos utilizar. Há uma dificuldade: Enquanto o NXT separa a parte inteira da parte decimal por uma vírgula, o MATLAB utiliza um ponto. Usando o Notepad, faça um replace de todas as vírgulas por pontos (isto afecta o cabeçalho, mas como não vamos utilizar, não nos preocupamos). Em seguida, seleccione todos os números da lista (e só eles) e, mantendo a tecla CTRL premida, carregue uma vez na tecla C (faça CTRL-C). Isto copia todos os caracteres que tinha seleccionado para uma memória intermédia. Abra agora o MATLAB. Na janela do MATLAB surge o sinal de prompt >. Isto significa que o MATLAB está à espera que lhe demos um comando. O MATLAB é um programa em que se podem definir variáveis matriciais (tabelas de números) que incluem, como caso particular, vectores. É então possível executar operações sobre as variáveis, por exemplo multiplicar matrizes, somar todos os elementos de um vector, etc. (etc., etc.... Se fizer uma busca na Web por MATLAB tutorial, aparece-lhe uma enorme lista de tutoriais, muitos excelentes. Não queira aprender tudo de uma vez só.). Portfolio MEEC Guia de Laboratório Pag. 9

Vamos definir uma matriz (uma tabela de números) em que a primeira coluna são os instantes de tempo em que se fizeram as medidas e a segunda coluna são as medidas. Vamos chamar Z à matriz (poderíamos ter chamado outras coisas; qualquer sequência de letras e de números que comece por uma letra serve. Atenção o MATLAB distingue maiúsculas de minúsculas: Z não é a mesma variável que z). Para definir a variável Z damos o comando (seguido de <return>: > Z=[ <CTRL-v> ]; Quando escrevemos <CTRL-v> (mantendo a tecla CTRL premida, carregue uma vez na tecla V ) a tabela de números que tinhamos copiado aparece. Se der o comando who o MATLAB mostra todas as variáveis que estão definidas. Neste caso, apenas a vari vel Z aparece. O que acontece se escrever apenas Z (seguido de <return>)? E se escrever Z;? Qual é o papel do ;? Vamos agora definir duas variáveis. A uma chamamos tempo e tem todos os instantes de tempo que se encontram na primeira coluna. A outra chamamos medida e tem todas as medidas que se encontram na segunda coluna. Fazemos isto simplesmente escrevendo > tempo=z(:,1); > medida=z(:,2); Se escrevéssemos Z(3,4) estávamos a referir-nos ao elemento da linha 3, coluna 4 da matriz Z. Quando escrevemos Z(:,2) estamos a referir-nos a todas as linhas da coluna 2. Faça novamente who. Aparecem as novas variáveis. Para representar a variável medida em função da variável tempo damos o comando: > plot(tempo,medida); Surge imediatamente o gráfico. Se quiser ajustar as escalas dos eixos, use o comando > axis([xmin, xmax, ymin, ymax]); em que xmin tem o valor numérico do valor mínimo do eixo e assim sucessivamente. Se quiser adicionar uma legenda no eixo use xlabel( Tempo [s] ) ylabel( Intensidade luminosa ) Se quiser fazer um gráfico bolinhas nos pontos, use Portfolio MEEC Guia de Laboratório Pag. 10

> plot(tempo,medida, o ); Se quiser fazer um gráfico simultâneamente com uma linha contínua e bolinhas, desenhe um deles, dê o comando hold on e a seguir desenhe o outro gráfico que aparecerá sobreposto. Para gerar um ficheiro eps com o gráfico, no tab File da figura escolha Export setup. A seguir clique em Export no lado direito da janela que se abre. Finalmente escolha o nome do ficheiro e, na parte inferior, o tipo (eps). Gere ficheiros eps com os dados dos 3 ficheiros que ensaiou. Deverá incluir estes ficheiros no seu relatório. Linhas de dados (data wires) Uma linha de dados é uma ligação que se pode estabelecer num programa em NXT-G (a linguagem gráfica de programação do LEGO NXT) entre dois blocos por forma a transmitir informação de um para o outro. A linha de dados permite que dados gerados por um bloco alterem os parâmetros de configuração de outro bloco. Vamos a seguir experimentar um exemplo em que os dados gerados por um sensor de distância afectam o parâmetro de velocidade do bloco que controla os motores. Concretamente, neste exemplo vamos fazer com que um robot que se dirige para uma parede vá reduzindo a sua velocidade de modo a que pare quando estiver junto à parede. Para tal, vamos fazer com que o parâmetro de potência do bloco do motor (que varia entre 0 e 100%) seja igual à distância à parede medida pelo sensor ultrasónico em centímetro. Assim, como se mostra na figura 3-13, se a distância for de 80cm, os motores movem-se a 80% da potência. Se esta distância fôr de 20cm, os motores movem-se apenas a 20% da potência, e assim sucessivamente. 80 cm Robot O robot move-se a 80% da potência 20 cm Robot O robot move-se a 20% da potência Parede Figura 3-13. O robot move-se move-se cada vez mais lentamente à medida que se aproxima da parede. Portfolio MEEC Guia de Laboratório Pag. 11

Esta situação pode ser representada através do diagrama de blocos da figura 3-14 que mostra os dados de saída do sensor (uma sequência de números que corresponde às sucessivas leituras do sensor) a serem transmitivos através da linha de dados, constituindo os dados de entrada do bloco motor que afectam o parâmetro de potência deste bloco. Bloco do sensor ultrasónico Leituras do sensor Dados de saída do sensor Parâmetro de potência Bloco motor Dados de entrada Figura 3-14. Linha de dados entre o sensor ultrasónico e o bloco motor. Nota: Repare que o bloco de sensor ultrasónico pode gerar um valor que é maior do que o máximo do parâmetro de potência do motor (que é dado por 100) dado que o sensor pode medir distâncias até 255cm. De facto isto não é um problema dado que o próprio NXT-G garante (de um modo transparente para o utilizador) que o parâmetro de potência toma o valor 100 mesmo que os dados de entrada sejam superiores a esse valor. Programa de paragem suave O programa de Paragem Suave deve colocar o motor a rodar a uma velocidade elevada (a 75% da potência), devendo a velocidade diminuir proporcionalmente à distância, expressa em centímetro, até se anular quando o robot estiver junto à parede. Para escrever este programa, execute os seguintes passos: 1. Crie um programa denominado ParagemSuave. 2. Arraste um bloco de ciclo para a área de trabalho e mantenha todas as definições de defeito deste. 3. Arraste o bloco do sensor ultrasónico da paleta completa (tal como se mostra na figura 3-15) para o interior do bloco de ciclo. Para ter acesso à paleta completa clique no tab central na base das paletas de programação, tal como se mostra na figura 3-15. Portfolio MEEC Guia de Laboratório Pag. 12

B C A Figura 3-15. Clique em A para ter acesso à paleta completa, depois em C e, finalmente arraste o ícone do sensor de distância ultrasónico para o interior do bloco de ciclo que tinha colocado previamente na área de trabalho. No primeiro trabalho de laboratório usámos um bloco que permitia usar o sensor de distância com base numa decisão lógica (espera até que a distância medida pelo sensor esteja abaixo de um dado valor). Neste terceiro trabalho vamos usar a medida dada pelo sensor, pelo que necessitamos de um outro bloco, que fomos buscar à paleta completa de programação. O sensor ultrasónico pode dar a medida da distância em centímetro ou polegada, dependendo de como está programado. 4. Escolha Centímetros no painel de configuração do sensor ultrasónico (figura 3-16). Portfolio MEEC Guia de Laboratório Pag. 13

Figura 3-16. O painel de configuração do sensor ultrasónico dá por defeito a distância em polegadas. Modifique-o para escolher centímetros na zona indicada pela elipse vermelha. 5. Arraste um bloco motor e coloque dentro do ciclo, a seguir ao sensor ultrasónico e no seu painel de configuração defina a duração como ilimitada (figura 3-17). Figura 3-17. O painel de configuração do motor deve ser alterado para ter duração ilimitada na zona indicada pela elipse vermelha. Após ter colocado os três blocos (ciclo, sensor ultrasónico e motor), o programa deve ter o aspecto da figura 3-10. É agora necessário ligar a linha de dados entre o sensor ultrasónico e o bloco motor. O bloco do sensor tem já visível na sua parte inferior um contacto onde podemos ligar a linha de dados, mas o bloco motor não tem o contacto para ligar esta linha. Os contactos do closo motor podem no entanto ficar visíveis clicando na parte inferior do bloco. Figura 3-18. O aspecto do programa antes de ser ligada a linha de dados. Portfolio MEEC Guia de Laboratório Pag. 14

Figura 3-19. Zona onde se deve clicar para que a régua de contactos do bloco motor ficar visível ( ranhura indicada pela elipse). 6. Abra a régua de contactos do bloco motor clicando na ranhura da base do bloco, tal como se mostra na figura 3-19. 7. O programa dever ficar com o aspecto da figura 3-20. Figura 3-20. Aspecto do programa após expandir a régua de contactos do bloco do motor. Cada um dos contactos que existem nas réguas de contactos correspondem a parâmetros (ou variáveis) que podem ser lidos ou alterados. Do lado esquerdo da régua estão os contactos que correspondem a alterar um parâmetro e, do lado direito, os contactos que permitem ler os parâmetros. Quando queremos comunicar um parâmetro de um bloco a outro bloco, ligamos um fio do contacto do lado direito do primeiro bloco que corresponde ao parâmetro que queremos transmitir ao contacto do lado direito da régua do segundo bloco, que corresponde ao parâmetro que aueremos alterar. Esta alteração é feita enquanto o programa corre. Para sabermos a que variável corresponde um dado contacto podemos olhar para o símbolo que existe junto ao contacto e/ou passar com o cursor do rato por cima dele. Portfolio MEEC Guia de Laboratório Pag. 15

A B D C Fig. 3-21. Contactos de entrada e de saída e ligação entre eles. É deste modo que se passam valores numéricos de um bloco para outro enquanto o programa corre. Tenha em atenção o seguinte: Os blocos correspondem cada um a uma instrução do programa e são colocados em sequência, significando que as instruções são executadas uma após a outra. A ordem de execução das instruções pode ser alterada pelos blocos de ciclo (quando se chega ao fim da sequência de instruções no seu interior regressa-se ao início) ou de decisão (escolhe uma de duas possíveis sequências de instruções, dependendo do valor assumido por uma variável). Os blocos operam sobre dados que lhe são transmitidos por blocos anteriores e, por sua vez, calculam novos dados que podem ser usados por blocos (instruções) posteriores na ordem de execução. A figura 3-21 ilustra esta ideia. O contacto (A) está à direita na régua de contactos do sensor e tem em cada instante o valor da medida feita pelo sensor (que varia no tempo). No programa de paragem suave a medida do sensor deve ser comunicada ao bloco que controla o motor. Por isso estalecemos uma linha de ligação (B) entre (A) e o contacto do bloco motor que corresponde à potência do motor (D). Este contacto é um contacto de entrada do valor para o motor. Quer dizer, o valor que se encontra no contacto (A) (e que lá foi escrito pelo sensor) vai ser escrito em (C). Por isso é o contacto da esquerda que corresponde ao parâmetro potência (cujo símbolo é um ponteiro num mostrador). No contacto (C) está o valor da potência do motor, que não utilizaremos. Para vermos como é que isto se programa na prática, vamos continuar a seguir os nossos passos de programação: Portfolio MEEC Guia de Laboratório Pag. 16

Figura 3-22. Ligação entre o sinal de saída gerado pelo sensor e o sinal de entrada da potência do motor. Figura 3-23. Aspecto final do programa de paragem suave. 8. Coloque o ponteiro do rato sobre o contacto de saída do sensor. O cursor modifica-se e fica parecido com um rolo de fio. 9. Clique o botão esquerdo do rato. Mantendo-o clicado surge um fio amarelo. Arraste-o até ao contacto de entrada correspondente à potência do motor e liberte-o. Surge um fio amarelo que liga os dois contactos, tal como se mostra na figura 3-22. 10. O programa está pronto a funcionar, mas podemos dar-lhe um aspecto mais compacto ocultando os contactos do motor que não estão a ser usados. Para isso clique no bordo inferior do bloco do motor, na zona usada para expandir a régua de contactos. O diagrama adquire o aspecto da figura 3-23. Se se atrapalhar a desenhar o fio de ligação pode sempre carregar na tecla <Esc> (o fio já desenhado desaparece) e repetir. Se, quando clicar na zona de expansão, a ligação não adquirir o aspecto directo da figura 3-22, pode apagá-la (coloque o rato no contacto final e proma <Esc>) e repetir a ligação. Portfolio MEEC Guia de Laboratório Pag. 17

Teste agora o programa. Comece por testar o programa em cima do cubo de testes. Se correr o programa a correr, os motores devem começar a funcionar à velocidade máxima. Aproxime progressivamente um obstáculo (por exemplo um caderno) do sensor de distância. A velocidade deverá diminuir progressivamente até parar quando o caderno se encosta ao sensor. Repare que, devido ao atrito, quando o robot estiver assente no chão, ele parará antes de o obstáculo tocar no sensor. Quando o teste de bancada der os resultados esperados, desligue o cabo USB, coloque o robot longe de uma parede e apontado para ela e corra o programa. O robot deverá avançar para a parede, começando a reduzir a velocidade progressivamente a partir do instante em que se encontra a menos de 1m da parede, devendo parar junto à parede. Se o robot chocar com a parede, considerede-se chambado nesta cadeira! Processar o sinal do sensor O NXT-G dispõe de blocos que permitem manipular matematicamente dados, somando-os, multiplicando-os ou fazendo outras operações (por exemplo tomar o valor absoluto). A isto chama-se processar o sinal (a função do tempo que, a cada instante de tempo de amostragem associa um dado) associado aos dados. Neste programa vamos enganar o robot e fazê-lo pensar que está mais perto da parede do que julga. Para tal vamos multiplicar a medida da distância à parede por uma constante (dizemos um ganho ), por exemplo 0,5. Assim, quando o robot está a 80cm da parede, a potência é de apenas 40%, o que faz com que a velocidade do robot seja menor em cada caso do que na situação anterior. Para fazer isto, precisamos de dois blocos: Um bloco que gere uma constante; Um bloco que faça uma multiplicação de duas variáveis. Estes blocos podem ser obtidos na paleta completa, tal como se mostra na figura 3-24. Figura 3-24. Blocos para operações matemáticas na paleta completa. Operações matemáticas (círculo da esquerda) e geração de uma constante (círculo da direita). Portfolio MEEC Guia de Laboratório Pag. 18

Modifique o programa de paragem suave introduzindo, depois do bloco do sensor e antes do bloco do motor um bloco de constante e, depois um bloco de multiplicação. Configure estes blocos escolhendo a operação de multiplicação no bloco de operação matemática e dando o valor da constante 0,5 no bloco que gera a constante. Repare que na configuração do bloco constante deve indicar o tipo de constante como número. Expanda as réguas de contactos dos dois blocos e faça as ligações necessárias (usando o método explicado no exemplo sobre o programa de paragem suave) para multiplicar o sinal do sensor pela constante e aplicar o resultado da multiplicação à potência do sensor. O programa tem o aspecto que se mostra na figura 3-25. Figura 3-25. Programa de paragem suave modificado para incluir a multiplicação por uma constante do sinal do sensor. Teste o programa. Considere diversos valores para a constante. Considere a seguinte questão: Suponha que o sensor dá a distância à parede em polegadas. Admita válida a aproximação de 1 polegada = 2,5 cm. Escolha a constante por forma a que, neste caso (em que o sensor dá a medida em polegadas) o programa se comporte exactamente como o programa de paragem suave, em que potência do motor é igual à distância à parede em centímetro. No seu relatório deve justificar o valor da constante que usou. Houve um projecto de cooperação entre a NASA e a Agência Espacial Europeia em que foram investidos milhões de euros (ou de dólares, se quiser) para enviar uma sonda a Marte. A sonda perdeu-se (possivelmente com os empregos dos engenheiros envolvidos) porque uma das equipas de projecto trabalhava em centímetro e a outra em polegadas e se esqueceram de que havia um factor de conversão pelo meio. Não contribua para o anedotario da Engenharia, tenha muita intenção com as unidades! Portfolio MEEC Guia de Laboratório Pag. 19

Realimentação: Seguir um alvo Agora vamos utilizar o que aprendemos para fazer uma coisa verdadeiramente interessante! Vamos fazer com que o robot siga um obstáculo que se desloca numa linha recta mantendo uma distância que especificamos. Se o alvo avança um bocado, o robot avançará até estar à distância especificada. Se o alvo recuar, o robot também recuará até estar de novo à distância especificada. A chave para conseguir isto é uma técnica chamada retroacção (feedback). A retroacção é uma das ideias mais importantes da Engenharia Electrotécnica e de Computadores. Mas antes de ser inventada pelos engenheiros, foi inventada pela própria Natureza. É de facto a retroacção que permite, por exemplo, garantir que a temperatura do corpo humano permaneça muito perto dos 36,5 graus celsius, quer para esquimós cercados por ambientes a uma temperatura de -20 graus, quer para habitantes dos trópicos, com uma temperatura de +40 graus. A retroacção permite projectar sistemas que se comportam da mesma maneira quando submetidos a perturbações que os desviam do comportamento desejado. Permite ainda fazer o projecto de modo robusto, quer dizer, quando o nosso conhecimento sobre o sistema está errado dentro de uma certa margem. Recordemos o nosso objectivo: O robot siga um obstáculo que se desloca numa linha recta mantendo uma distância que especificamos. Se o alvo avança um bocado, o robot avançará até estar à distância especificada. Se o alvo recuar, o robot também recuará até estar de novo à distância especificada. Uma possibilidade seria estudar a geometria do robot e calcular quanto tempo os motores devem ser actuados para andar a distância de que o alvo se deslocou (que é conhecida por subtracção entre a distância a que estava antes e a que está agora ). Temos no entanto uma dificuldade insuperável nesta abordagem: Para um dado valor do índice de potência, a maneira como o robot se desloca depende não apenas da geometria do robot (o raio das rodas), mas também da carga das baterias que vai variando com o uso. Se a carga das baterias for menor, o robot deslocar-se-á menos do que que se ela for mais elevada para o mesmo tempo em que os motores são actuados. Esta solução não seria robusta relativamente à incerteza no nosso conhecimento do movimento do robot, devida à carga da bateria. Uma outra possibilidade será imitar uma pessoa que siga outra. Através dos olhos (o sensor), a pessoa vê a que vai à frente e determina a distância. Se a pessoa alvo avança, a que se gue vai avançando até ajustar a distância ao valor desejado. Isso é feito não através do que as pessoas sabem sobre a geometria da marcha, mas pura e simplesmente comparando a distância a que se encontram do alvo e ajustando a sua posiução tendo em conta o erro em relação ao desejado, por tentativa e erro. Se avançarem de mais, percebem isso e recuam ligeiramente, e assim sucessivamente. Portfolio MEEC Guia de Laboratório Pag. 20

A ideia é então comparar a distância medida pelo sensor com um valor desejado (chamemos-lhe referência ) e construindo um erro. A potência do motor será proporcional ao erro (diferença) entre estas duas quantidades. O sistema opera da seguinte maneira: Quando a distância medida é igual à desejada o erro é zero e a potência do motor é nula, o que faz parar o robot. Quando a distância aumenta o erro aumenta (e fica positivo) forçando o robot a avançar também (porque a potência é proporcioonal ao erro), reduzindo o erro. Quando a distância diminui o erro aumenta em valor absoluto mas fica negativo. O motor roda cada vez mais depressa, mas tem de rodar em sentido contrário por o erro ser negativo para repor a distância. A figura 3-26 mostra um diagrama de blocos que traduz este método. Neste diagrama, cada seta traduz uma variável e cada bloco traduz uma operação matemática efectuada sobre as variáveis associadas às setas (ou seta) que entra no bloco. Distância de referência + - Erro Multiplica por ganho (4) Potência Robot Distância à parede Medida da distância à parede Sensor de distância Figura 3-26. Diagrama de blocos do sistema de controlo por realimentação (feedback) da posição do motor. A azul mostram-se as partes correspondentes ao programa e a amarelo as partes físicas Figura 3-27. O programa seguir alvo que realiza o diagrama da figura 3-26. Portfolio MEEC Guia de Laboratório Pag. 21

A figura 3-27 mostra o programa que permite seguir o alvo e que corresponde ao diagrama de blocos da figura 3-16. Repare que na figura 3-26 as partes que correspondem a equipamentos físicos estão pintadas a amarelo e que as partes correspondentes a programas de computador (dizemos: ao software ) estão pintadas a azul. O sistema global é pois uma combinação de equipamentos físicos e de programas de computador que realizam operações matemáticas (neste caso). Este é o princípio dos Cyber-Physical Systems (neste caso um exemplo muito simples). Comece por escolher para o ganho proporcional, que amplifica o erro, o valor de 4. Varie-o em seguida e interprete o que vê. Tome como distância de referência 40 cm. Repare que o parâmetro de potência do bloco motor tem de ser positivo, pelo que o erro amplificado é passado por um bloco que calcula o valor absoluto. Para além disso, o erro amplificado (poderia ser o erro) é passado por um bloco que o compara com zero gerando um sinal que asume apenas dois valores (dizemnos: um sinal lógico binário) e que é usado para escolher o valor do parâmetro do bloco motor que dá a direcção. Interprete o programa da figura 3-27 tendo em conta os comentários anteriores e o diagrama de blocos da figura 3-26. Programe o diagrama da figura 3-27 (tem de configurar adequadamente os blocos). Teste primeiro o programa na bancada, em cima do bloco de testes. Coloque um caderno a cerca de 40 cm do sensor. Os motores deverão parar. Se afastar o bloco as rodas deverão rodar de tal modo que o robot se aproximaria do caderno se estivesse apoiado no chão. Coloque agora o bloco a menos de 40 cm. As rodas deverão rodar em sentido contrário, com uma velocidade que é tanto maior quanto mais a distância difere dos 40 cm de referência. Quando o teste estiver a dar os resultados esperados, coloque o robot no chão e avance e recue o caderno à frente dele. Repare que quando o robot recua o faz muitas vezes sem ser numa linha recta. Porque é que isto acontece? Escrita do relatório Escreva em LATEX um relatório abordando os seguintes pontos: 1. Descrição e validação do programa que diz Backward se um obstáculo está a menos do que 40cm e diz forward se estiver a mais. 2. Gráficos obtidos no MATLAB nas experiências de aquisição de dados com os sensores de intensidade luminosa, distância e de intensidade sonora. Descreve muito sucintamente os ensaios que levaram a obter estes resultados. Portfolio MEEC Guia de Laboratório Pag. 22

3. Diga, justificando, qual o valor da constante que leva a que o programa de paragem suave com medidas em polegadas se comporte da mesma maneira que a observada quando o sensor dá a medida em centímetro. 4. Discuta se o programa de Paragem suave se pode obter como um caso particular do programa que permite manter o robot a uma certa distância de um obstáculo. Para escrever o relatório em LATEX, copie o ficheiro template para um ficheiro com o nome Rel1-XXXXXX-XXXXXX-XXXXXX.tex, em que XXXXX é o número de cada um dos alunos que compõem o grupo, e em seguida edite-o para incluir o seu relatório. Este ficheiro, e o pdf gerado a partir dele, deverá ser depois enviado ao professor que lecciona a sua aula de laboratório (pergunte-lhe qual o seu endereço de email). Agradecimento O enunciado deste trabalho nunca poderia ter sido escrito em tempo útil sem a ajuda preciosa de Ray Coniff, Wolfgang A. Mozart, Shirley Bassey, Paul Simon, Federic Chopin Art Garfunkel, e Ludwig van Beethoven. Fim da sessão 3 Portfolio MEEC Guia de Laboratório Pag. 23