Robotica Educativa - alfredocentinaro.it https://www.alfredocentinaro.it/category/laboratori/robotica-educativa/ Sito personale di Alfredo Centinaro, ingegnere informatico, insegnante, musicista. Programmazione, appunti, esercizi, sistemi e reti, tpsit, esami di stato, arduino Tue, 21 Jan 2025 16:04:12 +0000 it-IT hourly 1 https://wordpress.org/?v=6.9.4 https://www.alfredocentinaro.it/wp-content/uploads/2022/01/logo_alfredocentinaro-150x150.png Robotica Educativa - alfredocentinaro.it https://www.alfredocentinaro.it/category/laboratori/robotica-educativa/ 32 32 Robocup Junior https://www.alfredocentinaro.it/laboratori/robotica-educativa/robocup-junior/ Thu, 01 Feb 2024 14:20:40 +0000 https://www.alfredocentinaro.it/?p=6653 Ho sentito la necessità di scrivere questo articolo per condividere alcune riflessioni e dritte tratte dalla partecipazione ad alcune edizioni di questa competizione con i miei nuovi alunni e colleghi che si cimentano per la prima volta con i corsi e gare di robotica educativa. Cerchiamo di capire come funziona questo mondo della Robocup Junior, ... Leggi tutto

L'articolo Robocup Junior proviene da alfredocentinaro.it.

]]>
Ho sentito la necessità di scrivere questo articolo per condividere alcune riflessioni e dritte tratte dalla partecipazione ad alcune edizioni di questa competizione con i miei nuovi alunni e colleghi che si cimentano per la prima volta con i corsi e gare di robotica educativa. Cerchiamo di capire come funziona questo mondo della Robocup Junior, semplice nelle sue dinamiche, ma anche molto complesso per le mille sfaccettature che possiede.

La competizione

RoboCup Junior, sono un’importante parte della comunità robotica internazionale. E’ una competizione internazionale di robotica per bambini e adolescenti, che si tiene annualmente in diverse città del mondo. Ogni nazione aderente, come l’Italia, crea a sua volta dei campionati regionali e nazionali. A partecipare sono perlopiù le scuole superiori (licei scientifico ed istituti tecnici tecnologici perlopiù) e un numero comunque significativo di scuole di grado inferiore che hanno una categoria a loro riservata. La competizione è divisa in quattro categorie: Rescue line (quella su cui ci concentriamo di più in queste righe), Robo soccer (calcio robotico 2 vs 2 e 3 vs 3) e Maze (labirinto).

La competizione teoricamente non ha particolari vincoli se non l’età che deve essere Under 19. Problema non da poco quando devono essere scelte le squadre che quasi automaticamente elimina i ragazzi delle quinte superiori.

Il Maze

E’ una delle gare probabilmente più snobbate forse. Il nostro robot deve orientarsi in un labirinto con muri alti rigidi, raggiungendo alcune aree di checkpoint.

Soccer

I robot in squadre da due si sfidano ad una sorta di calcio, individuando in maniera frenetica la pallina di gioco e spingendola nella zona avversaria.

Teatro (On stage)

La gara On stage prevede l’uso di più robot, non solo Lego o autocostruiti, ma anche i robot della serie NAO. La gara prevede una rappresentazione, danza o spettacolo dove i robot sono sincronizzati e realizzano una coreografia avvincente. In genere è la preferita dei più piccoli, scuole medie o biennio delle superiori.

La Rescue Line

La competizione più gettonata ed avvincente. Prevede un percorso tracciato a terra su piastrelle in forex bianco di dimensione 30x30cm (materiale di semplice reperimento su store, anche online, come Leroy Merlin). La piastrella è bianca, le linee da seguire sono invece nere realizzate con nastro isolante. A queste si aggiungono dei quadratini verdi, sempre di nastro che richiedono che il robot giri nel lato dove sono poste. I percorsi sulle singole piastrelle possono essere dritti o accidentati da curve, spigoli od ostacoli come bastoncini, salite/discese, basculanti. A complicare ulteriormente la presenza di alcuni ostacoli da aggirare incollati a terra. Alla fine del percorso c’è un’area argentata che delimita l’ingresso di una sorta di arena. Qui i robot devono raccogliere delle palline nere o argentate di diametro 4/5cm per depositarle o spingere in alcune zone triangolari ai bordi del campo. Alcuni checkpoint consentono contrassegnano parti del percorso da cui riprendere eventuali tentativi.

