Portfolio MEEC - fenix.tecnico.ulisboa.pt · captar informação e comunicá-la ao computador que...

88
Portfolio MEEC – Guia de Laboratório Pag. 1 Mestrado Integrado em Engenharia Electrotécnica e de Computadores 2015/2016 – 1º Semestre Portfolio MEEC Guia de Laboratório Preparado por João Miranda Lemos Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores

Transcript of Portfolio MEEC - fenix.tecnico.ulisboa.pt · captar informação e comunicá-la ao computador que...

Portfolio MEEC – Guia de Laboratório Pag. 1

Mestrado Integrado em

Engenharia Electrotécnica e de Computadores

2015/2016 – 1º Semestre

Portfolio MEEC

Guia de Laboratório

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. 2

Apresentação

Este é o guia de laboratório da unidade curricular Portfolio MEEC. Neste laboratório é

desenvolvido um projecto simples que consiste em programar um robot que siga uma

fita preta colada num fundo escuro. ver o vídeo

http://www.youtube.com/watch?v=WzHZrE4vliI&feature=em-upload_owner

Embora se utilize um robot, a concretização deste projecto ultrapassa em muito a

Robótica (e o Controlo) e permite ver exemplos de todos os grandes temas centrais da

Engenharia Electrotécnica:

Os computadores e a Programação. O “cérebro” do robot é constituído por um

computador onde são executados os programas que permitem atingir os seus

objectivos.

Os sensores (de uma maneira mais geral, pode dizer-se “a instrumentação”),

que são dispositivos electrónicos que permitem medir variáveis físicas (por

exemplo a distância a que um objecto se encontra de nós, ou a intensidade da

luz reflectida por uma superfície, ou uma temperatura) e transformar essa

medida numa tensão eléctrica que pode ser lida pelo computador. Pode dizer-

se que os sensores constituem os “olhos e os ouvidos” do robot e permitem

captar informação e comunicá-la ao computador que constitui o “cérebro”.

Os actuadores, constituidos por motores eléctricos, que permitem que o robot

se desloque, executando movimentos que são controlados pelo computador.

A energia, através da possibilidade de medirmos (através de um sensor) a

energia disponível na bateria que alimenta os motores e fazer a sua gestão,

por exemplo emitindo um alarme quando o seu nível desce abaixo de um

determinado valor.

As comunicações, através da possibilidade de vários robots comunicarem.

Menos visível de um modo directo estão a Electrónica e a Arquitectura de

Computadores que permitem a realização dos maravilhosos circuitos electrónicos,

escondidos debaixo do plástico do bloco da LEGO, mas sem os quais nada funcionaria

(pode mesmo dizer-se que funciona tão bem que nem se dá por isso).

O robot NXT da LEGO que vamos utilizar proporciona pois um primeiro contacto com a

Engenharia Electrotécnica e de Computadores. Muitos dos temas que aqui são

aflorados serão posteriormente muitíssimo mais aprofundados ao longo do curso. E

isto (o desenvolver um sistema que integra um computador que interage com o

mundo físico através de meios electrónicos) por si só é já um objectivo interessante

para a disciplina.

Portfolio MEEC – Guia de Laboratório Pag. 3

Mas o robot e o projecto a ele associado são também um pretexto para algo mais

importante e interessante. Trata-se de desenvolver as chamadas competências

transversais, algumas das quais são aqui desenvolvidas:

Falar (e ouvir!), expor, argumentar;

Escrever, elaborar relatórios;

Planear e controlar a execução dos planos.

Ao longo das sessões de laboratório, haverá oportunidade de utilizar diversas

ferramentas que são úteis no dia a dia da vida universitária ou da vida profissional (o

LATEX para a geração de documentos, o MS project para o planeamento de projectos,

o Power Point para criar apresentações, um primeiro contacto com o MATLAB para

realizar cálculos matemáticos). E muito tempo para fazer apresentações orais e discutir

ideias.

Haverá 6 sessões de laboratório, cada uma com 3h de duração, que terão lugar de 2

em 2 semanas. Estas sessões serão dedicadas aos seguintes temas:

1. O robot NXT da LEGO.

2. Planear o projecto.

3. Exploração dos sensores.

4. Programação do robot.

5. Avaliação do progresso e programação avançada.

6. Apresentação final do projecto.

O trabalho a realizar em cada sessão, bem como a descrição dos elementos

necessários é feita a seguir neste documento. Pode desde já ter uma ideia do

conteúdo de cada sessão lendo a secção sobre Objectivos no início de cada uma.

O Laboratório Pedro Nunes

O trabalho do projecto de laboratório será realizado no Laboratório Pedro Nunes, que

está localizado na sala 4.10 do piso 4 da Torre Norte do campus da Alameda do IST.

Figura 1-0. Pedro Nunes (1502-1578).

Portfolio MEEC – Guia de Laboratório Pag. 4

O nome do laboratório foi escolhido por Pedro Nunes (representado numa gravura na

figura 1-0) ser um Homem da Renascença português. A Renascença, o período em que

se combinaram a Descoberta, a Ciência e a Arte.

Figura 0-2. Rosto de duas obras de Pedro Nunes: Tratado da Esfera, publicado em

1537, e o Libro de Algebra en Arithmatica y Geometria, de 1567.

Pedro Nunes foi professor de Matemática da Universidade de Coimbra e Cosmógrafo

Mor do Reino e publicou várias obras, originais e traduções, sobre o que constituía, na

altura, a fronteira do conhecimento. Estas abordavam temas de grande impacto

económico para a altura, no âmbito da navegação, com um espírito de rigor e

baseadas na Matemática mais avançada para a altura.

Dois exemplos de obras de Pedro Nunes (figura 0-2), separados por trinta anos da vida

do seu autor, são a tradução do Tratado da Esfera, de Sacrobosco, e o Libro de Algebra

en Arithmatica y Geometria, em que aborda a solução das equaçõs algébricas de 3º

grau, um tema então muito avançado. O Tratado da Esfera era um manual de

navegação para uso dos pilotos e visava fins sobretudo práticos. Não é uma mera

tradução dado que inclui diversas contribuições originais do tradutor.

Em relação com os seus trabalhos sobre navegação, Pedro Nunes inventou o nónio,

um aparelho que permite aumentar a precisão das escalas, e que ele aplicou ao

astrolábio.

Aliado ao rigor, a valorização da descoberta e da inovação está presente na obra de

Pedro Nunes. Referindo-se às viagens feitas pelos portugueses nos últimos 100 anos,

escreveu: Descobriram novas ilhas, novas terras, novos mares, novos povos e o que

mais é novo céu e novas estrelas (Tratado da Esfera, 1537).

Portfolio MEEC – Guia de Laboratório Pag. 5

Figura 3-0. Um mosaico de aplicações da Engenharia Electrotécnica e de

Computadores. De cima para baixo e da esquerda para a direita: Antenas de um

sistema de comunicações móveis; antevisão de uma rede inteligente de energia; braço

robot numa linha de montagem de automóveis; linha de produção, onde se reconhece

um braço robot (à esquerda), das latas de atum Ramírez; ampliação de um circuito

integrado; o microcontrolador Arduino, que permite o desenvolvimento de projectos

piloto de muito baixo custo.

Novo céu e novas estrelas! É o que este projecto de laboratório pretende fazer

descobrir. Hoje, para um Engenheiro Electrotécnico e de Computadores, o céu e as

Portfolio MEEC – Guia de Laboratório Pag. 6

estrelas são as novas realidades tecnológicas, que o mosaico da figura 0-3 palidamente

reflecte.

Uma nova visão dos computadores

Para muitas pessoas, um computador não é mais do que um meio para divertimento

ou uma máquina de escrever sofisticada. Para alguns, pode ser usada como uma

máquina de calcular, ou mesmo ser programado para executar cálculos complicados.

Em todo o caso, e por muito útil que seja, para a maioria das pessoas, o computador é

algo desligado do mundo, que vive num mundo à parte e desempenha um papel

parecido com a esferográgica BIC.

O que o curso de Engenharia Electrotécnica e de Computadores propõe é a entrada

num mundo novo. Neste, o computador é visto como mais um componente dos

sistemas que se desenvolvem, sejam eles máquinas eléctricas, sensores inteligentes ou

complexos sistemas de comunicações. Tínhamos a resistência, o condensador, o

transístor. Passámos a ter também o computador, que pode ser ligado aos outros

componentes através de interfaces convenientes. É o mundo dos sistemas embebidos,

que incluem computadores, a tomar decisões em tempo real, a par com os circuitos

electrónicos. Com a vantagem de que os limites do que se consegue fazer são os da

nossa imaginação. Nos sistemas ciber-físicos (cyber-physical systems) há partes que se

comportam como sistemas físicos, mas que de facto são apenas equações integradas

em tempo real em computadores, ligados aos restantes componentes por interfaces.

Neste país dos espelhos, o que é realidade física e o que é computação confunde-se

por forma a conseguirem-se sistemas extremamente poderosos que influenciam cada

vez mais de modo tremendo a vida quotidiana de todas as pessoas.

Este laboratório permite dar um primeiro passo num percurso em que a Física, a

Matemática, a Electrotécnia Teórica, as Probabilidades e Processos Estocásticos, a

Programação e Computação e muitos outros ramos ligados às Telecomunicações, aos

Sistemas Decisão e Controlo, à Energia, à Electrónica e aos Computadores, muitas

vezes aparentemente desligados, mas só aparentemente, convergem para formar um

Engenheiro Electrotécnico e de Cumputadores.

Bibliografia

A informação contida neste manual é suficiente para realizar os trabalhos de

laboratório propostos. No entanto, para quem quiser saber mais, uma referência útil é:

T. Griffin. The art of LEGO mindstorms NXT-G programming. No Starch Press, 2010.

Para além disso, existem disponíveis na internet muitos sítios com tutoriais e vídeos

sobre o assunto.

Portfolio MEEC – Guia de Laboratório Pag. 7

Sessão nº 1

O robot NXT da LEGO

Objectivos

Contacto básico com o NXT. Programas simples com um único bloco de acção.

Programas com ciclos. Introdução ao LATEX. Escrita em LATEX de uma descrição do

NXT e da sua programação com blocos simples. Utilização do GIMP e do Paint para

gerar figuras eps para inclusão no relatório.

Elementos a entregar no final sa sessão

No final desta sessão, cada grupo deve entregar um relatório de até 2 páginas com o

relato e as principais conclusões do trabalho efectuado. O relatório deve ser em

formato pdf e ser escrito em LATEX, incluindo pelo menos uma figura.

Descrição do trabalho

O robot NXT da LEGO

A parte essencial do robot NXT da LEGO é o bloco que se mostra na figura 1-1.

Figura 1-1. A parte essencial do robot NXT da LEGO. Inclui o processador e interfaces.

Portfolio MEEC – Guia de Laboratório Pag. 8

Este bloco inclui um processador e interfaces. As interfaces são (ver a figura 1-1):

Interfaces com o utilizador, que incluem

o Um mostrador LCD que pode representar sequências alfanuméricas e

gráficos;

o Um botão (de cor laranja) que serve para ligar o robot e que também

permite dar entrada de comandos;

o Um botão cinzento que tem a dupla função de passar ao menu anterior

e de desligar o robot se for premido durante alguns segundos.

4 portos de entrada, numerados de 1 a 4, situados na parte inferior, e onde são

ligados os sensores através de cabos;

3 portos de saída, etiquetados A, B e C, situados na parte superior do lado

esquerdo. A estes portos ligam-se os motores através de cabos.

1 porto USB, situado na parte superior direita, e que serve para ligar o robot ao

computador. É através deste cabo que se descarregam para a memória do

robot os programas desenvolvidos no computador. Uma vez armazenados os

programas na memória, estes ficam lá até serem apagados, mesmo que o robot

seja desligado. O cabo pode assim ser removido, passando o robot a funcionar

autonomamente.

Nota: No seu interior o robot NXT da LEGO tem o que se chama um

microcontrolador, ou seja um circuito electrónico (muito complexo) que inclui um

processador, memória e interfaces com o mundo exterior. Para o utilizador da

NXT a maior parte dos (muitos) detalhes de programação deste microcontrolador

estão escondidos, o que facilita enormemente o seu uso (mas também impõe

restrições).

A parte central do NXT inclui ainda uma bateria recarregável colocada na sua parte

inferior que dispõe de um contacto que pode ser ligado a um carregador. Um led

vermelho indica que o carregador está ligado e um led verde que a bateria está

carregada.

Figura 2-1. O robot NXT da LEGO ligado a 4 sensores diferentes, cada um a um porto, e

a 3 motores (actuadores), também cada um a um porto.

