Programmare
LEGO NXT
con NXT-G
Corso di Robotica per docenti ottobre/novembre 2015
Overview
•
•
•
•
NXT Hardware
Ambiente di sviluppo NXC
Programmare con NXC
Interazione NXT - PC
Corso di Robotica per docenti ottobre/novembre 2015
NXT – hardware
•
•
•
•
•
•
4 Inputs (digitali e analogici)
3 Outputs (supporto per encoders)
Schermo (100x64 pixels)
4 Bottoni
Suono
USB e Bluetooth
Corso di Robotica per docenti ottobre/novembre 2015
Processori
•
Processore principale:




Atmel 32-bit ARM processor, AT91SAM7S256
256 KB FLASH
64 KB RAM
48 MHz
Co-processore:




Atmel 8-bit AVR processor, ATmega48
4 KB FLASH
512 Byte RAM
8 MHz
Corso di Robotica per docenti ottobre/novembre 2015
Comunicazione tramite
Bluetooth e USB
• Bluetooth wireless communication CSR
BlueCoreTM 4 v2.0 +EDR System
Supports the Serial Port Profile (SPP)
 Internal 47 KByte RAM
 External 8 MBit FLASH
 26 MHz

USB 2.0 Full speed com port (12 Mbit/s)
Corso di Robotica per docenti ottobre/novembre 2015
Monitor, Suono e bottoni
• Display in bianco e nero 100 x 64 pixel
LCD
• Uscita audio con canale con risoluzione
a 8-bit resolution
• 4 bottoni
Corso di Robotica per docenti ottobre/novembre 2015
Schema a blocchi del
mattoncino intelligente
Corso di Robotica per docenti ottobre/novembre 2015
Qualche dettaglio
•
3 output con connessione a 6-fili che
supportano anche l'input dagli encoder
• 4 input con connessione a 6-fili che
supportano:
- segnali digitali
- segnali analogici
- protocollo I2C
- high speed port, IEC 61158 Type 4/EN 50170
• LEGO ha distribuito tutta la documentazione
Corso di Robotica per docenti ottobre/novembre 2015
Documentazione online
• http://mindstorms.lego.com/ - cliccare
•
•
•
•
sul bottone “NXTreme” button per
informazioni e downloads per utenti
avanzati
Open source firmware!!!
SDK – Software Developer Kit
HDK – Hardware Developer Kit
BDK – Bluetooth Developer Kit
Corso di Robotica per docenti ottobre/novembre 2015
Motori
• Encoder integrato nel motore con
•
•
•
•
sensibilità 1°
Posizioni relative e non assolute
Velocità massima pari a circa 200 RPM
Coppia massima 24 Ncm
Motori estremamente robusti
Corso di Robotica per docenti ottobre/novembre 2015
Motori
Corso di Robotica per docenti ottobre/novembre 2015
Sensori nel kit
•
•
•
•
Sensore a ultrasuoni (3cm-100cm)
Sensore di luce attivo
Sensore acustico – DB and DBA
Sensore di contatto
Corso di Robotica per docenti ottobre/novembre 2015
Cavi di connessione
• I cavi LEGO NXT (come I connettori
DEC RJ-12 ma al contrario)
• Schemi:
Analog input
Corso di Robotica per docenti ottobre/novembre 2015
rd
3
Party Sensors
• Prezzi da $30 a $50
• HiTechnic (www.HiTechnic.com)
Esteticamente simili ai sensori LEGO
 Autorizzati da LEGO

MindSensors (www.MindSensors.com)

Compatibili ma meno curati esteticamente
Corso di Robotica per docenti ottobre/novembre 2015
HiTechnic Sensors
•
•
•
•
Color Sensor
Compass Sensor
Acceleration Sensor
More coming…






