Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo...

38
Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques

Transcript of Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo...

Page 1: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Projecto: Robô sensorizado com LEGO Mindstorms

Escola de Verão de Física 2011

Coordenador: Paulo Vicente MarquesMonitor: Manuel Jorge Marques

Page 2: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

1ª ParteConceitos-base de programação

Page 3: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

LabVIEW – o que é?

Uma linguagem de programação! Existem várias à escolha – C, Python, Assembly,

BASIC, Java, ... LabVIEW é uma linguagem gráfica: em vez de

comandos escritos, usam-se blocos e fios de ligação entre eles;

Duas vistas principais: painel frontal e diagrama de blocos;

Na prática, constroem-se instrumentos virtuais (Vis), operados a partir do painel frontal.

Page 4: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

04/27/23 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

4

Diagrama de Blocos

Painel Frontal

Introdução ao LABVIEWTM

Page 5: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

5

Painel Frontal

Painel FrontalControlos = Entradas (controls) (inputs)

Indicadores = Saídas (indicators) (outputs)

Introdução ao LABVIEWTM

Page 6: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

04/27/23 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

6

Diagrama de BlocosComponentes interligados por fios

Código fonte

Esquema de fluxo de dados

Block Diagram

Introdução ao LABVIEWTM

Page 7: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

04/27/23 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

7

Ferramentas do painel “Icon

pane”Controlos numéricos

Botão de controlo booleano

Indicador de barra (Slide indicator)

Etiqueta (Label)

Janela do painel frontal

Page 8: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

8

Terminais de controlo numérico (Numeric control terminals)

Terminal de indicador de barra (Slide indicator terminal)

Terminal de controlo booleano (Boolean control terminal)

Função de soma (Add function)

Função de comparação (Comparison function)

Função Booleana

Função de temporização (Timing function)

Constante numérica (Numeric constant)

Janela do diagrama de blocos

Page 9: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

9

Fios

Nodos

Escalar 1D Array

Numérico

Booleano

Texto (String)

Laranja (virgula flutuante)Azul (inteiro)

Verde

Roxo

2D Array

Hot spot

Os terminais de controlo têm bordas mais espessas do que os dos indicadores

Diagrama de blocos

Page 10: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

10

• Familiarize-se com o painel frontal e o diagrama de blocos• Habitue-se a utilizar a ajuda em contexto (Ctrl + H)• Construa um VI que

– Some e subtraia dois valores indicados por controlos numéricos (inputs)

– Apresente os resultados em dois indicadores numéricos diferentes (outputs)

• Utilize pontas de prova e execução ilustrada ...

Primeiro Exercício

Page 11: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

04/27/23 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

11

Estruturas-base num programa

Loops while e for; Shift registers; Estruturas condicionais (case structures); Estruturas sequenciais; Formula nodes;

Page 12: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

04/27/23 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

12

While loopFunctions → Structures palette

O código incluído pode ser repetido

Faz (Executa o diagrama dentro do Loop)Enquanto (While) a condição é FALSA

Terminal de iteração

Terminal Condicional

Continua se for verdade

Muito Importante!

Page 13: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

13

Exercício• Use uma “While Loop” para executar continuamente a soma de

duas entradas numéricas, até que o resultado seja igual a zero ou o botão de “STOP” seja pressionado.

– (use o primeiro exercício como ponto de partida)

• Use a função de “Wait (ms)” para prevenir a utilização a 100% do CPU

Page 14: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

04/27/23 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

14

Registos de deslocamento (Shift registers)

• Disponíveis nas bordas esquerda, ou direita, das estruturas “loop”• Carregar com botão direito na borda e seleccionar “Add Shift Register”• Terminais do lado direito guardam dados após a execução da iteração• Terminais do lado esquerdo fornecem dados ao início da nova iteração

Antes do início da “Loop”

Primeira Iteração

SegundaIteração

ÚltimaIteração

Valor Inicial

Valor 1

Valor 1

Valor 2

Valor 2

Valor 3

Valor 3ValorInicial

Guardam valores de uma iteração para a seguinte

Page 15: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

15

Shift registers – cont.

Carregar no botão direito sobre o terminal esquerdo para adicionar novos elementos

Carregar no botão direito sobre a borda para um novo “shift register”

Este método difere da utilização de vários “shift registers”

• Um “shift register” com terminais adicionados guarda vários valores anteriores de uma única variável.

• Vários “shift registers” guardam o último valor de várias variáveis.

Adaptam-se a qualquer tipo de dados

Page 16: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

16

Inicialização de “shift registers”

RUN 1

RUN 2

Inicializado Não inicializado

Valor inicial = 5

Valor inicial = 7

Valor inicial = 0