Portfolio MEEC – Guia de Laboratório Pag. 9

A figura 2-1 mostra a ligação do NXT a sensores e actuadores. Por forma a permitir o

posicionamento adequado dos sensores e actuadores, o encapsulamento de plástico

do NXT possui vários encaixes para peças da LEGO, tal como se mostra na figura 3-1.

Figura 3-1. Encaixes do NXT para ligação de peças da LEGO que permitem a construção

de vários tipos de robot. A bateria está dentro da caixa cinzenta na parte inferior.

Figura 4-1. Um triciclo com duas rodas motoras construído com base no NXT.

Podem assim construir-se robots com diversas configurações físicas (facilmente se

encontram na internet variadíssimos exemplos, por vezes muito sofisticados). Por

exemplo, a figura 4-1 mostra um triciclo com duas rodas motoras que, em conjunto

com 3 sensores (intensidade de som, intensidade de luz e distância), constitui o robot

que vai ser empregue no projecto.

Nota: Infelizmente, por limites compreensíveis nos recursos, e dado o elevado

número de alunos, não será possível alterar as configurações do robot.

Portfolio MEEC – Guia de Laboratório Pag. 10

Uma situação simples ilustra a resolução de um problema com este robot. Imagine-se

que se pretende que o robot ande sempre em frente, parando quando se depara com

um obstáculo a menos de 40 cm, e retomando a marcha quando o obstáculo é

removido.

Para detectar o obstáculo, é claro que precisamos de um sensor de distância que

aponta para a frente.

O programa executa um ciclo de instruções (ou seja, um conjunto de instruções que se

repetem sucessivamente) e que constam dos seguintes passos:

1. Lê no porto ligado ao sensor o valor da distância ao obstáculo mais próximo;

2. Se esta distância fôr superior a 40 cm então dá um comando aos motores para

andarem os dois com a mesma velocidade; Caso contrário dá um comando aos

motores para que ambos parem.

Programação do NXT

A programação do NXT pode ser feita com várias linguagens. A mais simples é

designada por NXT-G e consiste numa descrição gráfica das tarefas e decsões a tomar.

A cada sensor, actuador ou acção a tomar (por exemplo, um ciclo) é associado um

bloco, cujas características podem ser programadas por forma a executar certas

acções. Estes blocos podem ser ser “encaixados” sequencialmente (tal como peças de

LEGO), constituindo cadeias de acções. Veremos a seguir vários exemplos.

Trabalho a realizar no laboratório

Activar o ambiente de programação

Para por a correr o ambiente de programação do NXT, carregue no botão do Windows

que se encontra no canto inferior esquerdo do écran, tal como indicado pela seta na

figura seguinte

Figura 5-1. O botão de início no Windows.

Abre-se o seguinte menu que permite o acesso aos programas disponíveis neste

computador e que se mostra na figura 6-1.

Portfolio MEEC – Guia de Laboratório Pag. 11

Figura 6-1. Activação do ambiente de programação do NXT.

Clique sobre NXT 2.1 Programming (não confundir com NXT 2.1 Data Logging). Abre-se

uma janela com o formato da figura 7-1. No local indicado pelo círculo vermelho

escreva um nome para o programa que pretende desenvolver, por exemplo test1 e a

seguir carregue em Go >> dentro do outro círculo vermelho.

Caso quisesse editar um programa escrito anteriormente, teria de usar os campos

correspondentes, imediatamente abaixo, e onde indicaria o nome do programa já

desenvolvido.

Na sequência destas acções, surge a folha de programação com o aspecto da figura 8-

1. Podem observar-se nesta os seguintes campos principais:

Do lado esquerdo existe uma tira de quadrados com desenhos que

representam os blocos que podemos utilizar na programação;

A parte central é ocupada por uma zona quadriculada, onde se encontra um

bloco de início, a partir do qual se vão “encaixando” blocos, simplesmente

clicando nos blocos da biblioteca existente no lado esquerdo e arrastando-os

mantendo o botão esquerdo do rato premido até estrem na posição final.

No interior desta parte central e perto do seu canto inferior esquerdo existem

botões que permitem descarregar o programa desenvolvido sob forma gráfica

Portfolio MEEC – Guia de Laboratório Pag. 12

para o robot (através do cabo ligado às portas USB do computador e do robot),

executar o programa e monitorizar a memória usada e o nível da bateria.

Em baixo existem dois campos. O da esquerda está vazio. Será usado para

programar as características dos blocos. O da direita permite seleccionar a

parte que se vê em diagramas muito grandes.

Fig. 7-1. Abertura do ambiente de programação do NXT.

Portfolio MEEC – Guia de Laboratório Pag. 13

Fig. 8-1. Folha de programação.

Neste momento o ambiente de programação está activo e vamos começar a fazer um

programa muito simples.

O primeiro programa: Fazer funcionar o altifalante

O primeiro programa consiste simplesmente em fazer o altifalante incorporado no NXT

reproduzir uma frase pré-gravada.

Como se pode ver na figura 8-1, no lado esquerdo da folha de programação existe uma

“biblioteca” de blocos que estão associados a acções básicas. Sem clicar, passe

lentamente o rato sobre cada um deles. Abre-se uma pequena janela com a indicação

da acção que cada bloco permite realizar. Repare que a ampulheta se desdobra em

vários blocos.

Figura 9-1. O ícone do altifalante.

Clique agora sobre o ícone do altifalante (figura 9-1) com o botão do rato do lado

esquerdo (daqui em diante, quando se disser “clicar” sem mais, isso significa “apertar

Portfolio MEEC – Guia de Laboratório Pag. 14

o botão do rato do lado esquerdo) e, mantendo o botão apertado, arraste o ícone até

à zona marcada “start”.

Figura 10-1. O programa Teste1 para fazer funcionar o altifalante.

O programa (constituído pela interligação dos blocos inicial e altifalante) tem o aspecto

da figura 10-1. No campo da parte inferior esquerda aparecem as propriedades do

bloco associado ao altifalante (figura 11-1). Podemos controlar o volume e escolher as

palavras pré-gravadas a reproduzir. Neste momento as palavras são “Good job”.

Figura 11-1. Propriedades do bloco altifalante.

Carregar o programa no NXT e executá-lo

Para executarmos o programa podemos clicar com o botão esquerdo do rato sobre o

botão central com o triângulo na parte inferior direita da folha de programação (figura

12-1).

Figura 12-1. Botões para descarregar e executar programas.

A partir do momento em que o programa é descarregado, há uma cópia sua que passa

a estar residente no robot NXT (até que seja apagada). Experimente desligar o cabo

USB e carregar no botão laranja. O que acontece? Volte a ligar o cabo para realizar as

experiências seguintes.

Nota: O programa é descrito por uma representação gráfica. No entanto, existe

um interpretador, que transforma esta informação gráfica em linhas de código,

semelhantes ao que está a usar na unidade curricular de Introdução à

Programação. Estas linhas de código são compiladas e transformadas num

Portfolio MEEC – Guia de Laboratório Pag. 15

programa executável, codificado de uma certa maneira, que é transferido para o

NXT. Se conhecessemos a linguagem de programação do NXT poderíamos

escrever directamente o código para executar as tarefas desejadas. A

programação seria, é claro, muito mais complicada dado que teríamos de nos

preocupar com muito mais detalhes. Teria no entanto a vantagem de permitir

fazer coisas que não estão previstas na programação com a interface gráfica. A

programação com a interface gráfica, como que “encaixando” blocos como peças

de LEGO, cada bloco a ssociado a uma dada taref, tem a vantagem de ser muito

simples. Ao longo do seu curso terá oportunidade de aprender a utilizar

interfaces gráficas para programação muito poderosas, como o SIMULINK.

Figura 13-1. Informações sobre a ligação do computador ao robot.

No bloco de botões da figura 12-1, cique agora no botão do canto superior esquerdo.

Premindo este botão, abre-se a janela que se mostra na figura 13-1. Observe que tipo

de informação pode extrair desta janela. Clique nos separadores (do lado esquerdo,

em cima) para ver informações relativas às comunicações e à memória.

Clique no separador de memória. Observe que ele lhe dá uma lista de itens que estão a

ocupar espaço (neste caso, a gravação de uma frase), e que o pode apagar.

Observe que, do lado direito, tem informação relativa à carga da bateria.

Feche esta janela de informação, clicando no botão de fechar no seu canto inferior

direito.

O que fazem os restantes botões do bloco da figura 12-1? Sem clicar, coloque o

apontador do rato sobre cada um deles e espere um pouco para ler informação sobre

as funções de cada um.

Use os botões do NXT (o bloco físico) para perceber como pode seleccionar e

apagar programas.

Portfolio MEEC – Guia de Laboratório Pag. 16

Programas com sequências de blocos

Vamos escrever agora programas em que há várias acções em sequência.

Figura 14-1. Bloco display.

Figura 15-1. Atributos do bloco display.

Começamos por considerar o bloco display (figura 14-1), que permite mostrar no visor

do NXT uma figura e tem os atributos que se mostram na figura 15-1. Como se pode

ver (experimente no NXT), pode escolher-se o tipo de objecto mostrado (imagem,

número, etc.).

No entanto, se corrermos o programa formado apenas pelo bloco “display”, nada

se observa. Isto sucede porque as instruções associadas ao bloco são executadas

rapidamente e quando acaba, o monitor do NXT (um programa que corre no NXT e

realiza vários tipos de tarefas, em particular com ambiente de programação) repõe

outra imagem.

Se adicionarmos um outro bloco em série que permite executar uma espera, a

imagem ficará um tempo suficiente para a vermos. Assim, coloque em série os dois

blocos de deisplay e de espera, tal como se mostram na figura 16-1.

Figura 16-1. Um programa para mostrar uma figura no écran durante 3 segundos.

Repare que existem vários tipos de blocos de espera (figura 17-1). Vamos começar por

usar o primeiro, com o símbolo que se mostra na figura 18-1. De facto, os outros

blocos podem, ou ser seleccionados directamente a partir do menu gráfico, ou a partir

deste mesmo bloco, através da escolha numa lista de tipos de blocos.

Portfolio MEEC – Guia de Laboratório Pag. 17

Figura 17-1. O bloco de espera desdobra-se em vários tipos de blocos.

Figura 18-1. O bloco de espera correspondente a um temporizador, em que é feita

uma espera durante um tempo fixo, prosseguindo depois o programa sem serem

satisfeitas quaisquer condições adicionais.

Para configurar o bloco de espera escolha como modo de controlo o tempo e

indique como tempo de espera, por exemplo, 3 segundos. Corra o programa e observe

o écran do NXT.

Se quisermos adornar o programa, podemos adicionar mais um bloco de altifalante

em que se emite uma expressão que indica que o programa correu até ao fim, por

exemplo “Good job” ou “Fantastic” (um bom elogio faz-nos sempre bem ao ego!).

Obtém-se assim o programa da figura 19-1.

Figura 19-1. Um programa que mostra uma figura no écran durante 3 segundos e no

fim diz “Good job”.

Decisões associadas a sensores

O tempo de espera pode não ser fixo mas depender do sinal lido por um sensor. Um

sensor é um componente do equipamento que transforma um sinal físico num sinal

eléctrico que pode depois ser transformado num número através de um circuito

electrónico denominado conversor analógico-digital (ou simplesmente A/D). Todos

estes circuitos estão no interior do NXT, mas a sua utilização e programação é

“transparente” para o utilizador.

Um exemplo é o sensor de som que se mostra na figura 20-1.

Portfolio MEEC – Guia de Laboratório Pag. 18

Figura 20-1. Sensor de som.

Figura 21-1. Um programa para mostrar uma figura no écran até que haja um som de

uma intensidade acima de um certo limiar. No fim avisa que terminou.

A figura 19-1 representa um programa que mostra uma figura no écran até que o

sensor de som receba um som de intensidade acima de um limiar. O último bloco

emite um som de terminação (“Good job!”).

O bloco associado ao sensor está em estado de espera até que o sensor seja actuado.

Figura 22-1. Janela de definição do bloco de espera associado ao sensor de som.

A figura 22-1 mostra a janela de definição das propriedades do bloco de espera

quando associado ao sensor de som. Repare que deve escolher como modo de