Punteggi

I punteggi variano ma sostanzialmente il passaggio per intero sulla mattonella assegna 10 punti, 20 se si tratta di una mattonella con oggetto a terra o ostacolo da aggirare. Se il robot “si perde”, è possibile ritentare a ripercorrere il percorso riprendendo dall’ultimo checkpoint o dallo start. Ognuno dei 3 tentativi a disposizione assottiglia però il punteggio.

Il recupero delle palline moltiplica il punteggio precedente di 1.4 se si recupera e deposita una pallina argento, un ulteriore 1.4 se si deposita una pallina nera, dopo aver recuperato quelle argento.

Le strategie

Le strategie fanno molto in questa competizione. Sicuramente percorrere il percorso a terra per intero al primo tentativo è la migliore tattica su cui concentrarsi. I robot che fanno il seguilinea pulito sono quasi sempre in cima alle classifiche sia regionali che nazionali. Per esperienza, un buon seguilinea è sufficiente per passare le competizioni regionali dove spesso le scuole portano robot anche non perfettamente settati/programmati.

Diverso è il discorso per le competizioni nazionali dove è bene munirsi anche di organi di presa per le palline per essere nei primi 10 della classifica.

I robot

Per anni il Logo Mindstorm EV3 e tutte le sue declinazioni sono state le scelte più gettonate di tutte le scuole , licei ed istituti tecnici. Il ll ego EV3 è facilmente assemblabile utilizzando comodi kit con pezzi, sensori ed attuatori pronti all’uso. Gli alunni così possono concentrarsi sulle fasi di programmazione con linguaggi a blocchi, python, c++ e molti altri. Con la messa in pensione dei Lego EV3, un vero sostituto lego non c’è se non i robot della serie NXT e Robot Inventor. I prezzi proibitivi e la scarsa disponibilità, suggeriscono però di rivolgersi ad altre soluzioni.

La soluzione attuale migliore è autocostruire un robot per programmarlo con una basetta Arduino o Raspberry. In realtà di kit così se ne vendono già preconfezionati su Amazon e altri canali. Ritengo siano soluzioni poco interessanti per prezzi proibitivi e qualità spesso discutibile, oltre che mix di soluzioni tecniche non perfettamente aderenti alle necessità di queste competizioni. Con le stampanti 3D ormai in ogni scuola, facilità di reperimento anche di soluzioni online per scocche e parti, non è difficile improvvisarsi progettisti ed assemblatori, con un notevole coinvolgimento degli alunni in competenze difficilmente raggiungibili in aula. così come i driver per collegarli poi alla basetta Arduino/Raspberry e ai power bank che li alimenteranno.

Ruote e motori

Ampia scelta tra ruote classiche, cingoli o le curiose meccanum che consentono la marcia dritta e sul lato senza sterzare. Queste ultime sono molto interessanti ma difficili da gestire con la loro “camminata laterale”. A spingere il nostro veicolo ci sono motori passo-passo da 12volt con encoder e numero di giri controllati sono di facile reperimento ed assemblaggio ma si deve tenere presente e scegliere se usarne 2/4 motrici. Considerate che sterzare con le ruote è complesso e conviene usare stratagemmi con ruote sincronizzate per creare la curva necessaria più o meno stretta.

Schede di governo