Prototype board
Gyro sensor (analog, not I2C digital)
IR Link (to talk to RCX and other LEGO IR
devices)
IR Seeker (for robo soccer, for example)
No-contact touch sensor (electrostatic sensor)
Corso di Robotica per docenti Motor Multiplexor
ottobre/novembre 2015
MindSensors Sensors
•
•
•
•
•
•
Acceleration Sensor
RCX to NXT communications link
PS2 controller interface
Motor Multiplexor
Magnetic Compass
Pneumatic Pressure Sensor
Corso di Robotica per docenti ottobre/novembre 2015
Bluetooth
• Utilizzabile per scaricare i programmi
• Permette il trasferimento di dati da un
NXT all'altro (fino a quattro collegati in
rete)
• Permette il controllo a distanza da parte
di qualsiasi dispositivo con BT
Corso di Robotica per docenti ottobre/novembre 2015
Linguaggi di
programmazione
•
•
•
•
•
NXT-G
NXC e NBC (in ambiente BricX)
Robot C
pbLua
Java ed altri
Corso di Robotica per docenti ottobre/novembre 2015
NXT-G code
• Ambiente di sviluppo della LEGO
• Programmazione grafica
• Basato su National Instruments’
LabView
• Ottimo per programmi semplici
• Ideale per I ragazzi delle scuole medie
inferiori
Corso di Robotica per docenti ottobre/novembre 2015
NXC e NBC
• NXC (Not eXactly C) è un linguaggio
simile al C
• Costruito sull'assembler NBC, the Next
Byte Code
• Utilizza il firmware standard della LEGO
e un firmware potenziato
Corso di Robotica per docenti ottobre/novembre 2015
Robot C
• Linguaggio di programmazione di
Carnegie Mellon’s per varie piattaforme
(tra cui VEX, RCX e NXT)
• Firmware dedicato
• Costo30 $
Corso di Robotica per docenti ottobre/novembre 2015
pbLua
• New firmware, and language
• Small portable language for embedded
systems
• By Ralph Hemple, the author of pbForth
for the RCX
• Compiles on brick!
• Use any terminal device to talk to it
Corso di Robotica per docenti ottobre/novembre 2015
Altri linguaggi
• Java e molti altri
• MS Robotic Studio!!!!!!!!!!
Si deve scaricare un piccolo programma
client
 Il controllo reale è fatto dal PC

Corso di Robotica per docenti ottobre/novembre 2015
Struttura dei motori DC



la corrente scorre negli
avvolgimenti e si
genera un campo
magnetico
la parte sinistra del
rotore è respinta dal
magnete di sinistra ed
attirata da quello di
destra.
la coppia genera
la per docenti Corso di Robotica
ottobre/novembre 2015
rotazione
Struttura dei motori DC


quando gli avvolgimenti si
allineano orizzontalmente, il
commutatore inverte la
direzione di corrente
attraverso gli avvolgimenti,
modificando il campo
magnetico;
il processo ritorna quindi
allo stato di partenza e il
ciclo si ripete
(http://it.wikipedia.org/wiki/File:Electric_motor.gif)
Corso di Robotica per docenti ottobre/novembre 2015
Controllo PWM dei motori
DC


Modulazione di larghezza di impulso,
dall'inglese pulse-width modulation
onda quadra di duty cycle variabile che
permette di controllare la potenza
assorbita da un carico elettrico
Corso di Robotica per docenti ottobre/novembre 2015
Controllo dei motori dell'NXT




i connettori sono a sei fili.
controllo degli attuatori con segnali PWM
alla tensione di 4,3 V e con correnti da
700 mA fino a 1 A valore di picco
il motore è anche equipaggiato con una
protezione termica interna
due collegamenti per le informazioni
provenienti dal decoder integrato nel
Corso di Robotica per docenti motore
ottobre/novembre 2015
Gli encoder


Il trasduttore di posizione angolare, è un
dispositivo elettromeccanico che converte
la posizione angolare del suo asse
rotante in segnali elettrici numerici digitali
Gli encoder si possono dividere in due
grandi categorie:
* assoluti (http://it.wikipedia.org/wiki/Codice_Gray)
* relativi (noti anche come incrementali)
Corso di Robotica per docenti ottobre/novembre 2015
Gli encoder relativi
Corso di Robotica per docenti ottobre/novembre 2015
Gli encoder relativi


hanno in genere da 100 a 6.000 aree per
giro
due piste fuori fase permettono di
ottenere sia la posizione che la direzione
della rotazione
Corso di Robotica per docenti ottobre/novembre 2015
Il sensore di contatto

SetSensorTouch(porta)
Corso di Robotica per docenti ottobre/novembre 2015
Esercizi da svolgere



1) Spostare in avanti per 2 secondi con
potenza pari al 25% e tornare indietro per
1 secondo con velocità al 50%.
2) Mettere a velocità massima solo una
ruota per tre secondi.
3) Mettere a velocità massima una ruota
e massima negativa l'altra, per 3 secondi.

