Pixy CigarBot

Pixy CigarBot: un robot mobile per inseguimento di oggetti colorati

Pixy CigarBot: a mobile robot for colored objects following

Il progetto di Pixy CigarBot nasce con l’idea del Prof. Giovanni Ulivi di far applicare agli studenti le conoscenze teoriche del suo corso di Roboitca in un piccolo progetto.

The project of Pixy CigarBot is born with the idea of the Prof. Giovanni Ulivi to apply the theoretical knowledges of his course of Robotica to the students into a project.

Pixy CigarBot è un robot mobile che utilizza Pixy (CMUcam5)  per il rilevamento del colore dell’oggetto da inseguire. Il corpo del robot è costituito da una vecchia scatola di sigari, come si faceva un tempo per le Cigar box Radios, che contiene le componenti elettroniche principali.

Pixy CigarBot is a mobile robot that uses Pixy (CMUcam5) to take over the color of the object to pursue. Robot’s body has been made by an old cigar box, like Cigar box radios in the 60s , that contains the principal electronic components.

Connettendo facilmente Arduino con Pixy, è stato possibile utilizzare tutte le funzionalità della telecamera con il semplice linguaggio di Arduino e tramite una comunicazione bluetooth seriale, inviare i dati a Matlab per implementare gli algoritmi basati sulle nozione teoriche apprese durante il corso di Robotica.

Connecting Arduino with Pixy, is easy to use all the functionalities of the camera with the Arduino’s language and with a bluetooth communication send the data to Matlab to implement the algorithms learned during Robotics’s course.

Struttura

Structure

Pixy (CMUcam5) è montata sulla cigar box insieme ad una coppia di servomotori per consentire un movimento in due direzioni, orizzontale e verticale. Una seconda coppia di servo è stata utilizzata per controllare le due ruote anteriori.
L’interno della cigar box contiene un circuito che connette tutte le componenti elettroniche ad Arduino, alimentata a 5V con una power bank. I 4 servomotori  necessitano invece di 6V, per questo è stato utilizzato un pacco di 4 batterie di tipo AA da 1,5 V l’una.

Pixy (CMUcam5) is installed on the cigar box with a couple of servomotors to allow a movement in two directions, horizontal and vertical. A second couple of servos has been used to control the two anterior wheels.
The inside of the cigarbox contains a circuit that connects all the electronic components to Arduino, fed with 5V through a power bank. All servomotors require 6V instead and for this reason a package of 4 batteries has been used.


   

Come funziona

How it works

Il compito del robot è di inseguire un oggetto colorato, ma come fa a distinguere gli oggetti in base al colore? Pixy (CMUcam5) è stata creata proprio per questo scopo. Tramite un semplice programma chiamato PixyMon, fornito dagli stessi creatori, si possono far memorizzare a Pixy le sfumature di colore desiderate, fino ad un massimo di sette. Il funzionamento e le varie configurazioni sono spiegate in dettaglio sul sito ufficiale. Una volta impostata la sfumatura di colore desiderata, Pixy individuerà qualsiasi cosa nel suo campo visivo presenti quel particolare colore.

Connettendo Arduino con Pixy si può utilizzare la libreria di Pixy per acquisire l’immagine dell’oggetto inquadrato sotto forma di blocchi (Rettangolo) rappresentati da colore, numero di blocchi inquadrati, altezza , larghezza e posizione nel piano immagine. Tramite una comunicazione seriale bluetooth instaurata tra Arduino e un PC con Matlab è possibile scambiare tutte queste informazioni. Il ruolo di Matlab è fondamentale in quanto deve calcolare ogni singola azione che il robot andrà ad eseguire. Uno strumento utile allo scopo è la Robotics & Machine Vision Toolbox di Matlab (by Peter Corke), che consente di utilizzare molteplici funzioni matematiche complesse tipiche della robotica, come il calcolo delle cinematica diretta o inversa e la generazione di traiettorie, in poche righe di codice.

The robot’s goal is pursue an object, but how can it distinguish the objects through the color? Pixy (CMUcam5) has been created for this purpose. Through a simple program called PixyMon, furnished by the same creators, Pixy can memorize the desired color’s tone. Once it is set Pixy will frame anything in his field of view which have that color’s tone. Various configurations are explained in detail on the official site.

