Differenze tra le versioni di "MultiFollower"
Riga 81: | Riga 81: | ||
Foto: il percorso da seguire disegnato con Nastro Nero | Foto: il percorso da seguire disegnato con Nastro Nero | ||
− | [[File:Percorso_Foll.png]] [ | + | [[File:Percorso_Foll.png]] |
− | + | [https://www.youtube.com/watch?feature=player_embedded&v=Ph16DPK-Tq4] | |
'''Continuerà i lavori sono in corso ...''' | '''Continuerà i lavori sono in corso ...''' |
Versione delle 15:41, 11 set 2015
Progetto robot multi follower (2015)
Obiettivi:
1 Costruire un Robot Follower (didattico) sensibile a diverse “guide” 1.1 Montare tre tipi di sensori: InfraRed, elettromagnetico di linea, di delimitazione e a ultrasuoni per ostacoli; 1.2 Verificare algoritmi per i diversi sensori; 1.3 Programmare Arduino Sensori e Motori con Raspy WIFI via Rete; 1.4 Usare Raspy con telecamera di “riconoscimento di segnali direzionali”;
La struttura fisica e logica del robot
Il robot ha una struttura dedicata a contenere Motori e azionamenti, Sensori, Alimentazioni e Logiche di controllo. Ha due ruote motrici indipendenti e una ruota “pivotante”.
Questo è il profilo “sommario”:
Quanti sensori montare
La scelta, dopo prove e ricerche è caduta sulle seguenti opzioni, schematizzate in figura:
1) Due sensori del tipo CNY70 per following di linea (IR Foll.) 2) Due sensori elettromagnetici (bobina-capacità-controllo) sensibili al campo elettromagnetico generato su un filo di percorso/delimitazione (Bobina/Logica locale di controllo) 3) Due sensori a ultrasuoni per “vedere” ostacoli improvvisi (US/Logica locale di controllo) 4) Telecamera Raspy per “vedere” segnali direzionali (Raspberry/camera)
Foto: Sensori CNY70 IR Follower, Sensore elettromagnetico con Bobina, Tutti i sensori visti da sotto.
Altri dispositivi
Sono visibili nel profilo anche:
5) Il Driver motori governato da Arduino 6) Il Controllo delle alimentazioni elettriche. Le 3 alimentazioni necessarie sono state separate per ragioni di stabilità circuitale: a) Motori, b)Raspberry , c)Arduino. Le batterie a 12 Volt sono DUE. Una per i Motori e una per le logiche. Sono previsti uno Switch e due connettori per la ricarica delle singole Batterie. 7) Arduino Mega controlla sia il Driver dei Motori che la gestione dei sensori. 8) RaspberryPi 2 dotata di HD e Camera, consente la programmazione in remoto (WIFI) di Arduino e in futuro l'uso della camera per identificare Segnali Direzionali (da sviluppare).
Foto: Driver Motori tipo L298n, Controllo Alimentazioni, Shield Connessioni su Arduino Mega
Lo shield è stato costruito per ragioni di stabilità delle connessioni coi sensori, per inserire un paio di led con funzioni di monitor, un deep switch per selezionare all'avvio l'algoritmo da eseguire e un pulsante di start dell'algoritmo.
Immagine d'insieme allo stato attuale:
Algoritmi e gestione sensori
Il programma principale su Arduino ha la seguente struttura logica:
Follower IR:
Si tratta del classico inseguitore di una linea Scura su spazio Chiaro (o viceversa). Per “vedere” la linea utilizza 2 sensori IR di tipo CNY70 che sono collocati a circa 5mm dal pavimento.
Immagine: Foto del sensore, Schema sensore.
dimensione sensore 7x7x6 mm - led IR assorbe 20 mA - distanza ottimale 3-9mm dal suolo.
Immagine: Schema elettrico dell'assemblaggio sensori IR:
Si tratta di realizzare una procedura di lettura della quantità di “illuminamento” dei due ricevitori usando due convertitori ADC di Arduino. E' necessario avere al termine della procedura un “Valore pesato” che indica la posizione della linea rispetto ai sensori e quindi al Robot. I sistema utilizzato è il seguente: Se la coppia di sensori esce a “sinistra” viene restituito il valore 0, se il primo IR e sulla Linea Scura viene restituito 1000, se entrambi sono sulla linea il valore è 1500, se solo il secondo 2000, se esce a “destra” 2000. Il “valore pesato” viene dato in INPUT ad un algoritmo PID (Proporzionale Integrale, Derivato) di cui esiste una sperimentata libreria on-line (PID.h), che restituisce un valore proporzionale tra 0 e 255 che indica se svoltare a “destra” se <127 o a “sinistra” se >128 in modo più o meno aggressivo. Evidentemente Arduino invierà al driver Motori gli opportuni valori per azionare i motori in modo corretto.
Foto: il percorso da seguire disegnato con Nastro Nero
[1]
Continuerà i lavori sono in corso ...