A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projecto: Robô sensorizado com LEGO Mindstorms

Apresentações semelhantes


Apresentação em tema: "Projecto: Robô sensorizado com LEGO Mindstorms"— Transcrição da apresentação:

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

2 Conceitos-base de programação
1ª Parte Conceitos-base de programação

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

4 Introdução ao LABVIEWTM
Painel Frontal Diagrama de Blocos 4/26/2017 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

5 Introdução ao LABVIEWTM
Painel Frontal Painel Frontal Controlos = Entradas (controls) (inputs) Indicadores = Saídas (indicators) (outputs)

6 Introdução ao LABVIEWTM
Diagrama de Blocos Componentes interligados por fios Código fonte Esquema de fluxo de dados Block Diagram 4/26/2017 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

7 Janela do painel frontal
Etiqueta (Label) Ferramentas do painel “Icon pane” Controlos numéricos Botão de controlo booleano Indicador de barra (Slide indicator) 4/26/2017 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

8 Janela do diagrama de blocos
Função de soma (Add function) Constante numérica (Numeric constant) Função de temporização (Timing function) Terminais de controlo numérico (Numeric control terminals) Terminal de indicador de barra (Slide indicator terminal) Função Booleana Terminal de controlo booleano (Boolean control terminal) Função de comparação (Comparison function)

9 Laranja (virgula flutuante) Azul (inteiro)
Diagrama de blocos Nodo s Hot spot Fios Os terminais de controlo têm bordas mais espessas do que os dos indicadores Escalar 1D Array 2D Array Numérico Laranja (virgula flutuante) Azul (inteiro) Booleano Verde Texto (String) Roxo

10 Primeiro Exercício 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 ... 1 h 30

11 Estruturas-base num programa
Loops while e for; Shift registers; Estruturas condicionais (case structures); Estruturas sequenciais; Formula nodes; 4/26/2017 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

12 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007
While loop Functions → Structures palette Muito Importante! O código incluído pode ser repetido Terminal de iteração Terminal Condicional Faz (Executa o diagrama dentro do Loop) Enquanto (While) a condição é FALSA Continua se for verdade 4/26/2017 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

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

14 Registos de deslocamento (Shift registers)
Guardam valores de uma iteração para a seguinte • 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 Valor Inicial Valor 1 Valor 2 Valor Inicial Valor 3 Valor 1 Valor 2 Valor 3 Antes do início da “Loop” Primeira Iteração Segunda Iteração Última Iteração 4/26/2017 UOSE - FCUP/LabVIEW and Virtual Instrumentation Workshop/24 JUL 2007

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” Adaptam-se a qualquer tipo de dados 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. Laboratório de Física III Curso Introdutório de LabVIEW TM

16 Inicialização de “shift registers”
Inicializado Não inicializado RUN 1 Valor inicial = 5 Valor inicial = 0 RUN 2 Valor inicial = 7 Valor inicial = 8 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) Laboratório de Física III Curso Introdutório de LabVIEW TM

18 Exercício – Sequência de Fibonacci
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 ( ) 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 Laboratório de Física III Curso Introdutório de LabVIEW TM

20 Casos Booleanos e Numéricos
Gamas numéricas também são possíveis Nota: Todas as saídas possíveis da estrutura têm que ser ligadas

21 Exercício Crie 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. 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 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 Dados não disponíveis “Sequence local” criado no frame 1 Dados disponíveis 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 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! 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 = end if Operador Condicional Condição Falsa Condição Condição verdadeira 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 Laboratório de Física III Curso Introdutório de LabVIEW TM

28 Funções de Strings String Length Concatenated String Length =20
Não esquecer os espaços aqui! The quick brown fox jumped over the lazy dog. Concatenated String Laboratório de Física III Curso Introdutório de LabVIEW TM

29 Converter números em strings
Funções de Strings Converter números em strings Converter strings para números Laboratório de Física III Curso Introdutório de LabVIEW TM

30 Desenvolvimento com lego nxt
2ª Parte Desenvolvimento com lego nxt

31

32 PROJECTO: ROBÔ SEGUIDOR DE LINHA (CONTROLADOR PID)
3ª Parte PROJECTO: ROBÔ SEGUIDOR DE LINHA (CONTROLADOR PID)

33 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?

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

35 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!)

36 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

37 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?

38 Derivação


Carregar ppt "Projecto: Robô sensorizado com LEGO Mindstorms"

Apresentações semelhantes


Anúncios Google