Corso di Robotica per docenti ottobre/novembre 2015
Esercizi da svolgere
4) Cosa cambia nel comportamento dell'esercizio 2 e 3?
5) Ripetere le istruzioni degli esercizi precedenti per tre
volte usando un blocco di ripetizione, intervallando
ogni ripetizione con tre secondi di pausa.
6) Usando il righello e gli altri strumenti necessari,
determinare per quanto tempo devo far funzionare i
motori al 50% perché il robot si sposti di 20 cm in linea
retta. Come posso fare per avere una risposta più
precisa?
Corso di Robotica per docenti ottobre/novembre 2015
Esercizi da svolgere
7) Far muovere il robot lungo il perimetro di un quadrato
di lato 40 cm, al 60% della velocità utilizzando una
delle funzioni degli esercizi precedenti.
8) Il robot si deve muovere a velocità costante pari al
50%. In caso di urto (rilevato dal sensore di contatto)
deve arretrare di 20 cm, ruotare di 120° e ripartire al
velocità costante.
Corso di Robotica per docenti ottobre/novembre 2015
Esercizi da svolgere
9) Contiamo gli urti: il robot si deve muovere a velocità
costante, pari al 60%, in caso di urto (rilevato dal
sensore di contatto) deve incrementare un'apposita
variabile. Se il numero nella variabile è pari deve
arretrare di 20 cm, ruotare di 120° e ripartire a velocità
costante, se il numero è dispari deve arretrare di 20
cm, ruotare di 180° e ripartire a velocità costante.
Corso di Robotica per docenti ottobre/novembre 2015
Il sensore di luminosità


Il sensore determina il livello di
luminosità nell'ambiente;
può anche emettere
luce per poi rilevare
quella riflessa.
Corso di Robotica per docenti ottobre/novembre 2015
Il sensore di luminosità
Corso di Robotica per docenti ottobre/novembre 2015
Il monitor dell'NXT
• Il monitor risulta utile per
Debugging
 Settaggio di parametri
 Messaggi durante l'esecuzione
 Grafica
 Giochi

Corso di Robotica per docenti ottobre/novembre 2015
Carateristiche del monitor


Il display ha una risoluzione 100 x 64 px
è possibile disegnare qualsiasi cosa
sullo schermo, ma visualizzeremo solo
numeri
o testi
Corso di Robotica per docenti ottobre/novembre 2015
Esercizi
• 1) Visualizzare sul monitor dell'NXT il
valore di luminosità rilevato dal sensore
impostato in modalità percentuale e poi
in modalità raw.
• 2) Scrivere un programma per seguire
una linea scura su fondo bianco
utilizzando un solo sensore di
luminosità.
Corso di Robotica per docenti ottobre/novembre 2015
Esercizi
3) Far ruotare per 360° il robot attorno al
proprio asse. Memorizzare per ogni
grado la luminosità rilevata utilizzando un
vettore. Al termine della rotazione
individuare l'angolo in cui è stata rilevata
la massima luminosità e quindi riportare il
robot in quella posizione.
Corso di Robotica per docenti ottobre/novembre 2015
Sensore ad ultrasuoni