La stesa intelligenza da piazzare a guida del nostro robot non è da scegliere con banalità. La famiglia Raspberry è molto interessante perché offre la possibilità di installare python e numerose librerie a supporto e soprattutto è dotato di un sistema operativo che consente funzionalità di alto livello come la connessione remota con client/server VNC per la programmazione e messa a punto del veicolo direttamente sul veicolo stesso. Il problema del raspberry sta nei consumi: il raspberry 3 e 4 sono ancora poco esigenti in termini di alimentazione, mentre il 5 per lavorare a pieno regime avrebbe bisogno di 27watt con 5A di corrente. Esigenze piuttosto spinte che obbligano a scegliere powerbank autocostruiti o molto costosi. Funziona anche a 3A ma avrebbe analoghe performance del fratello versione 4.

Diverso è il discorso se usiamo un prodotto della famiglia Arduino: meno risorse di calcole e comodità ma consumi pressoché nulli se scegliamo dispositivi come ESP32 e Arduino 1010 o Raspberry Pico 2040. Su di questi possiamo far girare versioni decenti ma ridotte di python con lo svantaggio però di dover usare un ide locale da pc per poi inviare il software al veicolo con un classico upload in stile arduino. Raspberry ha capacità di sfruttare visione artificiale e i software complessi ad essa collegati, Arduino no.

Visione Artificiale o RGB

La scelta sta poi alla competenza dei ragazzi: usare sensori RGB per riconoscere il percorso o dotarsi di telecamera con visione artificiale?

Il primo ricalca la tecnologia dei Lego, ampiamente studiata e documentata online su youtube e siti web. Economica e molto didattica. E’ un modo semplice di prepara un robot da gara senza troppi fronzoli. Ottimo per seguire le linee del percorso ma richiede di integrare sensoristica per poi prendere le palline.

Per la visione artificiale occorre invece preparare il software necessario, scegliere un framework per la visione tra Tensorflow, PyTorch, Yolo, accompagnati da OpenCV installarlo a regola d’arte e cominciare a programmare ad esempio in Python per interagire tra telecamera e poi azioni da far intraprendere al robot. Non proprio facilissimo ed immediato come con il Lego, insomma. La visione può riconosce le linee del percorso in modo facile e anche le palline dell’arena in un solo colpo.

Le gare

A livello regionale, le gare si tengono nella scuola capofila. Per l’Abruzzo, da alcuni anni è il Volta di Pescara. Ogni scuola che partecipa alla competizione e che ha aderito alla rete può gareggiare con 3 o 4 squadre, ognuna composta da 2 o fino 4 alunni. La giornata prevede 3 round per squadra in tre percorsi allestiti con diverse difficoltà. Ai ragazzi delle squadre viene assegnata un’area dove mettere a punto i robot, mentre i docenti vengono fatti allontanare in uno spazio a loro dedicato.

L'articolo Robocup Junior proviene da alfredocentinaro.it.

]]>
Insegui linea ON OFF https://www.alfredocentinaro.it/laboratori/robotica-educativa/insegui-linea-on-off/ Tue, 05 Dec 2023 08:09:36 +0000 https://www.alfredocentinaro.it/?p=6569 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 ... Leggi tutto

L'articolo Insegui linea ON OFF proviene da alfredocentinaro.it.

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

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 per Lego EV3
sensore per Arduino

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.

valori ideali letti dal sensore

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.
  • Il blocco di confronto
  • 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. Per iniziare 50 è il valore più intuitivo, ma un valore come 30, 25 è più “dolce” e potrebbe consentire un percorso meno spigoloso.

Lego EV3 ClassRoom Lab Software v1.4 (fuori supporto)

Lego Classroom

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(Port.B, positive_direction=Direction.CLOCKWISE, gears=None)
motore_sx = Motor(Port.C, positive_direction=Direction.CLOCKWISE, gears=None)

sensore_colore = ColorSensor(Port.S3)

lego = DriveBase(motore_sx, motore_dx, wheel_diameter=50.0, axle_track=104)

#parametri (per cambiarli facilmente)
soglia = 50
velocita = 10
sterzata = 30

#algoritmo principale
while True:
    luce= sensore_colore.reflection()
    if luce < soglia:
        lego.drive(velocita, sterzata)
    else:
        lego.drive(velocita, -sterzata)


    

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.

L'articolo Insegui linea ON OFF proviene da alfredocentinaro.it.

]]>