funcionamento do bloco de espera “Sensor” (ver o menú expansível assinalado pela

elipse) e depois o sensor adequado (no menú imediatamente abaixo.

Do lado direito vê-se que o porto a que o sensor está associado é o porto. Para que o

programa funcione, o sensor de som deverá portanto estar ligado ao porto 2 através

de um cabo (o que acontece; não altere esta ligação!).

Ainda do lado direito da janela representada na figura 20-1 representam-se (e podem

ser ajustadas) duas características muito importantes da decisão a tomar sobre se o

programa deve ou não ser terminado, com base no sinal medido pelo sensor:

Portfolio MEEC – Guia de Laboratório Pag. 19

O limiar (em Inglês threshold) acima do qual se considera que é detectado um

som. Neste caso o limiar é 50, mas pode ser alterado.

O intervalo de valores do som tal que, se a intensidade nele estiver, se

considera que o sensor foi actuado. Neste caso o sensor é actuado acima do

limiar.

Experimente este programa. Gere o som batendo palmas ou falando alto (com o

devido respeito e veneração que devem ser mantidos num laboratório do IST!).

Nota: Se baixarmos o limiar aumentamos a possibilidade de haver um “falso

alarme”, ou seja, o sensor é actuado por um ruído ambiente espúrio. Por outro

lado, aumentando o limiar, aumentamos a probabilidade de o som com que

queremos que a decisão seja tomada não ser suficiente forte para ser detectado,

havendo uma “falha de detecção”. A escolha do limiar resulta deste

compromisso. Se caracterizarmos as probabilidades da amplitude dos vários

sinais em jogo, podemos optimizar a nossa escolha do limiar, de acordo com um

dado critério. Estes problemas surgem em muitos problemas de Engenharia

Electrotécnica e de Computadores, por exemplo em Comunicação Digital. Moral

da História: Estude cuidadosamente o que lhe será ensinado na disciplina de

Probabilidade e Estatística se se interessa por estes problemas...

Pode fazer-se algo semelhante com o sensor de distância (ou com o de intensidade

luminosa, ou outro). Observe o sensor de distância que se mostra na figura 23-1.

Figura 23-1. Sensor ultrassónico de distância.

Repare que o sensor de distância tem dois orifícios. Um emite um impulso de ultra-

som (um ultra-som é um som numa gama de frequências superior à que conseguimos

ouvir) e o outro orifício detecta o eco reflectido por um obstáculo. O sensor calcula o

tempo de atraso entre a emissão e a recepção do eco e, a partir daí, admitindo

constante a velocidade do som, determina a distância do obstáculo.

Teste o programa que se mostra na figura 24-1. O programa deverá mostrar no

mostrador do NXT um boneco (programado por si no bloco display) enquanto não

houver nenhum objecto a menos de uma dada distância do sensor de distância

(comece por escolher 30 cm e depois experimente outras distâncias). No final deverá

ser emitido o som “Good job!” (ou outro que tenha programado).

Portfolio MEEC – Guia de Laboratório Pag. 20

Figura 24-1. Espera controlada pelo sensor de distância.

Figura 25-1. Configuração do sensor de distância para o programa da figura 24-1. Para

esta configuração o programa continua quando aparece um objecto a 30 cm ou

menos.

Na configuração do bloco de atraso associado ao sensor de distância (figura 25-1) pode

alterar a distância a que o obstáculo é detectado. Deve configurar adequadamente as

unidades em que esta distância se exprime (não se esqueça da história da sonda

enviada a Marte e que foi perdida por uns usarem centímetros e os outros

polegadas...).

Altere agora o programa para que a espera se mantenha quando existir um objecto a

uma distância menor do que o limiar, continuando a execução quando o objecto se

afasta.

As características de um bom programa

Um bom programa deve ter as seguintes características

1. Executar a função pretendida;

2. Ser fácil de modificar;

3. Ser compreensível por qualquer pessoa que conheça a linguagem de

programação usada.

O primeiro requisito parece bastante óbvio, mas pode não ser simples de garantir.

Implica que sejam feitas especificações e que, quando o programa está pronto, se

proceda a uma verificação de que estas são cumpridas.

No caso dos programas desenvolvidos nesta unidade curricular as especificações

podem ser muito simples, por exemplo o programa deve mostrar no écran do NXT o

desenho de um boneco smile até que se aproxime um objecto. A verificação deriva

directamente das especificações. Para verificarmos se o programa funciona, neste

caso, corremos o programa e observamos o écran para ver se o smile lá está. Depois

Portfolio MEEC – Guia de Laboratório Pag. 21

aproximamos um objecto (uma folha de cartolina, por exemplo) e vemos se o smile

desaparece. Podemos ir aproximando lentamente o objecto e verificar que o smile

desaparece (mais ou menos) à distância que especificámos.

Se o programa não cumprir as especificações, temos de pensar porquê. O primeiro

passo é pensar cuidadosamente na maneira como configurámos o programa. Não se

esqueça: O computador é o idiota mais rápido do mundo, que cumpre rigorosamente

tudo o que lhe mandarmos executar. Por vezes ajuda reduzir a complexidade do

programa, por exemplo dividindo-o em partes e verificando se cada uma das partes faz

exactamente o que esperamos.

A característica número 2 (o programa deve ser facilmente modificável) é importante

dado que muitas vezes as especificações são alteradas depois de se ter efectuado o

desenvolvimento do programa. Podemos além disso querer adaptar um programa

para fazer uma outra função, sendo desejável que isso seja feito com pouco esforço.

Finalmente a característica número 3 permite que nós próprios nos lembremos de

como as coisas funcionam quando retornamos a elas passado algum tempo. Numa

empresa isto é fundamental dado que o desenvolvimento de um mesmo programa

pode ser feito por diversas pessoas, por exemplo porque quem inicia o programa

abandona a empresa.

Figura 26-1. Programa comentado.

Para tornar os programas legíveis, um auxiliar importante são os comentários. Trata-se

de pequenos textos que não afectam a execução, mas que esclarecem alguns pontos

importantes.

Portfolio MEEC – Guia de Laboratório Pag. 22

Para inserir comentários use a ferramenta de comentários associada ao botão

assinalado pela seta a vermelho na figura 26-1. Posicione o curso e escreva o

comentário. Posteriormente, pode ajustar a posição do comentário clicando na seta à

esquerda da ferramenta de comentários.

Comando dos motores

Os motores são os actuadores mais importantes do robot uma vez que são estes que

permitem deslocar o robot e realizar movimentos com o efector, por exemplo uma

pinça por eles accionada (que neste trabalho não será utilizado).

Figura 27-1. Estrutura interna de um motor do NXT da LEGO (à esquerda) e aspecto

exterior (à direita).

A figura 27-1 mostra a estrutura interna do motor. Como se pode ver, não se trata de

um simples motor, mas tem também uma caixa de desmultiplicação de velocidade

(para que o veio a ligar às rodas diminua a sua velocidade e aumente o binário). Tem

ainda um sensor de posição angular do veio a ligar às rodas e um sistema electrónico

que permite controlar esta posição angular. Isto permite que o motor seja accionado

em vários modos diferentes, por exemplo

rodando sem parar, ou

fazendo com que o ângulo rode apenas um ângulo que é especificado.

Figura 28-1. O bloco de controlo dos motores.

Figura 29-1. Configuração do bloco de controlo dos motores.

Portfolio MEEC – Guia de Laboratório Pag. 23

A figura 28-1 mostra o bloco de controlo dos motores e a figura 29-1 a respectiva

janela de configuração. Observemos esta janela.

Do lado esquerdo em cima são definidos os portos do NTX a que os motores estão

ligados e que são afectados por este bloco. Na figura pode ver-se que se estão a

afectar os portos B e C, que correspondem aos motores das rodas. Podíamos ter

escolhido apenas um deles.

Os portos B e C são sincronizados (através de um controlador PID que é invisível para o

utilizador mas está embebido no NXT) o que permite garantir que o robot se desloca

para a frente mantendo a direcção com precisão quando ambos são actuados.

Imediatamenta abaixo, surge o controlo da direcção que pode ser para a frente, para

trás, ou forçar o motor a parar. Na figura 29-1 está seleccionada a direcção para a

frente.

A seguir está especificada a viragem, que é conseguida com a diferença de rotação das

rodas. Consoante a posição do cursor, vira-se para um lado, para outro ou vai-se em

frente.

No lado direito da janela de configuração da figura 29-1 está:

A potência aplicada ao motor, numa escala de percentagem do valor máximo

entre 0% e 10motor 0%.

O modo de funcionamento do motor definido pelo bloco.

Se clicar no menu de duração, aparecem as seguintes possibilidades:

Ilimitada

Graus

Rotações

Segundos

Se escolhermos “Graus”, “Rotações” ou “Segundos”, o motor rodará durante um

período que depende da respectiva unidade escolhida. Experimente as várias

alternativas.

Repare ainda que, nestes modos pode definir a próxima acção:

Travar, que permite uma maior precisão no posicionamento final, mas em que

se gasta mais energia;

“Coast”, em que o motor é pura e simplesmente desligado no final da acção,

sendo deixado livre. Esta acção poupa energia mas o movimento é muito

menos preciso (o que pode ser importante para certas aplicações).

Portfolio MEEC – Guia de Laboratório Pag. 24

Se escolhermos uma duração ilimitada, o motor rodará continuamente enquanto o

programa estiver a ser executado. Isto significa que, se o programa constar apenas

deste bloco, assim que ele for executado, o motor parará (porque o programa chegou

ao fim). É uma sitação semelhante à que encontrámos antes com o bloco display.

Tal como se fez no bloco “display”, podemos fazer seguir o motor de um bloco de

espera de tempo, tal como se mostra na fiigura 30-1. Experimente este programa.

Figura 30-1. Um programa que faz o robot andar a direiro durante um período de

tempo de 3 segundos, especificado no bloco de espera.

Experimente este programa, alterando o tempo durante o qual o robot se desloca.

Altere o programa (altere a configuração do bloco do motor) para que o robot

descreva uma trajectória circular durante alguns segundos. Como pode fazer para

alterar o raio da trajectória?

Figura 31-1. Um programa que faz o NXT andar a direito e parar quando encontra um

obstáculo.

Figura 32-1. Configuração dos blocos do motor (em cima) e do sensor de distância (em

baixo) no programa da figura -1.

Portfolio MEEC – Guia de Laboratório Pag. 25

Mais interessante do que, pura e simplesmente, fazer o robot descolcar-se em frente

(ou girar autistamente sobre si próprio) é garantir alguma interactividade do robot

com o ambiente através dos sensores.

O programa descrito nas figuras 31-1 e 32-1 mostra um exemplo de um programa em

que o primeiro bloco dá uma ordem para os motores rodarem sempre enquanto o

programa for executado, seguida de um bloco de espera associado ao sensor

ultrasónico de espera. De acordo com este último bloco, o programa só pára (e

portanto os motores) quando for satisfeita a condição de o sensor de distância

detectar um objecto a menos de 50 cm de distância.

Experimente o programa das figuras 31-1 e 32-1. Modifique-o em seguida para

experimentar diversas distâncias para o sensor (tenha em atenção as unidades em que

exprime a distância, e que podem ser polegadas ou centímetros!).

Programas com ciclos

O programa das figuras 31-1 e 32-1 pára assim que é detectado um obstáculo. Seria

mais interessante que o programa fosse tal que permitisse que o robot retomasse a

sua marcha quando o obstáculo é removido.

Figura 33-1. O bloco de ciclo (à esquerda) e a sua janela de programação.

Para tal, podemos usar o bloco de ciclos que se mostra na figura 33-1. Este bloco

permite executar repetidamente uma sequência de instruções colocada no seu

interior. Esta repetição (ou ciclo de instruções) pode ser feita para sempre (no sentido

em que se repete enquanto a bateria durar... De facto, nesta vida sublunar, nada é

para sempre, nem o amor de Cândido pela menina Cunegunde – se nunca leu o

Cândido de Voltaire, leia-o e aprenderá imensas coisas utilíssimas para a sua futura

profissão), ou um dado número de vezes, ou ainda até que se verifique uma dada

condição, por exemplo ser actuado um sensor.

Para definir a sequência de instruções a executar repeditadamente, basta arrastá-las

para o interior do bloco de ciclo.

Experimente o programa que se mostra na figura 34-1. Explique o funcionamento

deste programa (a seguir ser-lhe-á pedido para documentar as explicações por escrito).

Portfolio MEEC – Guia de Laboratório Pag. 26

Figura 34-1. Um programa que consiste em repetir em ciclo uma lista de instruções.

A reter: Estruturas de programação

Os programas que aprendemos a escrever na linguagem de blocos NXT-G constam de

copmbinações das seguintes estruturas básicas:

Sequências de instruções, cada uma dada por um bloco, e que são executadas

uma após outra.

Decisões sobre executar, alternativamente, uma sequência de instruções ou

outra, dependendo de uma condição. São exemplo os blocos de espera

associados à medida de um sensor, em que as alternativas são esperar ou

prosseguir. Posteriormente estudaremos um outro bloco que permite decisões

mais gerais.

Ciclos, em que uma sequência de instruções é repetida indefinidamente ou até

que se verifique uma dada condição (por exemplo, um certo número de vezes).

Com estas estruturas podem escrever-se todos os programas de interesse em

Engenharia. Constituem a base da chamada programação estruturada e irá encontrá-

las, como amigas fiéis, em outras unidades curriculares do Curso, sendo comuns a

todas as linguagens de programação (e não apenas um capricho da LEGO!) , onde

existem de uma forma ou outra.

O processador de texto LATEX

Ao contrário do processador de texto MS-Word, em que o que se obtém é o que se vê

quando se escreve, no processador de texto LATEX é escrito primeiro um ficheiro de

comandos que contém a descrição do texto (o texto propriamente dito, tamanho e

tipo de letra, símbolos matemáticos, títulos de capítulos e secções, figuras, etc.) que

depois é interpretado pelo compilador de LATEX, produzindo-se primeiro um ficheiro

em formato dvi e, a partir deste, um ficheiro pdf que pode ser lido e que contém o

documento final. Há variantes: podemos por exemplo produzir ficheiros ps em vez de

pdf, mas para já não nos vamos preocupar com isso. A nossa abordagem consiste em

aprender o mínimo possível para poder gerar documentos. A prática (e a

necessidade...) levarão ao longo do tempo, mesmo para além desta disciplina, a

aprender mais coisas sobre o LATEX.

Portfolio MEEC – Guia de Laboratório Pag. 27

Pode parecer à primeira vista que o LATEX é mais complicado do que o MS-Word, mas

alguma complicação que exista é amplamente compensada com o esforço que permite

poupar e a qualidade gráfica profissional dos documentos produzidos. Dá-se apenas

um exemplo: Se num documento tivermos equações numeradas e se introduzirmos

uma nova equação entre as já existentes, não necessitamos de as renumerar. O LATEX

refere as equações (e outros objectos como figuras, tabelas ou capítulos e secções do

texto) por símbolos formados por sequências alfanuméricas. Quando referimos uma

equação no texto usamos, não o número, mas o símbolo. O compuilador de LATEX

(que gera o documento a partir dos nossos comandos) transforma os símbolos nos

números das equações.

Figura 35-1. O ícon do TeXnic está disponível clicando no botão de chamada dos

programas do Windows, do lado esquerdo da barra inferior do monitor.

O ficheiro que contém os comandos é um ficheiro de texto que tem extensão .tex.

Pode ser escrito em qualquer processador de texto, mas existem ambientes que

incorporam processadores de texto e permitem chamar os compiladores necessários

para gerar os ficheito necessários. Um exemplo é o TeXnic, que pode ser chamado tal

como se mostra na figura 35-1. Repare que o TeXnic não é um compilador de LATEX,

mas tem botões que permitem chamar o compilador, que neste caso é o MikTex (quer

o TeXnic, quer o MikTex são software livre que poderá, se quiser, obter facilmente da

internet).

Portfolio MEEC – Guia de Laboratório Pag. 28

Figura 36-1. Barras de comandos do TeXnix.

Após abrir o TexNic, surgem as barras de comandos que se mostram na figura 36-1

(com um aspecto que lembra um dragão cospe-fogo pronto a devorar as tenras

criancinhas. Não se assuste. De facto, como verá, o dragão de hálit sulforoso revela-se

um obediente cãozinho).

Figura 37-1. Selecção de um ficheiro no TeXnic.

Portfolio MEEC – Guia de Laboratório Pag. 29

O primeiro passo é editar uma “template”, um ficheiro que tem um exemplo típico,

que depois podemos modificar e adaptar ao nosso caso (Confúcio disse: “Há três

maneiras para chegar ao conhecimento: A experiência, o mais duro, a imitação, o mais

fácil e a inteligência, o mais nobre.” Neste caso estamos a aprender por imitação. Não

é o mais nobre mas é o que melhor funciona aqui.).

No desktop do seu computador, no lado superior esquerdo tem uma pasta

denominada “LATEX-Teste”, que tem um ficheiro tipo denominado LaTex1.tex. Copie-o

para o seu directório de trabalho, não edite o ficheiro nesta pasta por forma a que os

seus colegas de outros grupos o possam usar. Na barra superior do lado esquerdo da

figura 36-1 clique em “file” e depois, tal como indicado na figura 37-1, escolha “Open”

e “File” e navegue até encontrar o directório na sua área de trabalho.

Figura 38-1. Botões para gerar um ficheiro pdf a partir de um ficheiro de comandos de

latex (extensão .tex) no TeXnic.

Para gerar o documento em pdf, clique no botão de MakeFile da figura 38-1 (que gera

um ficheiro com o documento em formato dvi), e depois no botão com a lupa (que a

partir do dvi gera o pdf). Alternativamente, pode clicar no botão mais à direita da

figura 38-1, que executa as duas funções.

O ficheiro de comando em latex

Observe o ficheiro LaTex1.tex que contém os comando que geram o documento.

Observe o conteudo deste ficheiro.

A primeira linha é

\documentclass[a4paper,12pt]{article}

As palavras começadas por \ são comandos. Neste caso o comando define a classe de

documentos (artigo, relatório, livro, etc.) que se vai usar (article) e define alguns

parâmetros (a dimensão do papel, que é A4 e o tamanho da letra normal, que é 12pt).

A segunda linha é

\usepackage{graphicx}

Esta instrução declara que vão ser usadas funções do pacote graphix, que permite a

inclusão de figuras.

O documento propriamente dito vem descrito entre as instruções

Portfolio MEEC – Guia de Laboratório Pag. 30

\begin{document}

e

\end{document}

Esta descrição consta do texto, com alfumas instruções de controlo. Por exemplo,

\emph coloca em itálico tudo o que vem a seguir entre parêntesis de chaveta.

O LATEX distingue o texto corrido do modo matemático. Existem várias maneiras de

inserir equações. Três das principais são:

Colocar a equação entre símbolos $. Isto coloca a equação em linha com o

texto e não a numera. Por exemplo, $\delta > 0$ escreve a letra grega delta e a

seguir >0.

Colocar a equação entre \[ e \]. Neste caso a equação é colocada numa linha

separada, mas não é numerada.

Colocar a equação entre os comandos \begin{equation} e \end{equation}.

Neste caso a equação é colocada numa linha à parte (tal como no caso

anterior) e é numerada. Para referirmos a equação, entre estes dois comandos

podemos colocar o comando \label{nome da equação} em que “nome da

equação” é uma sequência alfanumérica pela qual a equação pode ser referida.

Se, no texto incluirmos o comando \ref{ nome da equação}, o que acontece é

que o LATEX irá substitui-lo pelo número da equação. Esta é uma das

características mais poderosas do LATEX.

Há comandos para a totalidade dos símbolos matemáticos, embora alguns estejam

definidos em bibliotecas adicionais que devem ser incluídas com o comando

\usepackage (colocado antes de \begin{document}). Por exemplo

\usepackage{amsfonts}

\usepackage{amssymb}

Incluem símbolos matemáticos muito comuns. As barras da figura 36-1 incluem botões

que, se clicados, geram automaticamente no texto os comandos dos símbolos que

representam, por exemplo letras gregas. Acima vimos já o exemplo da letra grega delta

que é gerada com o comando \delta .

Um outro comando útil é o que permite gerar secções, numeradas automaticamente.

Este comando é

\section{Nome da Secção}

Em que “Nome da Secção” é o argumento e constitui o texto que quer incluir como

título.

Portfolio MEEC – Guia de Laboratório Pag. 31

Faça algumas experiências para testar o LATEX. Numa fase inicial faça apenas uma

alteração de cada vez. Compile a cópia da template. Altere a cópia, mudando por

exemplo algumas palavras ou incluindo secções e compile. Inclua algumas secções.

Incluir figuras no LATEX

A inclusão das figuras faz-se com a sequência de comandos

\begin{figure}[h]

\includegraphics[width=0.5\linewidth]{noaprior.eps}

\end{figure}

Esta sequência insere no texto a figura descrita no ficheiro noapriori.eps

Se quiséssemos acrescentar uma legenda, acrescentaríamos (antes de \end{figure}) o

comando

\caption{Legenda exemplificativa.}

em que “Legenda exemplificativa.” É o texto que aparece na legenda. Podemos

também incluir a instrução \label, explicada acima a propósito das equações, para

podermos referir a figura.

Os ficheiros gráficos que podem ser incluídos no LATEX podem ser variados (mas

requerem uma biblioteca diferente que deve ser declarada no início). Neste exemplo

consideramos ficheiros de formato eps .

Há programas que geram directamente gráficos na forma de ficheiros eps

(posteriormente veremos um exemplo ligado ao MATLAB). Neste trabalho, precisamos

de incluir figuras que correspondem a pedaços do écran do computador (atenção: não

tenha a tentação de usar um martelo para partir o monitor!). Para tal, podemos fazer o

seguinte:

1. Mantendo as teclas CTRL e Alt premidas, carregue uma vez na tecla Prt Sc. Ao

fazer isto memorizou uma cópia do écran.

2. Abra o Paint e prima simultâneamente as teclas CTRL e V. A imagem do écran

aparece na área de trabalho do Paint.

3. Seleccione a parte da imagem que lhe enteressa e faça CTRL C.

4. Abra um novo ficheiro no Paint e faça CTRL V.

5. Guarde este novo ficheiro usando o comando “Guardar como” no formato JPG.

6. Abra o GIMP. No GIMP, abra o ficheiro que gerou no ponto 5. Em seguida faça

export, escolhendo previamente a extensão eps para o novo ficheiro.

Portfolio MEEC – Guia de Laboratório Pag. 32

O ficheiro assim gerado está em formato eps e pode ser incluído no LATEX, por

exemplo para documentar um programa em NXT-G.

Experimente este procedimento para gerar figuras eps que representam “bocados”

do monitor.

Escrita do relatório

Escreva em LATEX um relatório que documente o programa que permite que o robot

ande sempre em frente e que pare quando encontra um obstáculo, retomando a

marcha quando este é removido. O seu relatório deve satisfazer as seguintes

especificações:

Comprimento máximo 2 páginas.

Número de figuras: Entre 1 (mínimo) e 4.

Deve conter um título apropriado no início.

Deve conter o número e nome de todos os autores.

Deve estar estruturado nas seguintes secções (escolha títulos apropriados):

o Introdução. Contém o objectivo e estrutura do relatório;

o Especificação do programa.

o Descrição do programa e explçicação do seu funcionamento.

o Descrição dos ensaios de validação do programa.

o Conclussões.

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 são os números 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).