Connecting Arduino with Pixy, Pixy’s libraries can be used for acquiring the image of the object represented by signature, number of blocks, height, width and position in the image plain. Through a serial communication established between Arduino and a PC with Matlab it is possible exchanging all these informations. The Matlab’s role is fundamental because it must calculate every single action the robot will go to perform. Useful tool to the purpose is the Matlab’s Robotics & Machine Vision Toolbox (by Peter Corke), that allows to use many complex mathematical functions like foreward or inverse kinematics and trajectories generations, in a few lines of code.

Control System Scheme

Proprio come si vede nel video di presentazione, con la Toolbox vengono calcolati e visualizzati i movimenti della testa del robot, composta appunto da Pixy e dai due servomotori. Per costruire la testa a livello simulativo abbiamo creato tramite la Robotics Toolbox un robot a due gradi di libertà dove, al posto dell’ End-Effector viene posizionata la telecamera fornita dalla Vision Toolbox.

L’algoritmo principale è composto da due loop di controllo (uno su Arduino e uno su Matlab) come indicato in figura. Dopo aver acquisito le informazioni sull’oggetto nel mondo  reale in 2D, viene mappato nella simulazione in 3D. A questo punto interviene lo Jacobiano dell’immagine, calcolato appositamente con la toolbox di visone, che ha l’obiettivo di far inquadrare al robot l’oggetto posizionandolo perfettamente al centro del suo campo visivo. Gli angoli dei servomotori, necessari ad inquadrare l’oggetto al centro sono calcolati tramite la cinematica,  e vengono subito inviati ed attuati dal robot.

In ogni istante viene inoltre valutata la distanza del robot dall’oggetto. Se è troppo distante, l’algoritmo di controllo calcola attraverso uno Jacobiano, i valori da inviare ai servomotori delle ruote che sono necessari a condurre il robot alla distanza desiderata e il più possibile frontale all’oggetto. Viceversa un oggetto troppo vicino lo farà allontanare. Per far ruotare il carrello di un’angolazione desiderata e quindi posizionarlo frontalmente all’oggetto inquadrato, è stato utilizzato uno smatphone per il rilevamento costante dell’angolo di rotazione del robot rispetto all’oggetto. Lo smartphone interagisce direttamente con Matlab tramite l’app ufficiale Matlab Mobile, disponibile per iOS e Android.

As we can see in presentation’s video, the Toolbox allows to calculate and visualize the movements of the head of the robot, made with Pixy and two servomotors. To build the head for the simulation we have created a robot of two degrees of freedom through the Robotics Toolbox. The Vision Toolbox’s camera replaces the End-Effector.

The main algorithm is composed by two control loops (one on Arduino and one on Matlab) as showed in figure. After the acquisition of the information about the real world 2D object, the algorithm can map it into 3D object on the simulation. At this point, with the toolbox the Image Jacobian can be calculated with the purpose to lead the frame at the center of image plane. The required servomotors’s angle are calculated through kinematics, and immediately sended to Arduino who can actuate it.

In every moment the robot can evalue object’s distance. If it is too far, the control algorithm calculates Weels Jacobian and sends values to servomotors’s wheels that are necessary to conduct the robot at desired distance, as much as possible in front of the object. The other way around an object too close will step back the robot. To perform cart’s rotation over a desired angle, a smatphone has been used to acquire the actual angle of robot’s rotation using smatphone’s sensors. The smartphone directly interacts with Matlab through the official Matlab Mobile app, available for iOS and Android.

Il futuro di Pixy CigarBot

Pixy CigarBot’s future

Il codice del progetto è stato scritto in modo da lasciare spazio alla fantasia per future implementazioni. Avendo a disposizione gli algoritmi di controllo principali, sarà possibile potenziare le funzionalità del robot, ad esempio facendogli inseguire più di un oggetto oppure muoversi nello spazio elaborando strategie di motion planning per evitare ostacoli o altro ancora.

Anche la stessa struttura può essere modificata, semplicemente potenziando i servomotori e dotandolo di una sensoristica adeguata.

Project’s code has been written with the purpose to leave space for future implementations. Starting from the principal control algorithms and functions, it will be possible to improve the functionalities of the robot. For instance could be possible pursuing more than an object or moving around elaborating strategies with motion planning to avoid obstacles.
The same structure can also be modified, simply changing the servomotors of the weels with some more powerfull and equipping it with a suitable sensors.

Antonino Principato, Alessia Laghi, Kevin Bianchi