programação de kits lego nxt usando linguagem gráfica nativa (ou nxt-g)
DESCRIPTION
Introdução à programação de kits Lego NXT usando linguagem gráfica nativa ou NXT-G. Noções de controle automático: malha aberta x malha fechada. Programando Seguidor de Linha usando Sensor de Cor, inicialmente por comparação (movimento bastante oscilatório), terminando com controlador Proporcional (movimento suave, inclui auto-calibração). Noção de controlador industrial PID (Proporcional - Integrativo - Derivativo). Outras sugestões de montagem. Video (dos slides) em: http://youtu.be/FzGMM5R8ZPgTRANSCRIPT
![Page 1: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/1.jpg)
Programação Lego NXTNXT-G 2.0 Introdução à Eng. ElétricaProf. Fernando Passold
1Monday, April 7, 14
![Page 2: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/2.jpg)
Detalhes da Linguagem
A nova versão da linguagem gráfica NXT-G (2.0) suporta cálculos em “ponto-flutuante” (com casas decimais)(float). A versão anterior só permitia realizar cálculos com números inteiros (int).
Existem outras linguagens...
2Monday, April 7, 14
![Page 3: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/3.jpg)
Para documentar estrutura física realizadaLego Digital Designer: http://ldd.lego.com/en-us/
3Monday, April 7, 14
![Page 4: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/4.jpg)
Começando a trabalhar1) Comandos em malha-aberta (sem realimentação, sem feedback)
4Monday, April 7, 14
![Page 5: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/5.jpg)
NXT-GProgramaçãonativa
5Monday, April 7, 14
![Page 6: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/6.jpg)
Programa...Def.: Seqüência lógica de passos que permite coletar dados de entrada, processar esta informação de entrada e gerar uma saída específica conforme desejado.
Ex.: Programa para resolver equação do 2o-grau:
Dados Entrada: a, b e c.
Processamento:
Saída: x1 e x2.
ax
2 + bx+ c = 0
� = b2 � 4ac
x =�b±
p�
2a
6Monday, April 7, 14
![Page 7: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/7.jpg)
Programando...Exemplo Válido?
Programador: SPOT, ande para frente e pare.
[SPOT: apenas fica parado]
Que aconteceu?Se alguém pedisse que você “ande um pouco e pare”, quão longe você iria?
Quando você iria parar?
Máquinas: indicar com precisão o que deve ser feito!
7Monday, April 7, 14
![Page 8: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/8.jpg)
Programando (2)...Exemplo Válido:
Programador: SPOT, ande para frente 5 segundos e pare.
[SPOT: se move para frente durante 5 segundos e para.]
Programador: SPOT, gire 180 graus e então ande até meus pés.
[SPOT: ?]
1o-caso: note são algumas instruções: andar para frente, esperar os 5 segundos, parar.(São diferentes, simples e pequenos programas intercalados).
2o-caso: Girar 180o no sentido horário ou anti-horário? Outro problema: “pés”?
8Monday, April 7, 14
![Page 9: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/9.jpg)
Programando (3)...Conclusões:
O programa deve ser bastante específico;
Infelizmente o NXT não entende ainda comandos de voz!
Necessidade de usar alguma linguagem de programação.
9Monday, April 7, 14
![Page 10: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/10.jpg)
Programando (3)...Conclusões:
O programa deve ser bastante específico;
Infelizmente o NXT não entende ainda comandos de voz!
Necessidade de usar alguma linguagem de programação.
1 NXT-G2 C# with Microsoft Robotics Developer Studio3 BricxCC, Next Byte Codes, Not eXactly C4 Robolab (RCX)5 RoboMind6 Enchanting7 ROBOTC (comercial)8 NXTGCC9 leJOS NXT (Java)10 nxtOSEK (tempo-real, Matlab)11 ICON12 MATLAB and Simulink13 Lua14 Ada15 URBI16 FLL NXT Navigation17 ruby-nxt18 Robotics.NXT19 LibNXT20 PyNXC21 NXT-Python22 LEGO Mindstorms EV3 Software23 Physical Etoys24 ?
9Monday, April 7, 14
![Page 11: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/11.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 12: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/12.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 13: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/13.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 14: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/14.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 15: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/15.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 16: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/16.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 17: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/17.jpg)
NXT-GLinguagem “nativa” (de fábrica) do NXT.
Baseada no LabView;
“G” significa gráfica;
Ambiente de programação instalado em Windows ou Mac;
10Monday, April 7, 14
![Page 18: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/18.jpg)
NXT-G: JANELA INICIAL
11Monday, April 7, 14
![Page 19: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/19.jpg)
Área de Trabalho: Work Area
12Monday, April 7, 14
![Page 20: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/20.jpg)
Paletas de Blocos de Programação
Paleta Comum:
contêm os blocos mais
usados.
13Monday, April 7, 14
![Page 21: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/21.jpg)
Paleta Completa:
contêm vários blocos de
programação
Paletas de Blocos de Programação
14Monday, April 7, 14
![Page 22: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/22.jpg)
Custom Palette:contêm vários blocos
extras baixados e ouotros feitos pelo
usuário
Paletas de Blocos de Programação
15Monday, April 7, 14
![Page 23: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/23.jpg)
Painel de Configuração / Configuration Panel: onde se
ajustam os blocos de programação
16Monday, April 7, 14
![Page 24: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/24.jpg)
“Controller”:permite transferir
programa para o NXT. Também permite modificar ajustes (setup) do NXT.
17Monday, April 7, 14
![Page 25: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/25.jpg)
“NXT Window”:Janela “pop-up” mostra informações à respeito
do NXT e permite ajustes de comunicação.
18Monday, April 7, 14
![Page 26: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/26.jpg)
“NXT Window”:Janela “pop-up” mostra informações à respeito
do NXT e permite ajustes de comunicação.
18Monday, April 7, 14
![Page 27: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/27.jpg)
“Help & Navigation”:permite obter ajuda e
navegar pelo programa.
19Monday, April 7, 14
![Page 28: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/28.jpg)
Blocos
Move
Record/PlaySound
Display
Wait (for..)
Loop
Switch (If..)
20Monday, April 7, 14
![Page 29: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/29.jpg)
Blocos
Motor
Soun
d
Display
Send
Mes
sage
Color L
amp
21Monday, April 7, 14
![Page 30: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/30.jpg)
Blocos
Touc
h Sen
sor
Soun
d Sen
sor
Light
Sens
or
Ultraso
nic Se
nsor
NXT But
tons
Rotati
on Se
nsor
Timer
Receiv
e Mes
sage
Color Sensor
22Monday, April 7, 14
![Page 31: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/31.jpg)
Blocos
Wait
(for
...)
Loop Sw
itch (
If..)
Stop
23Monday, April 7, 14
![Page 32: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/32.jpg)
Blocos
Logic
MathCom
pare
Range
(faix
a)
Rando
m (alea
tório
)
Varia
ble (v
ariáv
eis)
Consta
nt (c
onsta
ntes
)
24Monday, April 7, 14
![Page 33: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/33.jpg)
Blocos
Numbe
r to T
ext (
displa
y/mes
sages
)
Text
Keep A
live
Calibr
ate
Varia
ble (v
ariáv
eis)
Consta
nt (c
onsta
ntes
)
File A
cces
s
25Monday, April 7, 14
![Page 34: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/34.jpg)
Criando um novo programa: File >> New
26Monday, April 7, 14
![Page 35: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/35.jpg)
Criando um novo programa: File >> New
26Monday, April 7, 14
![Page 36: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/36.jpg)
CRIANDO UM PROGRAMA
1. Digitar na caixa de texto o nome do programa e cliclar no botão “Go”;
2. Arrastar blocos para a área de trabalho e ajustar blocos no Painel de Configuração.
3. Quando estiver pronto:1. Ligar NXT;2. Plugar cabo USB no NXT;3. Plugar cabo USB no PC -
Talvez apareça janela “Found New Hardware” (esperar para Windows terminar de instalar o driver).
27Monday, April 7, 14
![Page 37: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/37.jpg)
4.Transferindo o programa para o NXT >> Download:
28Monday, April 7, 14
![Page 38: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/38.jpg)
Common Blocks:Move: 1) Estas letras no topo do bloco mostram que portas no
NXT serão controladas.2) Este ícone mostra em que direção o robô irá.3) Este ícone mostra o nível de potência (PWM).4) Mostra como foi ajustada a Propriedade “Duration”: se
para ilimitada (unlimited), graus (degrees), rotations (rotações) ou segundos (seconds). Um ícone com imagem “-” significa a Propriedade de “Direction” foi ajustada para “stop”.
7) “Feedback boxes”: Conta quantos degraus ou rotações completas o motor realizou. O botão de Reset pode ser pressionado para zerar valores - útil para fazer o robô andar certa distância pré-especificada!
29Monday, April 7, 14
![Page 39: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/39.jpg)
Common Blocks:Move: 1) Estas letras no topo do bloco mostram que portas no
NXT serão controladas.2) Este ícone mostra em que direção o robô irá.3) Este ícone mostra o nível de potência (PWM).4) Mostra como foi ajustada a Propriedade “Duration”: se
para ilimitada (unlimited), graus (degrees), rotations (rotações) ou segundos (seconds). Um ícone com imagem “-” significa a Propriedade de “Direction” foi ajustada para “stop”.
7) “Feedback boxes”: Conta quantos degraus ou rotações completas o motor realizou. O botão de Reset pode ser pressionado para zerar valores - útil para fazer o robô andar certa distância pré-especificada!
Obs: Brake x CoastCoast: para o motor gradualmente aproveitando-se da perda do momento. Quando setado desta forma, o motor requer maiores torques (e tempo) para começar a andar de novo.Brake: para o motor imediatamente! Resulta em maior precisão. Usa freio eletromagnético (bobinas do motor em curto) - gastando mais bateria.
29Monday, April 7, 14
![Page 40: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/40.jpg)
Common Blocks:Move: 1) Estas letras no topo do bloco mostram que portas no
NXT serão controladas.2) Este ícone mostra em que direção o robô irá.3) Este ícone mostra o nível de potência (PWM).4) Mostra como foi ajustada a Propriedade “Duration”: se
para ilimitada (unlimited), graus (degrees), rotations (rotações) ou segundos (seconds). Um ícone com imagem “-” significa a Propriedade de “Direction” foi ajustada para “stop”.
7) “Feedback boxes”: Conta quantos degraus ou rotações completas o motor realizou. O botão de Reset pode ser pressionado para zerar valores - útil para fazer o robô andar certa distância pré-especificada!
30Monday, April 7, 14
![Page 41: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/41.jpg)
Common Blocks:Move: 1) Estas letras no topo do bloco mostram que portas no
NXT serão controladas.2) Este ícone mostra em que direção o robô irá.3) Este ícone mostra o nível de potência (PWM).4) Mostra como foi ajustada a Propriedade “Duration”: se
para ilimitada (unlimited), graus (degrees), rotations (rotações) ou segundos (seconds). Um ícone com imagem “-” significa a Propriedade de “Direction” foi ajustada para “stop”.
7) “Feedback boxes”: Conta quantos degraus ou rotações completas o motor realizou. O botão de Reset pode ser pressionado para zerar valores - útil para fazer o robô andar certa distância pré-especificada!
Obs: DurationPode eliminar a necessidade de monitorar o número de graus (feedback boxes) que o motor realizou.Isto significa que ajustar esta caixa para qualquer coisa diferente de “Unlimited” fará o programa esperar até que o motor complete a duração especificada; somente então o programa continuará!
30Monday, April 7, 14
![Page 42: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/42.jpg)
MOVE BLOCK:
31Monday, April 7, 14
![Page 43: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/43.jpg)
Tipos de Conexões de Dados...
• “Data Hubs”
• “Data wires types”
32Monday, April 7, 14
![Page 44: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/44.jpg)
Tipos de Conexões de Dados...
• “Data Hubs”
• “Data wires types”
32Monday, April 7, 14
![Page 45: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/45.jpg)
Keep Alive Block
This block will keep the NXT from entering sleep mode. Add this block if your program needs to wait for longer than the NXT’s set “sleep time” (that is configured using your NXT’s menus).
Calibration Block
Use this block to calibrate the minimum (0%) and maximum (100%) values detected by a sound or light sensor.
Advanced Blocks:
Referências Bibliográficas:1. Kelly, James Floyd. Lego Mindstorms NXT-G Programming Guide, 2nd ed., Apress/Springer Science
+Business Media, p. 337, ISBN-13 (pbk): 978-1-4302-2976-6, 2010, URL: http://www.kirp.chtf.stuba.sk/moodle/pluginfile.php/46109/mod_resource/content/1/Lego%20Mindstorms%20NXT-G%20programming%20guide.pdf (Março/2014).
2. Griffin, Terry. The Art of Lego Mindstorms NXT-G Programming, No Starch Press, p. 288, ISBN-13: 978-1-59327-218-0, August 26, 2010. URL: http://my.safaribooksonline.com/book/hobbies/9781593272180/4dot-motion/brake_comma_coast_comma_and_the_reset_mo (Março/2014).
3. Rosenberg, Neil. Workshop - NXT Programming For Beginners, Version 1.1, p. 102, Summer 2012, URL: Ref.: http://www.rocwnc.org/Beginning_NXT_Programming_Workshop.pdf (Março/2014).
33Monday, April 7, 14
![Page 46: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/46.jpg)
Problemas1. Criar programa que
simplesmente aciona os 2 motores com a mesma potência (75%) durante 10 segundos;
2. Idem, mas agora os motores devem percorrer 1 metro de distância.
3. Mover os motores até que um botão de toque seja acionado (uso de “bumper”).
34Monday, April 7, 14
![Page 47: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/47.jpg)
Usando sensores para...
Descobrir distância percorrida;
Ângulo de giro da roda;
Velocidade do motor;
etc...
URL: HTTP://WWW.NXTPROGRAMS.COM/VOLUME_CALC/INDEX.HTML
35Monday, April 7, 14
![Page 48: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/48.jpg)
Medir distância percorrida
36Monday, April 7, 14
![Page 49: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/49.jpg)
Medir distância percorrida
36Monday, April 7, 14
![Page 50: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/50.jpg)
Medir distância percorrida
36Monday, April 7, 14
![Page 51: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/51.jpg)
Medir distância percorrida
37Monday, April 7, 14
![Page 52: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/52.jpg)
Medir distância percorrida
37Monday, April 7, 14
![Page 53: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/53.jpg)
Medir distância percorrida
37Monday, April 7, 14
![Page 54: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/54.jpg)
BUMPER CAR38Monday, April 7, 14
![Page 55: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/55.jpg)
“BUMPER CAR”
39Monday, April 7, 14
![Page 56: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/56.jpg)
“BUMPER CAR”
39Monday, April 7, 14
![Page 57: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/57.jpg)
“BUMPER CAR”
39Monday, April 7, 14
![Page 58: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/58.jpg)
“BUMPER CAR”
40Monday, April 7, 14
![Page 59: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/59.jpg)
“BUMPER CAR”
40Monday, April 7, 14
![Page 60: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/60.jpg)
“BUMPER CAR”
40Monday, April 7, 14
![Page 61: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/61.jpg)
“BUMPER CAR”
40Monday, April 7, 14
![Page 62: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/62.jpg)
Distância percorrida por roda...
• Percorrendo uma distância exata (independente da velocidade):
R
P
P = 2⇥ ⇡ ⇥R
d = n⇥ 2⇥ ⇡ ⇥R
onde:R = raio da roda;P = perímetro da roda;n = número de voltas;⇡ = 3.141592653589793
Roda do Lego NXT: “@ LEGO Group 56x26”onde 56 = 56mm de diâmetro.
41Monday, April 7, 14
![Page 63: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/63.jpg)
SUGESTÃO DE MONTAGEM
Frente
Roda“livre”
42Monday, April 7, 14
![Page 64: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/64.jpg)
+ Sensores
Usando sensor de cor como sensor de luz...
Lendo informações de cor e intensidade luminosa..
43Monday, April 7, 14
![Page 65: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/65.jpg)
Como fechar uma malha?Algoritmos de controle:
Idéias?
44Monday, April 7, 14
![Page 66: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/66.jpg)
Seguidor de Linha: Idéias
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
Este programa faz o robô andar para frente até que ele saia par fora da linha preta. Em seguida, ele move para a esquerda 10o. Ele assume que a linha é um círculo e que o robô está posicionado dentro do círculo, por isto irá percorrer o cículo em sentido anti-horário.
Ver: https://www.youtube.com/watch?v=5-1N9x7obTM
45Monday, April 7, 14
![Page 67: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/67.jpg)
ROBÔ SEGUIDOR DE LINHA46Monday, April 7, 14
![Page 68: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/68.jpg)
Seguidor de Linha #1
47Monday, April 7, 14
![Page 69: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/69.jpg)
Seguidor de Linha #1
47Monday, April 7, 14
![Page 70: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/70.jpg)
Seguidor de Linha #1
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
48Monday, April 7, 14
![Page 71: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/71.jpg)
Seguidor de Linha #1
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
49Monday, April 7, 14
![Page 72: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/72.jpg)
Seguidor de Linha #1
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
50Monday, April 7, 14
![Page 73: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/73.jpg)
Seguidor de Linha #1
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
51Monday, April 7, 14
![Page 74: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/74.jpg)
Seguidor de Linha #1
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
52Monday, April 7, 14
![Page 75: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/75.jpg)
Seguidor de Linha #1
1. Siga em frete infinitamente com potência a 50%;
2. Até que o sensor de luz leia valor > 50%;
3. Então pare a roda esquerda;
4. E mova a roda direita, 10o para frente;
5. Repita.
Loop (Laço):Usa-se para repetir sequencias de código. Uma condição de parada deve ser ajustada: período de tempo transcorrido (elapsed time), número de repetições, sinal lógico ou de sensor. Ou o laço pode ser ajustado para ser perpétuo (forever).
53Monday, April 7, 14
![Page 76: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/76.jpg)
Seguidor de Linha #2
54Monday, April 7, 14
![Page 77: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/77.jpg)
Seguidor de Linha #2
55Monday, April 7, 14
![Page 78: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/78.jpg)
Seguidor de Linha #2
Dentro de um laço perpétuo, repetidamente se chaveia o Sensor de Cor como Sensor de Luz, testando se o mesmo percebe um brilho maior que um certo limiar.O valor do limiar deve ser apropriadamente ajustado para ser o valor médio entre o mínimo valor que se espera ler no centro da linha e o máximo esperado no caso da leitura no chão usando as luzes coloridas.
Se sugere o uso de um programa tipo “Medidor de Luz” (LightMeter) para descobrir estes valores.Usando o valor médio, o robô vai andar pelo lado direito da linha procurando manter uma leitura que fique entre o valor para metade da linha e metade para o chão.
Se o valor lido é maior que o limiar então o robô está fora do lado direito da linha e assim gira para a esquerda para corrigir a rota (o motor C fica mais rápido que o B).Se o valor lido é menor que o limiar então o robô está mais próximo do centro da linha (e não próximo do lado direito da linha) e assim gira para a direita (motor B fica mais rápido que o B).
56Monday, April 7, 14
![Page 79: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/79.jpg)
Seguidor de Linha #2IDÉIA:
Dentro de um laço perpétuo, repetidamente se chaveia o Sensor de Cor como Sensor de Luz, testando se o mesmo percebe um brilho maior que um certo limiar.
O valor do limiar deve ser apropriadamente ajustado para ser o valor médio entre o mínimo valor que se espera ler no centro da linha e o máximo esperado no caso da leitura no chão usando as luzes coloridas.
Se sugere o uso de um programa tipo “Medidor de Luz” (LightMeter) para descobrir estes valores.
Usando o valor médio, o robô vai andar pelo lado direito da linha procurando manter uma leitura que fique entre o valor para metade da linha e metade para o chão.
Se o valor lido é maior que o limiar então o robô está fora do lado direito da linha e assim gira para a esquerda para corrigir a rota (o motor C fica mais rápido que o B).Se o valor lido é menor que o limiar então o robô está mais próximo do centro da linha (e não próximo do lado direito da linha) e assim gira para a direita (motor B fica mais rápido que o B).
O teste do sensor e correções da direção do robô são rapidamente repetidas pelo laço (várias vezes por segundo).
Note que a propriedade “Unlimited” é usada para definir Duration para todos os blocos Motor. Isto faz com que o bloco Motor simplesmente ajuste seu nível de potência e o programa segue adiante sem esperar por nada. Isto permite ao Color Sensor testar repetidamente tão rápido quanto possível e assim o robô reaja tão rápido quanto possível frente a mudanças na leitura da linha.
57Monday, April 7, 14
![Page 80: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/80.jpg)
Seguidor de Linha #2OBSERVAÇÕES:
Dentro de um laço perpétuo, repetidamente se chaveia o Sensor de Cor como Sensor de Luz, testando se o mesmo percebe um brilho maior que um certo limiar.
O valor do limiar deve ser apropriadamente ajustado para ser o valor médio entre o mínimo valor que se espera ler no centro da linha e o máximo esperado no caso da leitura no chão usando as luzes coloridas.
Se sugere o uso de um programa tipo “Medidor de Luz” (LightMeter) para descobrir estes valores.
Usando o valor médio, o robô vai andar pelo lado direito da linha procurando manter uma leitura que fique entre o valor para metade da linha e metade para o chão.
1.O valor do limiar (threshold): Ajustar o bloco do Color Sensor para “Compare” o número lido com a média entre os valores máximos e mínimos esperados para as leituras de intensidade da luz faz também que o programa se ajuste as condições de iluminação atuais e superfície (solo) do ambiente sendo usado para testá-lo.
2.Velocidade máxima: nos 2 blocos Motor “rápidos”, o nível de potência especificado determina a máxima velocidade do motor. Se a velocidade máxima for muito alta, o robô vai acabar se perdendo em curvas mais fechadas.
3.Curvas fechadas: nos 2 blocos Motor “lentos”, o nível de potência especificado vai determinar que tão fechada uma curva o robô vai ser capaz de seguir. Baixos níveis de potência vão permitir que o robô realize curvas fechadas, entretanto valores maiores o deixariam mais rápido e com condução mais suave sobre as partes retas da linha (caminho à seguir).
Até aqui 31 Mar 2014Grupo 2
58Monday, April 7, 14
![Page 81: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/81.jpg)
Seguidor de Linha #2DETALHES:
59Monday, April 7, 14
![Page 82: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/82.jpg)
Seguidor de Linha #2DETALHES:
59Monday, April 7, 14
![Page 83: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/83.jpg)
Seguidor de Linha #2DETALHES:
59Monday, April 7, 14
![Page 84: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/84.jpg)
Seguidor de Linha #2DETALHES:
59Monday, April 7, 14
![Page 85: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/85.jpg)
Seguidor de Linha #2DETALHES:
59Monday, April 7, 14
![Page 86: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/86.jpg)
Seguidor de Linha #2DETALHES:
60Monday, April 7, 14
![Page 87: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/87.jpg)
Seguidor de Linha #2DETALHES:
60Monday, April 7, 14
![Page 88: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/88.jpg)
Seguidor de Linha #2DETALHES:
60Monday, April 7, 14
![Page 89: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/89.jpg)
“LIGHTMETER”61Monday, April 7, 14
![Page 90: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/90.jpg)
“LightMeter” (1/4)
62Monday, April 7, 14
![Page 91: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/91.jpg)
“LightMeter” (2/4)
63Monday, April 7, 14
![Page 92: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/92.jpg)
“LightMeter” (3/4)
64Monday, April 7, 14
![Page 93: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/93.jpg)
“LightMeter” (4/4)
65Monday, April 7, 14
![Page 94: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/94.jpg)
Seguir de Linha:Idéias 2: Controlador P
Idéia do Controlador Proporcional:Estabelecer um laço de realimentação fechado, calculando o erro e proporcional ao erro definir uma ação de controle:
Valor Médio(Ref.) ∑
ErroK
Sinal de ControleAtuação
(Pot. Motor) MotoresLego
SensorCor
Trajetória
Intensidade Luminosa(Leitura atual)
+-
66Monday, April 7, 14
![Page 95: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/95.jpg)
Seguir de Linha:Idéias 2: Controlador P
Idéia do Controlador Proporcional:Estabelecer um laço de realimentação fechado, calculando o erro e proporcional ao erro definir uma ação de controle:
Valor Médio(Ref.) ∑
ErroK
Sinal de ControleAtuação
(Pot. Motor) MotoresLego
SensorCor
Trajetória
Intensidade Luminosa(Leitura atual)
+-
50
66Monday, April 7, 14
![Page 96: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/96.jpg)
Seguir de Linha:Idéias 2: Controlador P
Idéia do Controlador Proporcional:Estabelecer um laço de realimentação fechado, calculando o erro e proporcional ao erro definir uma ação de controle:
Valor Médio(Ref.) ∑
ErroK
Sinal de ControleAtuação
(Pot. Motor) MotoresLego
SensorCor
Trajetória
Intensidade Luminosa(Leitura atual)
+-
50
60
66Monday, April 7, 14
![Page 97: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/97.jpg)
Seguir de Linha:Idéias 2: Controlador P
Idéia do Controlador Proporcional:Estabelecer um laço de realimentação fechado, calculando o erro e proporcional ao erro definir uma ação de controle:
Valor Médio(Ref.) ∑
ErroK
Sinal de ControleAtuação
(Pot. Motor) MotoresLego
SensorCor
Trajetória
Intensidade Luminosa(Leitura atual)
+-
50
60
-10
66Monday, April 7, 14
![Page 98: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/98.jpg)
Seguidor de Linha:Controlador Proporcional
Ajusta as variáveisPower e Gain
(podem ser alterados)
90 100
67Monday, April 7, 14
![Page 99: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/99.jpg)
Seguidor de Linha:Controlador Proporcional
Ajusta as variáveisPower e Gain
(podem ser alterados)
90 100
A lâmpada parece acender depois de um pequeno atraso no modo “Light
Sensor”, o que pode afetar a auto-calibração. Melhor
acender e esperar um pouco
68Monday, April 7, 14
![Page 100: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/100.jpg)
Seguidor de Linha:Controlador Proporcional
Ajusta as variáveisPower e Gain
(podem ser alterados).
90 100
A lâmpada parece acender depois de um pequeno atraso no modo “Light
Sensor”, o que pode afetar a auto-calibração. Melhor
acender e esperar um pouco.
50 0.29999
0
Iniciando as variáveis Min para um valor grande e
Max para zero para garantir que a lógica de calibração irá alterá-los.
Continua→
69Monday, April 7, 14
![Page 101: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/101.jpg)
Seguidor de Linha:Controlador Proporcional
Ajusta as variáveisPower e Gain
(podem ser alterados).
90 100
A lâmpada parece acender depois de um pequeno atraso no modo “Light
Sensor”, o que pode afetar a auto-calibração. Melhor
acender e esperar um pouco.
50 0.29999
0
Iniciando as variáveis Min para um valor grande e
Max para zero para garantir que a lógica de calibração irá alterá-los.
Inicie um pequeno arco para a direita assim o sensor
acabará lendo a linha e a área à direita da linha
(incluindo o solo).
B
C
CB
70Monday, April 7, 14
![Page 102: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/102.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
LAÇO DE CALIBRAÇÃO - IDÉIA:1. Criar um laço de repetição que só para quando o motor B girar 120o.2. Dentro do laço se lê os valores do sensor de cor enquanto o robô está girando
para a direita para descobrir os valores de Min e Max.3. Ler informação do Sensor de Cor no modo Light Sensor (saída numérica na porta
“Detected Color”) e guarde este valor na variável Light.4. Se o valor Light é menor que o valor Min, então atualize Min <-- Light.5. Se o valor Light é maior que o valor Max, então atualize Max <-- Light.
71Monday, April 7, 14
![Page 103: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/103.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Leia sensor de Cor no modo “Light Sensor” (valor de 0 ~
100 na porta “Detected Color”) e guarde em “Light”
Se o valor Light for menor que Min, então: Min ← Light. Continua→
Detected Color Value
72Monday, April 7, 14
![Page 104: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/104.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Leia sensor de Cor no modo “Light Sensor” (valor de 0 ~
100 na porta “Detected Color”) e guarde em “Light” Se o valor Light for menor que Min, então: Min ← Light. Continua→
Result
Value
73Monday, April 7, 14
![Page 105: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/105.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Se o valor Light for maior que Max, então: Max ← Light.
Continua→
74Monday, April 7, 14
![Page 106: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/106.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Se o valor Light for maior que Max, então: Max ← Light.
Continua→
75Monday, April 7, 14
![Page 107: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/107.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Continua→Depois da Calibração →Calcular faixa (Range) e valor médio (Mid):
Agora que sabe os valores máximos e mínimos esperados para a linha e o solo, calculamos a faixa de
valores: Range = Max - Min.
Calculamos agora o valor médio entre Min e Max e guardamos este valor na variável Mid: Mid = (Max + Min) / 2. O robô vai esperar encontrar o valor médio à direita da borda da linha - valor que procurará manter.
76Monday, April 7, 14
![Page 108: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/108.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Continua→Depois da Calibração →Reposicionando o Robô no lado direito da linha:
Uma vez que a auto-calibração moveu o robô para a direita, devemos movê-lo de volta para a esquerda antes de começar a seguir a linha. O robô gira à esquerda até que encontra um valor imediatamente mais escuro que Mid (o médio), o que
deveria posicionar o robô no lado direito da linha que corresponde a maneira como pretende seguir a linha.
Quando o sensor encontra o ponto desejado para
começar a seguir a linha, soa um beep para indicar que a auto-calibração foi
completada.
77Monday, April 7, 14
![Page 109: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/109.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Continua→Depois da Calibração →Reposicionando o Robô no lado direito da linha:
Uma vez que a auto-calibração moveu o robô para a direita, devemos movê-lo de volta para a esquerda antes de começar a seguir a linha. O robô gira à esquerda até que encontra um valor imediatamente mais escuro que Mid (o médio), o que
deveria posicionar o robô no lado direito da linha que corresponde a maneira como pretende seguir a linha.
Quando o sensor encontra o ponto desejado para
começar a seguir a linha, soa um beep para indicar que a auto-calibração foi
completada.
Trigger Point
78Monday, April 7, 14
![Page 110: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/110.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Continua→Depois da Calibração →Reposicionando o Robô no lado direito da linha:
Uma vez que a auto-calibração moveu o robô para a direita, devemos movê-lo de volta para a esquerda antes de começar a seguir a linha. O robô gira à esquerda até que encontra um valor imediatamente mais escuro que Mid (o médio), o que
deveria posicionar o robô no lado direito da linha que corresponde a maneira como pretende seguir a linha.
Quando o sensor encontra o ponto desejado para
começar a seguir a linha, soa um beep para indicar que a auto-calibração foi
completada.
Trigger Point
79Monday, April 7, 14
![Page 111: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/111.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Continua→Seguindo Linha → Laço de Controle Proporcional - Parte 1/2
Obtenha uma leitura do Sensor de Cor no modo “Light Sensor” e subtraia este valor do
valor médio (Mid) ➠ calculando o erro.Se este erro é positivo então robô está mais
para a esquerda “vendo” a parte mais escura (central) da pista. Se o erro é negativo, então
o robô está muito à direita com o sensor “vendo” mais o solo. A magnitude do erro
corresponde à quão longe o robô está da sua “meta” (valor médio).
Detected Color
Multiplique o valor do erro pelo valor Gain para enfatizar a resposta ao erro de acordo com a magnitude de Gain. Então divida o resultado pelo
valor Range (faixa) para normalizar o erro em relação à faixa total esperada. Guarde este valor na variável Correction.
80Monday, April 7, 14
![Page 112: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/112.jpg)
B
CB
Continua→Seguindo Linha → Laço de Controle Proporcional - Parte 1/2
Obtenha uma leitura do Sensor de Cor no modo “Light Sensor” e subtraia este valor do
valor médio (Mid) ➠ calculando o erro.Se este erro é positivo então robô está mais
para a esquerda “vendo” a parte mais escura (central) da pista. Se o erro é negativo, então
o robô está muito à direita com o sensor “vendo” mais o solo. A magnitude do erro
corresponde à quão longe o robô está da sua “meta” (valor médio).
Detected Color
Multiplique o valor do erro pelo valor Gain para enfatizar a resposta ao erro de acordo com a magnitude de Gain. Então divida o resultado pelo
valor Range (faixa) para normalizar o erro em relação à faixa total esperada. Guarde este valor na variável Correction.
Valor Médio(Ref.) ∑ Erro
K
Sinal de ControleAtuação
(Pot. Motor) MotoresLego
SensorCor
Trajetória
Intensidade Luminosa(Leitura atual)
+-
81Monday, April 7, 14
![Page 113: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/113.jpg)
Seguidor de Linha:Controlador Proporcional
B
C
CB
Fim.
Seguindo Linha → Laço de Controle Proporcional - Parte 2/2
Use o valor de Correction para aplicar uma ação de controle (steering) sobre os motores. Partindo do valor base Power definido na inicialização use (Power + Correction) para o motor B e (Power −
Correction) para o motor C. Isto fará com que o robô se posicione da direção correta para continuar seguindo a linha pelo seu lado direito. Note que a correção é proporcional ao tamanho do desvio. Se for grande, um giro mais forte será produzido, senão uma leve correção na sua orientação é realizada. Isto
permite um deslocamento mais rápido e suave.
Laço perpétuo (Forever)
Power + Correction
Power − Correction
Power Power
B
C
82Monday, April 7, 14
![Page 114: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/114.jpg)
Outros controladores + sofisticados...Controle PI --> exige noção de integral;
Controle PD --> exige noção de derivada;
Controle PID: adotado em 90% da indústria.
Mais “trabalho”: sintonia (ajuste) do mesmo... --> Controle Automático
83Monday, April 7, 14
![Page 115: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/115.jpg)
PID
84Monday, April 7, 14
![Page 116: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/116.jpg)
PID
85Monday, April 7, 14
![Page 117: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/117.jpg)
Error
PID
86Monday, April 7, 14
![Page 118: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/118.jpg)
PID Analógico:
87Monday, April 7, 14
![Page 119: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/119.jpg)
PID Digital:
ControlTask+
y=lectura_sensor();+e=r5y;+
//+Ley+de+control+p0=Kp*(1+Kd/Ts);+p1=Kp*(1+2*Kd/Ts5Ki*Ts);+p2=(Kp*Kd)/Ts;+u=ua1+p0*e+p1*ea1+p2*ea2;+
//+Salida+para+sistema+Robot.motor1=u;+
//+Actualizando+variables+próximo+ciclo+ua2=ua1;+ua1=u;+ea2=ea1;+ea1=e;+ya2=ya1;+ya1=y;+
//+return+
!+samplingTimeControl+[ms]+
( ) ( )!"
#−+−−%
&
'++−−+−= ]2[]1[2][][]1[][]1[][ kekekeTTke
TTkekeKkuku
s
d
i
sc
88Monday, April 7, 14
![Page 120: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/120.jpg)
RTOS for Lego NXT:
NxtOSEK nxtOSEK [ h6p://lejos-‐osek.sourceforge.net/ ]2007-‐2008 Takashi ChikamasanxtOSEK/JSPANSI C/C++ with OSEK/μITRON RTOS for LEGO® MINDSTORMS® NXTnxtOSEK is an open source firmware for LEGO MINDSTORMS NXT. nxtOSEK consists of device driver of leJOS NXJ C/Assembly source code, TOPPERS OSEK Real-‐Time Opera[ng System source code that includes ARM7 (ATMEL AT91SAM7S256) specific por[ng part, and glue code to make them work together. nxtOSEK can provide: ANSI C/C++ programming environment by using GCC tool chain C API for NXT Sensors, Motor, and other devices C++ API for NXT...
nxtOSEK applica[on videos:[h6p://lejos-‐osek.sourceforge.net/videos.htm ]:NXT SCARA [h6p://lejos-‐osek.sourceforge.net/videos.htm#NXT_SCARA ]
Real-Time Operation System
89Monday, April 7, 14
![Page 121: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/121.jpg)
RTOS for Lego NXT:
NxtOSEK nxtOSEK [ h6p://lejos-‐osek.sourceforge.net/ ]2007-‐2008 Takashi ChikamasanxtOSEK/JSPANSI C/C++ with OSEK/μITRON RTOS for LEGO® MINDSTORMS® NXTnxtOSEK is an open source firmware for LEGO MINDSTORMS NXT. nxtOSEK consists of device driver of leJOS NXJ C/Assembly source code, TOPPERS OSEK Real-‐Time Opera[ng System source code that includes ARM7 (ATMEL AT91SAM7S256) specific por[ng part, and glue code to make them work together. nxtOSEK can provide: ANSI C/C++ programming environment by using GCC tool chain C API for NXT Sensors, Motor, and other devices C++ API for NXT...
nxtOSEK applica[on videos:[h6p://lejos-‐osek.sourceforge.net/videos.htm ]:NXT SCARA [h6p://lejos-‐osek.sourceforge.net/videos.htm#NXT_SCARA ]
Real-Time Operation System
89Monday, April 7, 14
![Page 122: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/122.jpg)
OUTRAS IDÉIAS DE ESTRUTURAS...90Monday, April 7, 14
![Page 123: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/123.jpg)
OUTRAS IDÉIAS DE ESTRUTURAS...91Monday, April 7, 14
![Page 124: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/124.jpg)
OUTRAS IDÉIAS DE ESTRUTURAS...92Monday, April 7, 14
![Page 125: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/125.jpg)
OUTRAS IDÉIAS DE ESTRUTURAS...93Monday, April 7, 14
![Page 126: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/126.jpg)
94Monday, April 7, 14
![Page 127: Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)](https://reader030.vdocuments.site/reader030/viewer/2022012823/55834defd8b42a8f548b50df/html5/thumbnails/127.jpg)
95Monday, April 7, 14