Negli algoritmi di inseguimento, quelli basati sulla tecnica on-off rappresentano una componente cruciale per il successo dei robot programmabili. Questa metodologia, che simula l’azione di inseguire una linea tracciata sul terreno, offre un’opportunità straordinaria per gli studenti di apprendere i fondamenti della programmazione e della logica algoritmica. In questo articolo, esploreremo gli aspetti chiave di questo algoritmo, le sue applicazioni educative e come esso contribuisce allo sviluppo delle competenze nel campo della robotica.
Indice dei contenuti
Cos’è l’Algoritmo di Inseguimento On-Off
L’algoritmo di inseguimento on-off è una strategia di controllo che consente a un robot di seguire una linea tracciata sul terreno. In genere la linea ha un contrasto elevato rispetto alla base sottostante, magari un nastro nero su mattonella bianca. Il termine “on-off” si riferisce al fatto che il robot alterna tra due stati: uno in cui si sposta verso sinistra e un altro in cui si sposta verso destra. Questo ciclo continuo di correzione permette al robot di rimanere sulla traiettoria desiderata, mantenendo una precisione sorprendente nel seguire la linea.
Sensore di Linea
Un sensore di insegui linea è fondamentale per l’algoritmo di inseguimento on-off. Questo dispositivo rileva i cambiamenti nella luminosità sulla superficie, consentendo al robot di interpretare la presenza o l’assenza della linea in base ad un segnale luminoso emesso e subito dopo rimisurato in base alla luce riflessa. Nel robot Lego EV3 il sensore accessorio preposto è il EV3 45506. Nei costosi kit però ce n’è sempre solo uno che potrebbe essere abbastanza per questo genere di esperienza ma, lo vedremo, duo o più sensori danno letture diverse che possono migliorare l’algoritmo in esame. I sensori per Lego EV3, oltre ad essere teoricamente fuori commercio, sono anche molto costosi da reperire su piattaforme non proprio tradizionali come Aliexpress, Wish, Temu per cifre intorno ai 30€. Più semplice invece reperire qualcosa di più economico ma comunque valido per robot autocostruiti basati su piattaforme come Arduino, Raspberry e similari.
Algoritmo
l’algoritmo si basa su una logica semplice ma efficace. Se il sensore rileva la linea, il robot si sposterà nella direzione opposta per rientrare sulla traiettoria. Se la linea non viene rilevata, il robot si sposterà nella direzione in cui dovrebbe trovarsi la linea. In un mondo ideale luce/ombra potremmo quantificarli numericamente con un numero da 0 a 100 che indica la quantità di luce misurata dal sensore. Più la luce riflessa da un ostacolo è intensa, più alto è il valore numerico compreso tra 0 e 100. Idealmente dovrebbero essere valori sono “secchi”: 100 se bianco, 0 se nero, 50 se il sensore legge metà bianco e metà luce.
Nella pratica però questi valori non sono mai così scontati: difetti di taratura del sensore, l’ombra eventuale presente sopra il sensore con una luce artificiale dall’alto piuttosto che diffusa, l’ombra prodotta dalle persone che osservano il robot, le impurità delle sezioni in bianco per vernice o piccole asperità, rendono la misurazione più incerta e vanno poste opportune correzioni preliminari.
L’algoritmo di suo sembra funzionare. Ma se il robot si trova inizialmente sul nero misurando lo zero ideale ed un certo punto comincia a misurare un aumento del bianco, come può sapere se il bianco misurato proviene perché si sta affacciando sul lato sinistro piuttosto che destro? I ragazzi qui si sbizzariscono ma alla fine arrivano a immagina di posizionare in modo accurato il robot/sensore non sul bianco completo o nero completo ma sul bordo della linea a metà.
Pseudocodice
Ripeti per sempre
Leggo un valore dal sensore
Se il valore > 50 (valore medio) --> il robot si sta spostando verso il bianco (che sta alla sua destra)
Il robot gira a sinistra
Se il valore letto < 50 (valore medio) --> il robot si sta spostando verso il nero (che sta alla sua sinistra)
Il robot gira a destra
Lego EV3 Lab Software v1.4.5 (fuori supporto)
- Il sensore va configurato per leggere il valore di uce riflessa invece di RGB
- Il sensore è impostato sulla porta 3, valuta se è su altra porta nel tuo veicolo
- Nel blocco rosso di confronto >< il valore 50 è quello ideale. Andrebbe sperimentato sul campo il valore ottimale di soglia mettendo il veicolo sulla linea, a metà. Spesso è un valore tra 30 e 50.
- I motori qui sono impostati sulle porte B e C, eventualemente modifica i valori
- Velocità ed angolo di sterzata vanno impostati anche qui in modo ottimale rispetto alla larghezza della linea, il percorso, la superficie del campo.
Lego EV3 ClassRoom Lab Software v1.4 (fuori supporto)
Lego Micropython PyBricks 2.0.0
#!/usr/bin/env pybricks-micropython
from pybricks.hubs import EV3Brick
from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, InfraredSensor, UltrasonicSensor, GyroSensor)
from pybricks.parameters import Port, Stop, Direction, Button, Color
from pybricks.tools import wait, StopWatch, DataLog
from pybricks.robotics import DriveBase
from pybricks.media.ev3dev import SoundFile, ImageFile
# Create your objects here.
ev3 = EV3Brick()
#inizializzazione sensori/attuatori
motore_dx = Motor(B, positive_direction=Direction.CLOCKWISE, gears=None)
motore_sx = Motor(C, positive_direction=Direction.CLOCKWISE, gears=None)
sensore_colore = ColorSensor(3)
lego = DriveBase(motore_sx, motore_dx, wheel_diameter=55.5, axle_track=104)
#parametri (per cambiarli facilmente)
soglia = 50
velocita = 30
#algoritmo principale
while True:
luce= sensore_colore.reflection()
if luce < soglia:
lego.run_angle(velocita, 30)
else:
lego.run_angle(velocita, -30)
Altri linguaggi
Per semplicità non allego altre implementazioni. Potete però informarvi sui linguaggi supportati con firmware non ufficiali Lego ma forse con un supporto maggiore anche attuale, con la relativa documentazione https://www.ev3dev.org/docs/programming-languages/
Applicazioni Educative
L’inseguimento on-off offre un contesto pratico per insegnare principi fondamentali di programmazione e controllo ai giovani studenti. Attraverso progetti di robotica educativa, gli studenti possono acquisire competenze nel progettare, implementare e testare algoritmi. Inoltre, lavorando con l’inseguimento on-off, gli studenti possono approfondire la comprensione di concetti come la logica condizionale e il feedback sensoriale.
Limiti e Possibili Miglioramenti
Nonostante la sua efficacia, l’algoritmo di inseguimento on-off presenta alcune sfide e limiti. Ad esempio, potrebbe essere sensibile alle variazioni di luminosità ambientale. Ancora, a velocità ridotta del mezzo l’algoritmo funziona ma se il percorso presenta curve molto “strette” con variazioni repentine, i risultati sono imprevedibili a seconda che la curva sia o meno alla variazione della lettura del nero. Occorrono algoritmi più complessi o l’integrazione di più sensori per una maggiore precisione in questi casi.
Conclusioni
L’algoritmo di inseguimento on-off è un pilastro nella robotica educativa, offrendo un modo accessibile e coinvolgente per introdurre gli studenti al mondo della programmazione e del controllo dei robot. Attraverso progetti pratici, si possono ispirare nuove generazioni di appassionati, anche più piccoli, di scienza e tecnologia, preparandoli per sfide sempre più complesse nel mondo della robotica e dell’automazione.
Ultima modifica 7 Dicembre 2023