Portfolio MEEC - fenix.tecnico.ulisboa.pt · captar informação e comunicá-la ao computador que...
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 –