Valor inicial = 8

Page 17: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

17

For Loop

• Executa o diagrama dentro do “loop” um número pré-determinado de vezes• Os “shift registers” podem ser igualmente criados na borda

Terminal de contagem(Numerical input)

Page 18: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

18

Exercício – Sequência de Fibonacci0 1 1 2 3 5 8 13 21 34 55 89 144 ...

Use uma “For Loop” e “Shift Registers” de forma a calcular e apresentar numa “Waveform Chart”, os valores da sequência de Fibonacci para 2 ≤ n ≤ 11

(1 2 3 5 8 13 21 34 55 89)

Page 19: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

19

Estruturas condicionais (Case Structures)Na subpalete de estruturas da palete de Funções

Inclua nodos ou arraste-os para o interior da estrutura

Amontoadas como um baralho de cartas, só um dos casos é visível

Page 20: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Casos Booleanos e Numéricos

Nota: Todas as saídas possíveis da estrutura têm que ser ligadas

Gamas numéricas também são possíveis

Page 21: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

21

ExercícioCrie um VI que calcule a raiz quadrada de um número,

indicado num controlo numérico, e apresente o resultado num indicador numérico

Se o número for menor que zero, a saída deverá ser NaN.

Page 22: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

22

Estruturas sequenciais (Sequence Structures)

• Executa diagramas sequencialmente, Frame 0 (0..x), onde x é o número total de “frames”

• Empilhadas como um baralho de cartas, só um “frame” está visível

Page 23: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

23

Sequence Locals• Passam dados de um “frame” para “frames” futuros• Criados na borda da estrutura sequencial

“Sequence local” criado no frame 1

Dados não disponíveis

Dados disponíveis

Page 24: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

24

Flat Sequence Structure

A ideia é a mesma de uma estrutura “Stacked Sequence”, mas a sequência é apresentada agora como uma tira de filme

Page 25: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

25

Formula Node• Está na subpalete de “Structures”

• Implementa equações complicadas

• As variáveis são criadas na borda

• O nome das variáveis é sensível às maiúsculas/minúsculas

• Cada expressão deve terminar com ponto-e-virgula (;)

• A janela de ajuda em contexto mostra as funções disponíveis

Atenção ao ponto-e-virgula!

Page 26: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

26

Operações condicionais em “Formula Nodes”if (x >= 0) then

y = sqrt(x)

else y = -99999.0

end if

Condição

Operador Condicional

Condição verdadeira

Condição Falsa

Page 27: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

27

Strings• Uma “string” é uma sequência de caracteres ASCII que visíveis ou não

• Várias utilizações – Apresentar mensagens, Controlo de instrumentos, escrita e leitura de ficheiros

• Os controlos/indicadores de “string” estão em Controls >> String subpalette

Page 28: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

28

Funções de Strings

The quick brown fox jumped over the lazy dog.

Concatenated String

Não esquecer os espaços aqui!

String Length

Length =20String

Page 29: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Laboratório de Física III - Curso Introdutório de LabVIEW TM

29

Converter números em strings

Converter strings para números

Funções de Strings

Page 30: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

DESENVOLVIMENTO COM LEGO NXT

2ª Parte

Page 31: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.
Page 32: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

PROJECTO: ROBÔ SEGUIDOR DE LINHA (CONTROLADOR PID)

3ª Parte

Page 33: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Antes de lá chegarmos...

• Robô seguidor de linha: segue a borda da linha, e não a linha propriamente dita! – Porquê?

• Como é que ele segue a linha? Ideias?

Nota: aqui estamos interessados em que o robô siga a extremidade esquerda da linha.Porquê a esquerda e não a direita?

Page 34: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Implementação simples – 2 and 3-level follower

Page 35: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Compliquemos um pouco mais...

• Seguidor de linha proporcional – não se dão passos discretos, mas sim contínuos!

• Duas funções: uma para cada motor!

• E se quisermos que um dos motores inverta direcção? (power < 0!)

Page 36: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Adicionemos um acumulador (integral)

• Um integral não é mais do que um somador.

• Lembram-se dos shift registers e do código da sequência de Fibonnaci?

coisa = coisa + valor corrente

coisa[actual] = coisa[antes] + valor novo

Page 37: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Vimos o presente (P), e o passado (I)...

... pelo que agora só nos falta ver o futuro!

• Tal é possível implementando a derivação no nosso controlador.

• Irão ver isso no 12º ano em Matemática... (a integração só na faculdade! )

• Como funciona?

Page 38: Projecto: Robô sensorizado com LEGO Mindstorms Escola de Verão de Física 2011 Coordenador: Paulo Vicente Marques Monitor: Manuel Jorge Marques.

Derivação