– Fim da sessão 1 –

Portfolio MEEC – Guia de Laboratório Pag. 33

Sessão nº 2

Planear o projecto

Objectivos

O objectivo desta sessão é planear o projecto de desenvolvimento de um robot NXT

capaz de seguir uma fita preta num fundo branco. É realizada uma reunião de

planeamento do projecto em que participam todos os grupos em conjunto. Cada grupo

elabora em conjunto uma acta da reunião (numa reunião normal há apenas uma acta

que é aprovada por todos) que dever ser escrita em LATEX. Utilização do MS Project

para realizar o planeamento do projecto.

Elementos a entregar no final sa sessão

No final desta sessão, cada grupo deve entregar por via electrónica:

1. Acta da reunião.

2. Planeamento do projecto de construção de um feixe hertziano realizado com o

MS Project (exercício de introdução ao MS-Project).

3. Planeamento do projecto de desenvolvimento do robot NXT capaz de seguir

uma fita, feito com o MS Project.

Descrição do trabalho

Descrição geral do trabalho a realizar

Esta sessão de trabalho laboratorial consta de 3 partes:

Na primeira parte é realizada uma reunião em que participam todos os alunos

do turno de laboratório, e cujo objectivo é discutir os objectivos e fazer o

planeamento do projecto de desenvolvimento de um robot NXT capaz de

seguir uma fita preta.

Na segunda parte, cada grupo faz o planeamento do projecto recorrenndo ao

programa MS Project. Nesta segunda parte são realizadas duas actividades:

o Em primeiro lugar, é realizado um exercício de aprendizagem da

utilização do MS-Project para traçar automaticamente cartas de Gantt,

definir milestones e determinar o caminho crítico. Neste exercício

define-se no MS-Project o projecto discutido na aula teórica relativo à

construção de um feixe hertziano.

o Em segundo lugar, aplica-se o MS Project ao projecto de construção do

robot que foi delineado na reunião

Na terceira parte cada grupo escreve em LATEX uma versão da acta da reunião.

Portfolio MEEC – Guia de Laboratório Pag. 34

