Projecto: Robô sensorizado com LEGO Mindstorms

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Estruturas de Controle
Estruturas de Repetição
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INSTRUÇÕES DE CONTROLE – PARTE I Prof. Thiago Pereira Rique
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
ET6DE - Instrumentação Virtual
Claudio Esperança Python: Comandos Básicos. Primeiros passos em programação Até agora só vimos como computar algumas expressões simples Expressões são.
Linguagem C Estruturas de Controle de Fluxos
THOBER CORADI DETOFENO, MSC. Aula 07
Rodrigo de Toledo (original: Claudio Esperança)
Apresentação da linguagem Python
Folha de Cálculo TIC 10.
Estrutura de decisão e repetição em JAVA
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Capítulo 6 Arrays & Clusters. Uma array é uma lista de informações indexadas todas do mesmo tipo. Ela pode ter no máximo ((2exp31)) -1 elementos por dimensão.
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
AC-723 – MÉTODOS EXPERIMENTAIS PARA TURBINA A GÁS –
Unidade I: “Dê um mergulho rápido”
Daniel Alexandro/Reniê Delgado/Vanessa Ogg
Robô sensorizado com LEGO® Mindstorms
Linguagem de Programação I Parte III
Introdução ao MatLab Aula 4
FTIN Formação Técnica em Informática
Instrumentação Virtual
Professor Alexandre Bacega
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Capítulo 4 SubVIs. Introdução Este capítulo está relacionado com a criação e uso de SubVIs. As SubVis são subprogramas também feitos em LabVIEW. The Default.
Instrumento Virtual LabVIEW
Fábio de Oliveira Borges
Estruturas de Dados Módulo 3 – Controle de Fluxo
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Tecnologias da Informação e Comunicação
Matlab Mini Curso PET 2012.
Introdução à Programação de Computadores
Algoritmo e Programação
Linguagem e Ambiente Scratch
Capítulo 5 Structures. A - Sequence E - Formula Node B - Case F - Variável Global C - For Loop G - Variável Local D - While Loop ABCD FG E.
Linguagem de Programação JAVA
Linguagem Pascal Prof. Sérgio Rodrigues.
Introdução à programaçao em PERL Levi Lúcio, Vasco Amaral, Programação em PERL, FCA-Editora de Informática.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
PROGRAMAÇÃO ou LINGUAGEM C?
Introdução à Linguagem C
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
UTILIZAÇÃO DA LINGUAGEM MS-VISUAL BASIC.NET Objetivo: apresentar os principais recursos da linguagem “Visual Basic” necessários à criação de macros para.
AC250_01/2013 Cristiane Martins AQUISIÇÃO DE DADOS / LABVIEW BÁSICO Semana 5.
Programação e Aplicações Gráficas
Aula Teorica 4: Diagrama de Blocos
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Introdução ao MATLAB 5.3 para Hidrólogos
AC723_09/2010 Cristiane Martins AC-723 – MÉTODOS EXPERIMENTAIS PARA TURBINA A GÁS – aulas Prof.(a) Cristiane Martins Instituto Tecnológico de Aeronáutica.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Introdução aos algoritmos de programação
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
Recursividade Profs. De Prog2 e Lab2.
Programação de Computadores - 1
Introdução a Programação
Introdução à Programação
Curso Técnico em Informática Professor Igor Vale.
JAVASCRIPT Programação Web. O que é  E uma linguagem interpretada que e executada na maquina do cliente  Não esta associada ao framework java  Não.
Shell Script Parte 2.
Andréa Iabrudi 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I.
Programação para Web I AULA 4 ESTRUTURAS DE CONTROLE.
Linguagem de Programação 11 Estruturas de Decisão e Repetição. Prof. Luiz José Hoffmann Filho
CONDICIONAL IF Desenvolvido pelo Mestrando Rodrigo Moreira Barreto – VHLab (Virtual Humans Simulation Laboratory – PUCRS) 1 Desenvolvido por: Rodrigo Moreira.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Java Básico Lab Ruddá Beltrão | Cristian Costa.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Transcrição da apresentação:

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

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

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.

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

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

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

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Operações condicionais em “Formula Nodes” if (x >= 0) then y = sqrt(x) else y = -99999.0 end if Operador Condicional Condição Falsa Condição Condição verdadeira Laboratório de Física III - Curso Introdutório de LabVIEW TM

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

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

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

Desenvolvimento com lego nxt 2ª Parte Desenvolvimento com lego nxt

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

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?

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

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

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

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?

Derivação