portfolio meec - fenix.tecnico.ulisboa.pt · constituem os “olhos e os ouvidos” do robot e...
TRANSCRIPT
Portfolio MEEC – Guia de Laboratório Pag. 1
Mestrado Integrado em
Engenharia Electrotécnica e de Computadores
2013/2014 – 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) 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 comunicaremi.
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 por si só é já um objectivo interessante para a disciplina.
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:
Portfolio MEEC – Guia de Laboratório Pag. 3
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 profissional (o LATEX
para a geração de documentos, o MS project para o planeamento de projectos, o
Power Point para criar apresentações). 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.
O nome do laboratório foi escolhido por Pedro Nunes (representado numa gravura a
seguir) 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-1. Pedro Nunes (1502-1578).
Portfolio MEEC – Guia de Laboratório Pag. 4
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. 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).
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
estrelas são as novas realidades tecnológicas, que o mosaico da figura 0-3 palidamente
reflecte.
Portfolio MEEC – Guia de Laboratório Pag. 5
Figura 0-3. 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.
Portfolio MEEC – Guia de Laboratório Pag. 6
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 sofisticados.
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 desempenhando 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 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, duas referências
úteis (sobretudo a primeira) são:
T. Griffin. The art of LEGO mindstorms NXT-G programming. No Starch Press, 2010.
L. Valk. The LEGO mindstorms NXT 2.0 discovery book. 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 (cada grupo elabora um 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.
Portfolio MEEC – Guia de Laboratório Pag. 8
Figura 1-1. A parte essencial do robot NXT da LEGO. Inclui o processador e interfaces.
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 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.
Portfolio MEEC – Guia de Laboratório Pag. 9
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.
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.
Portfolio MEEC – Guia de Laboratório Pag. 10
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.
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 de várias maneiras. A maneira mais básica é
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, constituindo cadeias
de acções. A seguir veremos 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.
Portfolio MEEC – Guia de Laboratório Pag. 11
Abre-se o seguinte menu que permite o acesso aos programas disponíveis neste
computador e que se mostra na figura 6-1.
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.
Portfolio MEEC – Guia de Laboratório Pag. 12
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
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 a instrução
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
Portfolio MEEC – Guia de Laboratório Pag. 27
necessidade...) levarão ao longo do tempo, mesmo para além desta disciplina, a
aprender mais coisas sobre o LATEX.
Pode parecer à primeira vista que o LATEX é mas 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,
Portfolio MEEC – Guia de Laboratório Pag. 28
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).
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álito sulforoso revela-
se um obediente cãozinho).
Portfolio MEEC – Guia de Laboratório Pag. 29
Figura 37-1. Selecção de um ficheiro no TeXnic.
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
Portfolio MEEC – Guia de Laboratório Pag. 30
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
\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
comando {\bf Texto a colocar em negrito} gera texto em negrito (“bold face”).
Note que os saltos de linha não são interpretados como um parágrafo. Para fazer
parágrafo deverá inserir uma linha em branco. Se colocar várias linhas em branco elas
são ignoradas para além da primeira.
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.
Portfolio MEEC – Guia de Laboratório Pag. 31
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.
Acentos e cedilhas
Para escrever sinais gráficos, podem usar-se os seguintes comandos em modo não
matemático:
ç -- \c{c}
ã -- \~a
é -- \’e
à -- \`a
Alternativamente, pode incluir-se entre os pacotes usados (logo no início, antes de
\begin{document}
\usepackage[latin1]{inputenc}
Portfolio MEEC – Guia de Laboratório Pag. 32
e usar as teclas normais para inclusão de sinais gráficos.
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. 33
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 –