Conceitos básicos sobre planeamento

Recorde os concentos básicos sobre planeamento apresentados nas aulas teóricas:

Um projecto é uma sequência de actividades que conduz a um objectivo bem

definido, por exemplo, construir um robot que siga uma fita e páre quando

encontra um obstáculo, retomando a sua marcha quando este é removido.

O projecto está estruturado em tarefas. Exemplos de tarefas são projectar um

circuito eléctronico, construir um robot a partir de peças da LEGO, testar um

sistema, etc.

As diversas tarefas demoram tempo a ser efectuadas, começando num

determinado instante de tempo e acabando noutro. Os instantes de início

dependem da interdependência entre as diversas tarefas. Por exemplo, não

posso começar a construir um circuito sem o ter projectado primeiro.

O diagrama de PERT é um grafo em que os nós são as tarefas e em que os

ramos traduzem a interdependência entre as tarefas.

O diagrama de Gantt é um gráfico de barras que mostra, para cada tarefa, o

período em que está a ser executada.

O caminho crítico (critical path) é uma sequência de tarefas tal que, se uma se

atrasar, esse atraso se reflecte na duração total do projecto

As milestones são resultados intermédios, facilmente observáveis de um modo

objectivo, que permitem avaliar se o projecto está a ser executado como

previsto. Exemplo de milestones: Há um prohgrama que mostra o robot a

andar e a parar quando encontra um obstáculo.

Reunião para planeamento do projecto

Uma reunião é convocada por alguém com competência para o fazer. Exemplo: O

Coordenador de um projecto ou um director de departamento. A convocatória deve

indicar:

De que tipo de reunião se trata (por exemplo, reunião da equipa de projecto

dos Patins de Madeira, ou reunião do Conselho Geral da Associação dos

Comedores de Gelados).

A data, hora e local da reunião.

As pessoas convocadas.

A ordem de trabalhos, constituída por uma lista numareda de pontos a discutir.

Quam convoca a reunião e em que qualidade

A data da convocatória.

A convocatória desta reunião poderia ser tal como se mostra a seguir

Portfolio MEEC – Guia de Laboratório Pag. 35

Convocatória

Projecto do robot NXT

Convocam-se todos os alunos do turno XX de Portfolio a estarem presentes numa

reunião a ter lugar no Laboratório Pedro Nunes no dia 18 de Brumário de 1799 pelas

9h00 da manhã, com a seguinte ordem de trabalhos:

1. Constituição da mesa da reunião

2. Revisão dos objectivos do projecto.

3. Definição das tarefas do projecto e da duração de cada tarefa

4. Definição do diagrama de PERT

5. Definição das milestones do projecto

6. Outros assuntos de interesse para o projecto

Legopólis, 15 de Floreal de 1799

O Coordenador do Projecto

Prof. Gyro Gearloose

Se existirem reuniões anteriores, o primeiro ponto da ordem de trabalhos é a

aprovação da acta da reunião anterior. Muitas vezes inclui-se também um ponto de

informações, em que se permite aos presentes dar ou pedir informações sobre

assuntos de interesse para o objectivo da reunião.

No trabalho de laboratório seguir-se-á esta ordem de trabalhos.

Reunião

Os alunos presentes promovem a constituição da mesa. Esta consta de um presidente,

que dirige os trabalhos e de um ou mais secretários. Deverá ser escolhido um

presidente entre os alunos. Neste caso, todos os alunos presentes são considerados

secretários.

O papel do presidente é

Declarar aberta e fechada a reunião;

Declarar sucessivamente aberta a discussão sobre os diversos pontos da ordem

de trabalhos

Introduzir os assuntos relativos aos diversos pontos, ou dar a palavra a quem o

faça.

Portfolio MEEC – Guia de Laboratório Pag. 36

Moderar as discussões, dando a palavra aos particip+antes de modo ordenado

e imparcial e impedindo que alguém monopolize a discussão.

Proceder às votações, se for caso disso.

O presidente vota apenas em caso de empate.

O papel dos secretários é:

Ajudar o presidente a dirigir a reunião, por exemplo, tomando nota dos

inscritos para falar;

Elaborar a acta da reunião.

A acta da reunião é um documento que, na sua versão mais simples, contém a data,

hora e local da reunião, a lista dos presentes e, para cada ponto da ordem de

trabalhos, as decisões tomadas e o resultado das votações que a elas levaram. Em

certos casos pode incluir uma descrição detalhada das intervenções realizadas pelos

presentes.

Após a mesa estar constituída, o presidente deve abrir a reunião, devendo os

secretários tomar notas para elaboração da acta de acordo com o explicado acima.

Neste caso, a acta deve ser o mais simples possível, mas conter informação técnica

suficiente para a elaboração do projecto. Por exemplo, se se concluir que a lista de

tarefas do projecto deve ser uma determinada, esta lista deve constar da acta, mas

não deve constar a sequência de intervenções que levou a ela.

Devem ser seguidos os pontos da reunião.

Alguns aspectos técnicos a ter em conta no projecto são os seguintes:

O objectivo da reunião é o desenvolvimento do robot que segue uma fita e que

pára quando encontra um obstáculo, retomando a sua marcha quando este é

avisado.

Supõe-se que o ponto de partida é o kit da LEGO, que requer a montagem das

peças (de facto, esta não foi a situação encontrada em Portfolio dado que os

alunos receberam o robot já montado e só se tiveram de preocupar com o

software, mas para efeitos do planeamento de um projecto de uma maneira

mais global seugere-se que seja considerada).

Sugere-se ainda que se considerem tarefas associadas à exploração dos

diversos blocos de programação e dos sensores, e ainda ao aperfeiçoamento

do programa usando técnicas de programação em que se exploram os valores

numéricos dados pelos sensores e não apenas um sinal tudo ou nada.

O projecto deve incluir tarefas relativas à verificação de especificações e

também à apresentação e disseminação dos resultados obtidos (para fazer a

disseminação do projecto podemos enviar uma carta a cada lisboeta, o que não

parece prático; de que outra maneira se poderia fazer a disseminação).

Portfolio MEEC – Guia de Laboratório Pag. 37

Sugere-se que seja usado o quadro branco da sala para elaborar um esboço da lista de

tarefas, e do PERT. Pode começar-se por listar tarefas e depois organizar, por tentativa

e erro, a lista, reordenando-a, acrescentando tarefas em falta e cortando outras

supérfluas.

Este exercício visa desenvolver a capacidade de ter uma visão global sobre o projecto.

O que é que é verdadeiramente importante e que tarefas podemos agregar. Devem

evitar-se muitas tarefas, associadas a aspectos muito detalhados. Os detalhes seriam

incorporados em trabalhos posteriores, bem como outros aspectos tal como os custos

e recursos necessários.

Os tempos necessários para as diversas tarefas devem ser estimados. Deve usar-se

como unidade o dia. Trata-se de uma primeira estimativa que pode ser grosseira.

Estimativas mais precisas são obtidas posteriormente e dependem de mais recolha de

informação. Est detralhe cai fora do âmbito deste trabalho.

No ponto da ordem de trabalhos relativo às milestones, devem ser escolhidas

milestones que reflictam realizações intermédias importantes do projecto, por

exemplo, o kit de peças estar montado ou ter sido desenvolvido um programa que

executa uma determinada tarefa. As milestones devem ser associadas ao fim de uma

determinada tarefa.

Exemplo de utilização do MS Project

O MS Project é um programa que permite descrever e acompanhar a execução de

projectos. Vamos aprender a usar algumas das suas funções mais básicas descrevendo

o projecto de construção de um feixe hertziano para comunicação entre dois pontos

tal como foi discutido nas aulas teóricas.

Figura 2-1. Sistema de telecomunicações ponto a ponto por feixe hertziano.

A figura 2-1 mostra um esquema simplificado do sistema de comunicações. As

mensagens a transmitir são transformadas no sistema electrónico de interface com a

antena em sinais eléctricos adequados a serem transmitidos pela antena colocada na

torre 1. Esta antena transmite um sinal electromagnético na forma de um feixe

hertziano para a antena de recepção do repetidor. No repetidor, o sinal recebido é

amplificado por um amplificador electrónico que por sua vez o transmite por cabo à

Torre 1Torre dorepetidor

Torre 2

Feixe hertziano Feixe hertziano

Antena AntenaAntenas

Obstáculos ObstáculosE quipam entoelectrónico deinterface coma antena

E quipam entoelectrónico deinterface coma antena

A m pl i ficadorelectrónico

Portfolio MEEC – Guia de Laboratório Pag. 38

antena de emissão. Por sua vez, o sinal emitido pela antena de emissão do repetidor é

recebido pela antena da torre 2 e tratado pelo equipamento electrónico de recepção

para ser disponibilizado numa forma conveniente.

O projecto envolve assim as grandes classes de equipamento:

Torres de suporte das antenas.

Antenas

Equipamentos electrónicos

Software de controlo dos sistemas electrónicos

Assume-se que cada um destes equipamentos é desenvolvido/construído por equipas

diferentes. Supõe-se ainda que existem duas equipas de construção civil capazes de

construir simultâneamente as torres 1 e 2. Assim, a tarefa de construção destas torres

pode ser considerada numa primeira aproximação uma tarefa única, sendo a tarefa de

construção da torre do repetidor uma outra tarefa que tem de ser feita antes ou

depois desta. Finalmente, assume-se que o local das torres está definido previamente.

Número Nome Duração [dia]

1 Projectar Torres 30

2 Projectar antenas 30

3 Project. equip. electrónicos 30

4 Especificar sw 10

5 Construir torres 1 e 2 90

6 Construir torre repet. 80

7 Construir antenas 30

8 Construir equip. Electr. 60

9 Desenvolver sw 60

10 Montagem 20

11 Teste 30

Tabela 2-1. Tarefas e respectivo tempo de execução no planeamento do projecto do

sistema de comunicações por feixe hertziano.

A lista de tarefas deste projecto e respectivas durações em dias é a que se mostra na

tabela 2-1. Nesta fase da definição do projecto apenas se pretende identificar uma

visão global das tarefas. Se prosseguissemos o trabalho para além do laboratório, estas

tarefas seriam decompostas e dariam origem, cada uma, a um diagrama de

planeamento. Os tempos são também primeiras estimativas que, numa situação real,

seriam alvo de revisão face a informação mais detalhada.

A interdependência entre as tarefas definidas na tabela 2-1 é traduzida pelo diagrama

de PERT que se mostra na figura 2-2.

Portfolio MEEC – Guia de Laboratório Pag. 39

Figura 2-2. Diagrama de PERT que traduz a interdependência entre as tarefas para o

projecto do sistema de comunicações ponto a ponto.

As milestones são:

M1 – Projecto do sistema completo. Deverá estar disponível após a última das

tarefas 1, 2, 3 e 4 a ser executada. Descrição: Consiste no documento com o

projecto das torres, das antenas e dos equipamentos electrónicos e a

especificação do software.

M2 – Torres construídas. Deverá estar disponível após a última das tarefas 5 e 6

a ser executada. Descrição: Consiste nas torres 1 e 2 e na torre do repetidor.

Vamos agora dar entrada do planeamento deste projecto no MS Project.

Figura 2-3. Ícon do MS Project.

Clique no ícon inicial do MS Project (ver figura 2-3) no ícon do Windows. Abrindo o MS

Project surge uma janela com o aspecto da figura 2-4. Na parte superior desta janela

surgem diversas réguas de ícons e menus que permitem realizar operações diversas.

Em baixo há duas regiões principais.

Do lado esquerdo (marcada com um A vermelho) há uma tabela que permite

introduzir a lista das tarefas e dados sobre as tarefas, como a duração da tarefa, as

datas de início e fim ou a dependência de uma tarefa em relação a tarefas anteriores.

Do lado direito (marcado com um B vermelho) há uma zona onde será desenhado o

diagrama de Gantt, com barras que mostram o período de tempo em que as várias

tarefas estão activas. Mostrar-se-à ainda nesta zona informação adicional, tal como

setas que traduzem a interdependência das tarefas, as milestones e outra que não

utilizaremos neste trabalho. A parte superior da zona B tem uma graduação temporal

que aparece em dias.

1

2

3

4

5 6

7

8

9

10 10

Portfolio MEEC – Guia de Laboratório Pag. 40

Figura 2-4. Janela que surge quando se abre o MS Project. As letras A e B em vermelho

foram adicionadas para facilidade de referência neste texto.

Na coluna “Task name” dê entrada em linhas sucessivas das diversas tarefas. Em

seguida, na coluna imediatamente ao lado, com a indicação “duration” dê a entrada da