Valuta la distanza degli oggetti tramite
onde acustiche
E' un sensore intelligente, utilizza il
protocollo I2C
Corso di Robotica per docenti ottobre/novembre 2015
Programmi
1) Far muovere in linea retta il robot fino a
quando incontra un ostacolo ad una
distanza inferiore a 40 cm. In questo
caso farlo ruotare su se stesso di un
angolo casuale compreso tra 100° e 180°
e farlo di nuovo muovere in linea retta.
Terminare il programma dopo cinque
“incontri”.
Corso di Robotica per docenti ottobre/novembre 2015
Programmi
2) Far muovere il robot in linea retta.
Quando viene rilevato un ostacolo ad
una distanza inferiore al metro, la
velocità deve diminuire direttamente
proporzionale alla distanza fino ad
annullarsi a 40 cm dall'ostacolo stesso.
In ogni caso, giunto a 50 cm
dall'ostacolo, il robot deve ruotare di 180°
e riprendere il movimento rettilineo al
75% della velocità
massima.
Corso di Robotica per docenti ottobre/novembre 2015
Programmi
3) Usare il sensore ad ultrasuoni per
determinare la velocità di avvicinamento
ad un muro (in cm/s) del vostro robot e
visualizzarla sul monitor in modo che sia
leggibile. Confrontare il risultato con una
misura spazio/tempo effettuata da voi e
con i calcoli teorici effettuati conoscendo
il diametro della ruota e il numero di giri
della ruota.
Corso di Robotica per docenti ottobre/novembre 2015
Multitasking
- L'NXT supporta il multitasking, quindi è
possibile definire più task (compiti) che
vengono eseguiti in parallelo dal
processore
- Il numero massimo di task è 256
- Un task termina quando si arriva alla fine
dello stesso.
Corso di Robotica per docenti ottobre/novembre 2015
Multi tasking
programma
Scrivere un programma con due task, il
main che come al solito gestisce il
movimento del robot nel recinto, il
secondo che fa lampeggiare il LED con
periodo sempre più breve. Il periodo
deve partire da 10 s e diminuire di 1 s
ogni 10 s; quando T diventa 0 il
programma deve terminare.
Corso di Robotica per docenti ottobre/novembre 2015
Il sensore acustico
Sensore analogico
Risposte in dBA o in dB. Fino a 90 dB.
SetSensorSound(porta)
Corso di Robotica per docenti ottobre/novembre 2015
Il sensore acustico
1) Memorizzare in un vettore i valori rilevati
da un sensore acustico, ogni 400 ms.
Dopo 60 secondi determinare il valore
massimo, quello minimo e quello medio.
Visualizzare sul monitor i valori ed
attendere che l'utente prema il bottone
centrale prima di terminare il programma.
Corso di Robotica per docenti ottobre/novembre 2015
Sensore acustico
2) Il robot deve procedere in linea retta fino a
quando non vengono battute le mani. Se le
mani vengono battute due volte entro 500 ms
deve ruotare di una angolo compreso tra 120°
e 180° in verso orario, se le mani vengono
battute una volta sola deve ruotare tra 120° e
180° in verso antiorario. Battiti consecutivi in
un intervallo di tempo compreso tra 500 ms e 1
s non devono essere considerati.
Corso di Robotica per docenti ottobre/novembre 2015
Per finire
Muoversi solo quando il rumore è al di
sotto di un certo valore, gestendo gli urti
e tornando vicino alla parete quando il
rumore diventa molto intenso.
Corso di Robotica per docenti ottobre/novembre 2015
Il campo di gara è delimitato da una riga nera. Il
robot che esce dalla riga perde la sfida. Ogni
robot è dotato di un sensore di luminosità, un
sensore ad ultrasuoni ed un sensore di
contatto. Quando il robot percepisce un corpo
a meno di 40 cm deve cercare di raggiungerlo
e a contatto avvenuto può mettere i motori al
massimo con l'intento di spingere l'altro robot
fuori dal campo di gara.....
Corso di Robotica per docenti ottobre/novembre 2015
Il protocollo Bluetooth
Bluetooth è una specifica industriale per
reti personali senza fili
Mette in comunicazione dispositivi entro un
raggio di qualche decina di metri
Formalizzata dalla Bluetooth Special
Interest Group (SIG) nel 1999
Corso di Robotica per docenti ottobre/novembre 2015
Caratteristiche del protocollo
Bluetooth
- bassi consumi
- un corto raggio di azione (1-100 metri)
- un basso costo di produzione
Attualmente un miliardo di dispositivi
montano un'interfaccia Bluetooth!
Corso di Robotica per docenti ottobre/novembre 2015
Tipi di reti Bluetooth
- collegamento di tipo master slave con
fino a 7 slave, detta piconet;
- collegando due piconet si forma una
scatternet;
- ogni dispositivo è configurabile per
cercare costantemente altri dispositivi
(eventualmente con password).
Corso di Robotica per docenti ottobre/novembre 2015
Reti Bluetooth
Il master si occupa della la sincronizzazione del clock degli
altri dispositivi (slave) e la sequenza dei salti di frequenza.
Corso di Robotica per docenti ottobre/novembre 2015
Qualche dettaglio su BT
- Lavora nelle frequenze libere di 2,45 Ghz,
dividendo la banda in 79 canali e
commutando tra i vari canali 1600 volte
al secondo;
- la versione 1.1 e 1.2 gestisce velocità di
trasferimento fino a 723,1 kb/s, la 2.0
gestisce una modalità ad alta velocità
fino a 3 Mb/s.
Corso di Robotica per docenti ottobre/novembre 2015
Qualche dettaglio su BT
I dispositivi dotati di Bluetooth si dividono
in 3 classi:
Classe
Potenza(mW) Distanza(m)
1
100
~ 100
2
2,5
~ 10
3
1
~1
Corso di Robotica per docenti ottobre/novembre 2015
Modalità operative
- Standby (ascolto ogni 1,28 s)
- Connessione
- Active mode L’unità partecipa attivamente alla
piconet, sia in ricezione che in trasmissione, ed è
sincronizzata al clock del master;
- Hold mode Il master può mettere i dispositivi slave
nello stato di Hold per un tempo determinato,
nessun pacchetto può essere trasmesso dal master
anche se il dispositivo mantiene la sincronizzazione;
Corso di Robotica per docenti ottobre/novembre 2015
Modalità operative
- Sniff mode Lo slave che passa in questo stato si trova
in una modalità di risparmio energetico. Per entrare
nello sniff mode, master e slave devono negoziare;
- Park mode Il dispositivo è ancora sincronizzato alla
piconet ma perde il suo indirizzo di dispositivo attivo
(AM_ADDR) e riceve un nuovo indirizzo di 8 bit
(PM_ADDR, Park Mode Address). Questa modalità è
stata ideata per avere la possibilità di costituire piconet
con più di sette slave.
Corso di Robotica per docenti ottobre/novembre 2015
Scarica

nxt slide corso docenti