duração em dias de cada uma das tarefas. A janela fica com o aspecto da figura 2-5.

Figura 2-5. Aspecto após dar entrada da lista de tarefas e da respectiva duração.

Repare que a primeira coluna fica automaticamente com o número da tarefa (ver a

seta vermelha na figura 2-5).

Para além disso, aparecem barras na zona da direita cujo comprimento é proporcional

à duração da tarefa (seta azul na figura 2-5). Como não há nenhuma indicação das

datas de início e fim das tarefas, todas as tarefas começam no dia de “hoje” (dia em

que os dados são entrados), o qual está assinalado com um risco vertical vermelho.

Finalmente, Observe que a coluna “task mode” (assinalada com uma seta verde) foi

preenchida automaticamente. Existem dois valores para este campo: manual e

automático. Quando preenchemos a lista de tarefas o campo “task mode” é

inicializado em modo manual.

No modo manual de preenchimento, devemos indicar as datas de início e fim das

tarefas nas colunas respectivas. Pelo contrário, em modo automático, as datas de

Portfolio MEEC – Guia de Laboratório Pag. 41

início e fim das tarefas são calculadas pelo programa a partir das suas duracções

respectivas e da existência de dependências entre tarefas. Caso não haja dependência

de uma tarefa em relação a outras, ela é colocada a começar o mais cedo possível (no

dia de “hoje”).

Neste caso, iremos escolher para data de início do projecto a data de 2 de Janeiro de

2014. Dadas as hipóteses feitas (os vários projectos são feitos por equipas diferentes,

que podem trabalhar em paralelo), vamos colocar as tarefas 1, 2, 3 e 4 em modo

manual, escolhando como data de início a data de início do projecto (2 de Janeiro de

2014). Para tal, insira a data de início destas tarefas na coluna respectiva. Use o

procedimento explicado na figura 2-6.

Figura 2-6. Clicando numa célula da coluna start surge um botão triangular (assinalado

pela seta vermelha). Clicando neste botão é aberta uma janela com um calendário que

pode ser usada para defnir a data de início da tarefa respectiva.

Repare que, quando define a data de início das tarefas 1 a 4, a data de fim é

preenchida automaticamente e a barra indicadora da tarefa em actividade é deslocada

para ficar entre os limites indicados.

Coloque em seguida as tarefas 5 a 11 em modo automático. Para tal, coloque o cursor

em cima da célula da coluna “Task mode” e clique. Abra em seguida o menu usando

uma técnica semelhante à usada para obter o calendário e escolha “Auto scheduled”.

Faça isto para todas as tarefas. Observe que as barras mudam de cor mas a sua

posição não é alterada.

Portfolio MEEC – Guia de Laboratório Pag. 42

Defina agora as dependências entre tarefas com base no que está definido no

diagrama de PERT da figura 2-2. Para tal use a coluna “Predecessors”. De acordo com a

figura 2-2, a tarefa 5 depende da tarefa 1 ter sido completada. Assim, na coluna

“Predecessors” e na linha 5 deve colocar o número 1 (correspondente à tarefa 1).

Proceda de modo análogo para as outras ependências entre tarefas.

Quando uma tarefa depender de várias outras, os seus números devem ser listados

separados por ; (ponto e vírgula).

Figura 2-7. A tabela de definição do planeamento do projecto após a definição das

precedências.

Figura 2-8. O ícon “Entire Project” no tabulador “View”.

Figura 2-9. O diagrama de Gantt do projecto do sistema de telecomunicações.

Portfolio MEEC – Guia de Laboratório Pag. 43

Após a definição das precedências, a tabela de planeamento fica com o aspecto que se

mostra na figura 2-7. Para ver o diagrama de Gantt de uma forma global podemos usar

os botões do tabulador “View” (ver as barras de comandos na parte superior do

monitor) para zoom. Em particular, o botão “Entire Project”, que se mostra na figura 2-

8 permite ajustar a escala de modo a que o conjunto do projecto seja visível

simultâneamente. A figura 2-9 mostra o resultado. Repare que as setas que ligam as

barras e que foram acrescentaddas automaticamente pelo MS Project traduzem a

interdependência entre as tarefas associadas às diferentes barras.

Vamos agora acrescentar as milestones. No MS Project as milestones são definidas

como uma tarefa de duração zero. Para acrescentar uma milestone, clique na célula da

coluna “Task name”, na linha imediatamente abaixo à última tarefa. Em seguida clique

no separador “task” e, em seguida, no botão “Milestone” (figura 2-10). A tabela fica

com o aspecto da figura 2-11.

Figura 2-10. O botão “Milestone”. Este botão está situado do lado direito do tabulador

“task”.

Figura 2-11. Introdução de uma milestone.

Em seguida, escreva o nome da milestone (sobre <New Milestone>), por exemplo M1,

coloque “Task mode” em automático e, na coluna dos “Predecessors”, coloque o

número das tarefas no fim das quais a milestone tem de estar completa (neste caso, 1;

2;3;4). O bserve que a milestone é marcada com forma de um pequeno losango na

carta de Gantt. Repita para a milestone M2 (veja a definição desta milestone na página

8 deste guia).

Portfolio MEEC – Guia de Laboratório Pag. 44

Figura 2-12. Tabela de definição do planeamento do projecto. Versão final.

Figura 2-13. Carta de Gantt com a definição das milestones e da dependência entre

tarefas para o projecto do sistema de telecomunicações. Versão final.

O caminho crítico (ou seja, a sequência de tarefas tal que, se uma se atrasar, esse

atraso é reflectido no projecto) obtém-se do seguinte modo: No separador “View”

escolher “Other views” e, depois, “More views”. Em seguida “Detail Gantt”.

As tarefas que constituem o caminho crítico são mostradas a vermelho, indicando-se

para as restantes tarefas os dias restantes até ao fim do projecto. A figura 2-14 mostra

o caminho crítico assinalado a encarnado.

Portfolio MEEC – Guia de Laboratório Pag. 45

Figura 2-14. Carta de Gantt com o caminho crítico assinalado a encarnado.

O ficheiro resultante com o planeamento deve ser gravado com o nome Rel2-

PlanTelecom-XXXXXX-XXXXXX-XXXXXX.mpp em que XXXXXX são os números dos

elementos do grupo. Este ficheiro deve ser enviado ao professor presente no turno de

laboratório.

Utilização do MS Project para descrever o projecto do robot NXT

Cada grupo deve elaborar um ficheiro no MS Project correspondente ao projecto que

foi elaborado na reunião. Deve apresentar a lista de tarefas com o diagrama de Gantt e

as milestones. Deve ainda apresentar o caminho crítico calculado pelo MS Project.

Este ficheiro deve ter o nome Rel2-PlanRobot-XXXXXX-XXXXXX-XXXXXX.mpp em que

XXXXXX são os números dos elementos do grupo. Este ficheiro deve ser enviado ao

professor presente no turno de laboratório.

Elaboração da acta da reunião e de um relatório anexo

Cada grupo deve escrever uma versão da acta da reunião, de acordo com o que foi

explicado acima sobre a elaboração das actas. Deve ser usado o processador de texto

LATEX para escrever a acta, na forma de um ficheiro pdf.

A acta deve ter anexa um documento pdf gerado em LATEX em que se descreve o

planeamento do projecto do robot. Este documento deve conter:

Os objectivos do projecto;

A tabela do MS Project com a lista das tarefas, os seus tempos e a sua

interdependência.

A descrição das tarefas (1 parágrafo para cada tarefa).

A carta de Gantt gerada pelo MS Project com a indicação das Milestones e do

caminho crítico.

Portfolio MEEC – Guia de Laboratório Pag. 46

Para elaborar uma lista de itens no LATEX (por exemplo para descrever as sucessivas

tarefas), pode usar a sucessão de comandos:

\begin{itemize}

\item Texto a escrever sobre o primeiro item

\item Texto a escrever sobre o segundo item

\item Texto a escrever sobre o terceiro item, etc.

\end{itemize}

O ficheiro Rel2-Acta-XXXXXX-XXXXXX-XXXXXX.tex em que XXXXXX são os números dos

elementos do grupo, e o pdf produzido a partir dele, devem ser enviados ao professor

presente no turno de laboratório. Este documento deve conter como anexo técnico o

relatório do projecto.

– Fim da sessão 2 –

Portfolio MEEC – Guia de Laboratório Pag. 47

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. 48

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.

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).

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

1

2

3

4

5

6

7

8

9

10

Tempo [s]

Portfolio MEEC – Guia de Laboratório Pag. 49

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. 50

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 desloque-

o 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. 51

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. 52

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. 53

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. 54

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. 55

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. 56

> 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.

Figura 3-13. O robot move-se move-se cada vez mais lentamente à medida que se

aproxima da parede.

Parede

80 cm

20 cm

O robot move-sea 80% da potência

O robot move-sea 20% da potência

Robot

Robot

Portfolio MEEC – Guia de Laboratório Pag. 57

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.

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.

Bloco dosensorultrasónico

Dados desaída dosensor

Dados deentrada

Leituras dosensor

Parâmetro depotência

Blocomotor

Portfolio MEEC – Guia de Laboratório Pag. 58

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).

A

B C

Portfolio MEEC – Guia de Laboratório Pag. 59

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. 60

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. 61

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:

A

B

C D

Portfolio MEEC – Guia de Laboratório Pag. 62

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. 63

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. 64

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. 65

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. 66

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.

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.

Distância dereferência

Erro Multiplicapor ganho

(4)Robot

Sensor dedistância

PotênciaDistância àparede

Medida dadistância à parede

+-

Portfolio MEEC – Guia de Laboratório Pag. 67

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. 68

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. 69

Sessão nº 4

Projecto Integrador

Objectivos

O objectivo desta sessão é o desenvolvimento de um projecto que integra os

conhecimentos anteriores. Este projecto consiste num robot capaz de seguir uma fita

escura marcada num pavimento branco. Consideram-se duas abordagens, uma mais

simples, baseada em lógica, e outra mais complexa, baseada em realimentação

proporcional, mas que permite obter um melhor desempenho. Escrita de um relatório

em LATEX com a descrição crítica do projecto.

Observação importante

Os próximos trabalhos (trabalhos 5 e 6) serão ocupados, respectivamente:

Na preparação da apresentação final (sessão 5)

Na apresentação oral final (sessão 6).

A apresentação final (que será definida em mais detalhe no enunciado da sessão 5 de

laboratório) incluirá a apresentação de um projecto. Este projecto poderá ser um

projectos realizados na presente sessão (sessão 4) mas, neste caso, a nota da sessão 6

(que tem um peso duplo) será no máximo de 14 valores (isto não quer dizer que a nota

seja de 14 valores, mas que a nota máxima atingível é de 14 valores).

No trabalho 6, notas máximas superiores a 14 apenas podem ser atingidas por

projectos que tenham alguma inovação em relação ao que se faz na sessão 4. Isto não

implica que um trabalho, se inovar em relação ao que se faz na sessão 4, tenha

necessariamente uma nota superior a 14, mas apenas que a escala é expandida.

A nota da última sessão (sessão 6), que tem peso duplo, será dada dependendo

Da qualidade do projecto apresentado;

Da qualidade da apresentação oral realizada.

Por sua vez, a qualidade do projecto apresentado será avaliada com base na

originalidade do projecto apresentado e na capacidade de demonstrar que os

objectivos propostos são atingidos. Objectivos mais ambiciosos terão uma valorização

maior, mas apenas se forem atingidos. Objectivos muito interessantes mas que não

são atingidos terão uma valorização muito baixa ou nula, dependendo da situação

concreta.

Portfolio MEEC – Guia de Laboratório Pag. 70

Deste modo, deverá avaliar cuidadosamente o que se propõe fazer. Tenha em conta o

tempo limitado que tem. Conceba um projecto que comece com algo simples que tem

a certeza que pode realizar e expanda-o progressivamente, de um modo modular.

Reserve algum tempo desta sessão de laboratório (número 4) para fazer alguns

ensaios preliminares. Antes da sessão 5, reúna com os elementos do grupo pelo menos

uma vez e discuta o que pretende fazer. Tenha um plano alternativo de “segurança”.

Lembre-se de que pode sempre apresentar o trabalho da sessão 4 mas, se o fizer,

invista numa boa apresentação. No final deste enunciado apresentamos algumas

sugestões de projectos alternativos, mas confiamos na sua imaginação para nos

surpreender.

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

Objectivo do projecto

O objectivo do projecto consiste no desenvolvimento de um robot capaz de seguir uma

fita escura marcada num pavimento branco. Para resolver este problema, consideram-

se duas abordagens alternativas:

Uma abordagem mais simples, baseada em lógica,

Uma outra abordagem baseada em realimentação proporcional, que é mais

complexa mas que permite obter um melhor desempenho.

Abordagem baseada em lógica

Princípio de funcionamento

A figura 4-1 ilustra o princípio do seguimento da fita baseado em decisões lógicas.

Nesta situação, o robot tenta seguir o limite entre a zona de fundo branco e a fita

negra. Isto é feito da seguinte maneira:

Se o robot está predominantemente sobre o fundo branco (do lado esquerdo

da fita), a decião correcta é aumentar atribuir à roda esquerda uma velocidade

maior do que a da roda direita. Deste modo, o robot desloca-se para a

esquerda num movimento de rotação, que faz com que o sensor entre na zona

escura, correspondente à fita. Esta situação mostra-se na figura 4-1 (a).

Conversamente, se o robot está predominantemente sobre o fundo escuro, tal

como se mostra na figuira 4-1 (b), deverá ser a roda direita a ter uma

Portfolio MEEC – Guia de Laboratório Pag. 71

velocidade maior do que a esquerda, o que levará o robot a deslocar-se para a

esquerda.

Figura 4-1. Princípio do seguimento da fita baseado em lógica. As setas a azul

representam as velocidades das rodas em cada uma das situações.

Deste modo o sensor vai avançando “aos sss”, ora sobre o fundo branco, ora sobre a

fita escura.

Teste da abordagem baseada em lógica

O programa na linguagem NXT-G que permite realizar a estratégia de seguimento da

fita baseada em lógica, que se explicou acima, mostra-se na figura 4-2.

Figura 4-2. Seguimento da fita baseado em lógica.

Fita

Velocidadeda rodaesquerda

Velocidadeda rodadireita

Sensor

Fita

Velocidadeda rodaesquerda

Velocidadeda rodadireita

Sensor

(a) (b)

Portfolio MEEC – Guia de Laboratório Pag. 72

Figura 4-3. Janela de configuração do bloco de comutação do programa da figura 4-1.

A janela de configuração do bloco de decisão associado ao sensor de intensidade

luminosa mostra-se na figura 4-3. Ajustando o limiar de decisão do sensor (valor da

intensidade luminosa que leva o bloco a decidir se está numa zona branca ou numa

zona escura) leva a que o robot avance fazendo oscilações em torno de uma linha

imaginária que está mais à esquerda ou mais à direita, consoante o valor do limiar.

Repare que os motores devem ser colocados em modo de funcionamento ilimitado.

Experimente este programa. Experimente usar vários valores para o limiar do sensor e

para as velocidades (maior e menor) das rodas.

Figura 4-4. Seguimento da fita baseado em lógica, com paragem face a um obstáculo.

Uma variante deste programa é o que se mostra na figura 4-4, que leva a que o robot

siga a fita tal como foi explicado acima, mas que, em cada ciclo de execução, testa se

há um obstáculo (detectado com o sensor ultrasónico), forçando os motores a parar

em caso afirmativo.

Explique o funcionamento do programa da figura 4-4. Deverá incluir esta explicação no

seu relatório final. Experimente este programa.

Abordagem baseade em realimentação proporcional

Princípio de funcionamento

Uma dificuldade com o seguimento da fita baseado em lógica é que, quando as rodas

variam a sua velocidade o fazem sempre num modo “tudo para a direita ou tudo para

Portfolio MEEC – Guia de Laboratório Pag. 73

a esquerda”. Mesmo que o desvio seja pequeno, o programa “age à bruta”, levando a

diferença de velocidades a ser sempre a mesma, não havendo pequenos ajustes. Em

particular, se o robot estiver perfeitamente alinhado, o programa força-o a rodar,

desalinhando-se, para depois o forçar a voltar na direcção correcta.

Estas dificuldades, que resultam num movimento ondulante que gasta muita energia e

desgasta os motores pelas variações constantes de velocidade, seriam evitadas se um

pequeno erro no alinhamento do motor correspondesse a um pequeno ajuste na

diferença entre as velocidades dos motores. Se o ajuste na diferença de velocidades

dos motores fosse proporcional ao erro (diferença) entre a intensidade luminosa

medida e a especificada, na situação em que este erro fosse zero, o robot seguiria em

frente dado que ambos os motores estariam à mesma velocidade. Evitar-se-iam assim

os movimentos oscilatórios.

Figura 4-5. Seguimento da fita com controlo proporcional.

A figura 4-5 mostra o diagrama de blocos que explica o programa de seguimento da

fita com controlo proporcional. Sugere-se que recorde o que aprendeu sobre controlo

por realimentação da posição do robot no trabalho 3.

A referência R é uma constante que traduz o nível de intensidade luminosa que o

sensor ter quando o robot está na posição desejada no que diz respeito à fita.

Tipicamente tem um valor de 55 nas unidades de medida do sensor (que não são

especificadas pela LEGO). Repare que a referência deverá estar mais ou menos a meio

do intervalo numérico entre a medida do sensor quando este aponta para a fita escura

(mínimo), e quando aponta para a superfície branca (máximo).

Se a medida do sensor fôr exactamente igual ao valor da referência, o erro (diferença

entre ambas estas quantidades) será nulo e o desvio de velocidade D (que é igual ao

produto do ganho K pelo erro) será zero. Assim, a velocidade de ambas as rodas será

igual a V.

Referência

K+

-

V

V

+

+

-

+

RodaEsquerda

RodaDireita

Sensorde luz

Posiçãodosensor

Potênciatotalmotoresquerdo

EPotênciatotalmotordireito

ErroR Robot+

fita

Diferencialdevelocidade

D

Portfolio MEEC – Guia de Laboratório Pag. 74

Suponhamos que o sensor mede uma intensidade luminosa menor. Isso significa que

está a apontar sobretudo para a zona escura. De acordo com a figura 4-5, o erro, dado

que é a diferença entre a referência e a medida do sensor será positivo (a medida do

sensor é inferior à referência). Assim, a quantidade D (o produto do erro pelo ganho K)

é também positiva. Assim, a roda esquerda terá uma velocidade V-D, que é menor do

que a velocidade V+D da roda direita pois D > 0. Assim, o robot vira para a esquerda,

na direcção da zona branca (compare com a figura 4-1).

Conversamente, se a intensidade da luz medida pelo sensor for maior do que a

referência, D é negativo e a roda esquerda anda mais do que direita, forçando o robot

a viorar para a direita. A grande diferença em relação aos controlo lógico (“tudo ou

nada”) é que estes ajustes são agora proporcionais ao erro e, portanto, muito mais

suaves.

Teste da abordagem baseada em realimentação proporcional

A figura 4-6 mostra um programa na linguagem NXT-G que permite executar o

seguimento da fita baseado em realimentação proporcional, de acordo com o

diagrama de blocos da figura 4-5.

Figura 4-6. Seguimento da fita baseado em realimentação proporcional.

Identifique neste programa cada um dos elementos do diagrama da figura 4-5.

Teste o programa. Comece por experimentar com V=40% e K=1.

O que acontece quando aumenta ou diminui o ganho?

O que acontece se V=60%?

Escrita do relatório

Escreva em LATEX um relatório abordando os seguintes aspectos:

1. Descrição e análise das limitações do programa de seguir a fita baseado em

lógica;

Portfolio MEEC – Guia de Laboratório Pag. 75

2. Explique o funcionamento do programa da figura 4-4, em que o programa que

segue a fita é alterado para parar face a um obstáculo, prosseguindo o robot

quando o obstáculo é removido.

3. Descrição e análise das limitações do programa de seguir a fita baseado em

realimentação proporcional;

Para escrever o relatório em LATEX, copie o ficheiro template para um ficheiro com o

nome Rel4-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).

Ideias para o projecto final

Atenção: As seguintes ideias não foram testadas pelo que não são garantidamente

todas exequíveis. Repare ainda que têm níveis de dificuldades diferentes.

Quando o robot está a seguir a fita com controlo lógico deve parar quando há

um som forte (por exenplo palmas), recomeçando a andar quando detecta um

novo ruído forte (este é obtido de um modo simples modificando um programa

estudado).

Igual ao anterior, mas seguindo a fita com controlo proporcional (um pouco

menos simples, mas também simples).

Explorar o sensor de carga da bateria, desencadeando acções (por exemplo,

procurar automaticamente uma posição onde “está” uma fonte de carga)

quando esta desce abaixo de um determinado valor.

Garantir que o robot que está a seguir a fita com realimentação proporcional

pára quando detecta um obstáculo com o sensor ultrasónico e recomeça a

andar quando ele é removido.

Quando o robot está a seguir a fita com realimentação proporcional e encontra

um obstáculo com o sensor ultrasónico inverte o sentido da sua marcha e

afasta-se do obstáculo.

Quando o robot está a seguir a fita com retroacção proporcional e encontra um

obstáculo, contorna-o até reencontrar a fita do outro lado e continuar.

Com controlo proporcional a variação da potência dos motores é proporcional

ao erro. Adicione a este termo um outro termo proporcional (com outro ganho)

à taxa de variação do erro. Será que conseguimos aumentar a velocidade sem o

robot se perder nas curvas?

Quando o robot está numa zona “branca”, procura a fita e depois começa a

segui-la normalmente.

Pode ainda usar comunicações através do Bluetooth para incorporar no seu

projecto. Receberá mais informação sobre este assunto na aula teórica e no

enunciado da sessão 5 do laboratório. Os trabalhos que envolvem

Portfolio MEEC – Guia de Laboratório Pag. 76

comunicações implicam que dois (ou mais) grupos trabalhem em conjunto para

atingir o objectivo, dado que são necessários pelo menos dois robots.

A sua própria ideia (a melhor de todas!).

– Fim da sessão 4 –

Portfolio MEEC – Guia de Laboratório Pag. 77

Sessão nº 5

Preparação da apresentação final

Objectivos

O objectivo desta sessão é a preparação de uma apresentação a ser feita na sessão

final (sessão nº 6) e que se refere a um projecto com o robot NXT. No final desta

sessão nº 5 deve ser entregue o ficheiro em formato power-point com a apresentação.

Elementos a entregar no final da sessão

No final desta sessão, cada grupo deve entregar o ficheiro power-point com os slides

da apresentação final. Este ficheiro deve satisfazer as seguintes especificações:

O ficheiro deve ser em formato pdf com no máximo 15 slides, mais 1 slide com

o título e número e nome dos autores.

O nome do ficheiro a enviar para o docente deve ser Apresentacao- XXXXXX-

XXXXXX-XXXXXX.ppt , em que XXXXX é o número de cada um dos alunos que

compõem o grupo.

Descrição do trabalho

Neste trabalho deve ser preparada a apresentação final. Esta consta de no máximo 15

slides, mais 1 slide com o título e nome dos autores O número de slides pode ser

inferior a 15, mas sempre maior ou igual a 10 (mais 1 slide de rosto).

A apresentação final pode incluir um filme com a duração máxima de 3 minutos. O

filme será realizado durante a sessão 5 (a que diz respeito este guia de trabalho). Os

alunos deverão colocar em funcionamento o seu projecto, pedindo ao docente que

realize a filmagem com a câmnara fixa.

A apresentação final consta da apresentação de um projecto. Este projecto poderá ser

um projectos realizados na sessão 4 mas, neste caso, a nota da sessão 6 (que tem um

peso duplo) será no máximo de 14 valores (isto não quer dizer que a nota seja de 14

valores, mas que a nota máxima atingível é de 14 valores).

Na sessão 6, notas máximas superiores a 14 apenas podem ser atingidas por projectos

que tenham alguma inovação em relação ao que se faz na sessão 4. Isto não implica

que um trabalho, se inovar em relação ao que se faz na sessão 4, tenha

necessariamente uma nota superior a 14, mas apenas que a escala é expandida.

A apresentação deverá incluir a descrição detalhada de um bloco do NXT-G que seja

usado no projecto (pode haver descrições de outros blocos se for julgado convceniente

para a explicação do projecto.

Portfolio MEEC – Guia de Laboratório Pag. 78

As apresentações devem incluir os seguintes pontos:

Objectivo proposto

Descrição explicativa do programa

Explicação crítica das opções tomadas.

Resultados obtidos e validação

A apresentação deverá ser feita de forma que todos os elementos do grupo nela

participem, falando cada um tempos aproximadamente iguais.

A nota da última sessão (sessão 6), que tem peso duplo, será dada dependendo

Da qualidade do projecto apresentado, incluindo

o Qualidade técnica

o Criatividade

Da qualidade da apresentação oral realizada.

Tenha em atenção que slides bons são slides simples e que permitem transmitir da

maneira mais eficaz a mensagem ao público suportando a apresentação oral. Ao

elaborar os slides tenha em atenção que:

Efeitos especiais com o power point não são valorizados.

O conjunto de slides deve ser estruturado (pense nos principais pontos da

apresentação).

Cada slide deve transmitir uma ideia central de modo claro.

Uma imagem vale mil palavras (mas não abuse das imagens).

A qualidade do projecto apresentado será avaliada com base na originalidade do

projecto apresentado e na capacidade de demonstrar que os objectivos propostos são

atingidos. Objectivos mais ambiciosos terão uma valorização maior, mas apenas se

forem atingidos. Objectivos muito interessantes mas que não são atingidos terão uma

valorização muito baixa ou nula, dependendo da situação concreta.

Haverá ainda uma componente da nota que depende da apreciação dos trabalhos

apresentados. Esta componente da nota é explicada em detalhe no guia da sessão 6. A

nota de cada trabalho não depende destas apreciações, sendo da responsabilidade

exclusiva do docente que lecciona a sessão de laboratório respectiva.

Tendo em conta o exposto, deverá avaliar cuidadosamente o que se propõe fazer.

Tenha em conta o tempo limitado que tem. Conceba um projecto que comece com

algo simples que tem a certeza que pode realizar e expanda-o progressivamente, de

um modo modular.

Lembre-se de que pode sempre apresentar um dos trabalhos da sessão 4 mas, se o

fizer, invista numa boa apresentação. No final deste enunciado apresentamos algumas

Portfolio MEEC – Guia de Laboratório Pag. 79

sugestões de projectos alternativos, mas confiamos na sua imaginação para nos

surpreender.

Anexo 1 - Ideias para o projecto final

Atenção: As seguintes ideias não foram testadas pelo que não são garantidamente

todas exequíveis. Repare ainda que têm níveis de dificuldades diferentes. São ideias

meramente indicativas, existindo liberdade de seguir outras ideias para o projecto

final.

Quando o robot está a seguir a fita com controlo lógico deve parar quando há

um som forte (por exenplo palmas), recomeçando a andar quando detecta um

novo ruído forte (este é obtido de um modo simples modificando um programa

estudado).

Igual ao anterior, mas seguindo a fita com controlo proporcional (um pouco

menos simples, mas também simples).

Explorar o sensor de carga da bateria, desencadeando acções (por exemplo,

procurar automaticamente uma posição onde “está” uma fonte de carga)

quando esta desce abaixo de um determinado valor.

Garantir que o robot que está a seguir a fita com realimentação proporcional

pára quando detecta um obstáculo com o sensor ultrasónico e recomeça a

andar quando ele é removido.

Quando o robot está a seguir a fita com realimentação proporcional e encontra

um obstáculo com o sensor ultrasónico inverte o sentido da sua marcha e

afasta-se do obstáculo.

Quando o robot está a seguir a fita com retroacção proporcional e encontra um

obstáculo, contorna-o até reencontrar a fita do outro lado e continuar.

Com controlo proporcional a variação da potência dos motores é proporcional

ao erro. Adicione a este termo um outro termo proporcional (com outro ganho)

à taxa de variação do erro. Será que conseguimos aumentar a velocidade sem o

robot se perder nas curvas?

Quando o robot está numa zona “branca”, procura a fita e depois começa a

segui-la normalmente.

Pode ainda usar comunicações através do Bluetooth para incorporar no seu

projecto. Os trabalhos que envolvem comunicações implicam que dois (ou

mais) grupos trabalhem em conjunto para atingir o objectivo, dado que são

necessários pelo menos dois robots. O estabelecimento de comunicações entre

dois robots implica um procedimento de emparelhamento entre os robots que

é moroso e deve ser feito repetidamenmte dado que a ligação “cai copm

frequência. Assim, a menos que se sinta muito seguro do que quer fazer, não se

aconselha o uso de comunicações no projecto.

A sua própria ideia (a melhor de todas!).

Portfolio MEEC – Guia de Laboratório Pag. 80

Anexo 2 – Comunicação entre robots NXT com o BLUETOOTH.

A comunicação sem fios entre os robots NXT é feita através do protocolo de

comunicação BLUETOOTH. Este protocolo permite estabelecer a comunicação a curtas

distâncias (menos de 30 m).

Figura 5-1. Comnunicação sem fios entre robots NXT com o protocolo BLUETOOTH.

Tal como se mostra na figuira 5-1, no sistema implementado no NXT pode haver até

um máximo de 4 robots a comunicar que têm endereços dados pelos dígitos 0 a 4. O

robot com o endereço 0 é o “master” e os outros são os “slaves”.

Cada um dos robots tem uma caixa de correio que está numerada de 1 a 4. Assim,

quando queremos enviar uma mensagem de um robot a outro é necessário especificar

o endereço do robot de destino e a caixa de correio respectiva.

Comece por atribuir um nome a cada um dos robots que pretende ligar através do

BLUETOOTH. Para tal, use o botão do canto superior esquerdo do menu do ambiente

de trabalho do NXT-G, que se mostra na figura 5-2. Em seguida, escreva o nome na

zona da figura 5-3 e carregue na tecla virtual de entrada do menu (à direita do nome).

Sugere-se que os robots recebam os nomes NXT1 a NXT8, consoante a bancada em

que se encontram.

Caixa docorreio 1 a 4

NXT0

NXT1

Caixa docorreio 1 a 4

NXT2

Caixa docorreio 1 a 4

NXT3

Caixa docorreio 1 a 4

Portfolio MEEC – Guia de Laboratório Pag. 81

Figura 5-2. Menu de execução do ambiente de programação do NXT-G. O botão

assinalado com o círculo permite atribuir um nome ao robot seleccioado.

Figura 5-3. Ao clicar no botão assinalado na figura 5-2, surge este menu. Pode atribuir

um nome ao robot na zona assinalada pelo círculo.

Após proceder à atribuição dos nomes, e antes de proceder à troca de mensagens, que

é controlada através de blocos da linguagem NXT-G que é explicada mais abaixo, é

necessário ligar o bluethooth nos robots a usar, e depois emparelhá-los, ou seja, levar

a que eles se reconheçam mutuamente.

Figura 5-4. Ícon do BLUETOOTH no menu do NXT.

Para ligar o BLUETOOTH, procure o respectivo ícon (figura 5-4) no menu do NXT e

prima a tecla laranja. No submenu onde entrou procure o símbolo de $ e prima a tecla

laranja para colocar o BLUETOOTH em ON. Deverá ainda garantir que o BLUETOOTH

está “visible” (símbolo do olho aberto (esta é a configuração de defeito, pelo que não

tem de a alterar).

O reconhecimento mútuo entre robots consegue-se seguindo a sequência de passos

que se mostra na figura 5-5 (esta sequência é extraída do manual da LEGO).

Portfolio MEEC – Guia de Laboratório Pag. 82

Figura 5-5. Passos do emparelhamento dos NXT através do BLUETOOTH. Extraído do

manual do LEGO NXT.

Ocorre frequentemente que a ligação “cai”. Nesse caso deve repetir o procedimento a

partir do passo 2 da figura 5-2 (“Search”), tendo em conta que apenas é necessário dar

a password na primeira vez.

A partir do momento em que os robots estão emparelhados é possível executar

programas que enviam mensagens de uns robots para os outros.

As figuras 5-6 e 5-7 mostram, respectivamente, os blocos para enviar e receber

mensagens. Existem variantes destes blocos, por exemplo associadas a uma decisão ou

a uma espera, de um modo semelhgante ao dos blocos dos sensores.

Portfolio MEEC – Guia de Laboratório Pag. 83

Figura 5-6. Bloco de envio de mensagem e respectivo menu de configuração

Figura 5-7. Bloco de recepção de mensagem e respectivo menu de configuração.

As figuras 5-8 a 5-11 referem-se ao exemplo 1 do envio de mensagens entre robots

NXT com o BLUETOOTH. Um dos robots (com o endereço 0) envia repetidamente uma

mensagem a outro (com o endereço 1 e para a caixa de correio 1 deste).

Figura 5-8. Exemplo 1. Programa para enviar repetidamente uma mensagem, que

corre no NXT com endereço 0.

Figura 5-9. Exemplo 1. Configuração do bloco “Envia mensagem” do programa da

figura 5-8.

O outro robot executa um ciclo em que detecta a chegada da mensagem. Se chegou

uma mensagem diz uma palavra. Caso contrário diz outra.

Portfolio MEEC – Guia de Laboratório Pag. 84

Figura 5-10. Exemplo 1. Programa para receber uma mensagem, que corre no NXT com

endereço 1.

Figura 5-11. Exemplo 1. Configuração do bloco “Recebe mensagem” do programa da

figura 5-10.

As figuras 5-12 e 5-13 mostram um outro exemplo em que dois robots trocam

mensagens entre si para sincronizarem os seus movimentos (com um pouco de

imaginação, ou muita imaginação se preferir, são o Fred NXT e a Ginger LEGO, grandes

bailarinos). O robot Fred desloca-se um pouco, pára e envia uma mensagem para a

Ginger, ficando por sua vez à espera de uma mensagem. Quando a Ginger recebe a

mensagem, desloca-se um pouco, pára e envia uma mensagem para o Fred, repetindo-

se esta sequência.

Figura 5-12. Exemplo 2. Programa que corre no robot Fred.

Portfolio MEEC – Guia de Laboratório Pag. 85

Figura 5-13. Exemplo 2. Programa que corre no robot Ginger.

– Fim da sessão 5 –

Portfolio MEEC – Guia de Laboratório Pag. 86

Sessão nº 6

Apresentação final

Objectivos

O objectivo desta sessão é a apresentação final pública do projecto.

Elementos a entregar no final sa sessão

No final desta sessão, cada aluno deve entregar uma folha com a apreciação dos

trabalhos realizados pelos outros grupos.

Cada aluno deverá ir para a aula com a folha que se inclui em apêndice previamente

impressa. Não serão aceites folhas que não sejam este modelo. Durante a sessão

deverá escrever os seus comentários nesta folha à medida que as apresentações forem

feitas. Estas apreciações não influenciam a nota dos outros alunos mas permitem subir

a nota de quem as escreve de até 1 valor (dependendo da apreciação feita pelo

docente dos seus comentários).

Descrição do trabalho

Nesta sessão cada um dos grupos deverá fazer uma apresentação de 15 minutos (que

foi preparada na sessão 5).

Todos os elementos do grupo deverão falar 5 minutos.

Uma parte deste tempo pode ser usada para passar um vídeo de até 3 minutos sobre o

projecto realizado. Sugere-se que a passagem do vídeo seja acompanhada de

comentários, que devem ser cuidadosamente preparados.

O tempo total da apresentação é rigorosamente controlado, sendo a apresentação

terminada pelo docente ao fim de 15 minutos. O facto de a apresentação não ser

completada no tempo previsto implica uma penalização. Suguere-se que os alunos

façam um ensaio antes da aula, no seu tempo próprio.

A presença nas aulas para todos os alunos é obrigatória durante todas as

apresentações.

Quando um grupo faz uma apresentação, todos os outros devem estar atentos e

preencher a folha de apreciação que se inclui em anexo (ver elementos a entregar no

final da sessão).

No final de cada apresentação pode haver 1 pergunta rápida feita pela audiência.

Portfolio MEEC – Guia de Laboratório Pag. 87

Portfolio MEEC 2015/2016 – Apreciação dos trabalhos finais (1 de 2)

Nº___________________ Nome________________________ Grupo nº_______

Turno nº____________ Dia da semana e hora do lab._______________________

Cada aluno deverá preencher esta folha para cada um dos trabalhos apresentados,

excepto para o do seu grupo. O preenchimento é feito durante a sessão de laboratório.

Marque a apreciação global com um círculo.

Marque “fraco” ou “forte” com um círculo consoante o seu comentário se referir a um

ponto fraco ou forte. Apenas pode referir um ponto por apresentação (seja selectivo!).

Grupo 1 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte/fraco:________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Grupo 2 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte/fraco:________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Grupo 3 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte:_____________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Grupo 4 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte:_____________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Portfolio MEEC – Guia de Laboratório Pag. 88

Portfolio MEEC 2015/2016 – Apreciação dos trabalhos finais (2 de 2)

Identifique também esta folha

Nº___________________ Nome________________________ Grupo nº_______

Turno nº____________ Dia da semana e hora do lab._______________________

Grupo 5 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte:_____________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Grupo 6 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte/fraco:________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Grupo 7 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte/fraco:________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

Grupo 8 Apreciação global : Fraco Médio Bom Muito Bom

Pontoforte/fraco:________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

_______________________________________________________________________

– Fim da sessão 6 –