Control your spykee with fingers
Today I want to show you how to control your Spykee using your finger movements.
What you need:
A webcam
Spykee Erector on Amazon right now is only £ 148 .
RoboRealm a software with visual and contro plugins.
A green tape to wrap around your fingers.
I wrote a simple cascade filter which:
- filter from RGB only green channel with proper hue and saturation,
you need to tune this according to your camera parameters - run a median filter
- track the 2 biggest squared blobs on the left and right side
- build a simple visual panel to identify your blobs
- transform the coordinates of the blobs to motor commands
- send the motor commands over wireless to spykee
You can download the code here:
RoboRealm module
I made some simple videos on how it works:
Because I have only 1 camera I tried to mix a video with the control tracking and the Spykee camera.
This is what I get, I’ll try to borrow another camera to make a better video soon.
Enjoy!


April 15th, 2009 at 7:45 am
[...] sent in this cool project where he wrote some custom code to control the Spykee robot using gestures. He filters out everything but green through his web cam, then wraps his fingers in green tape. He [...]
April 16th, 2009 at 11:27 am
ma il tracking sul solo colore ti risulta abbastanza stabile da essere utilizzabile al di fuori delle demo? ci ho lavoricchiato un po’ anche io, praticamente con la stessa tecnica (cerca il blob di maggiori dimensioni ecc), ma alla fine diveniva macchinoso adattarsi a condizioni di luce di luoghi e ore diversi.
ultimamente sto ensando a tecniche vicine ma che spero possano essere più robuste come ad esempio feature tracking basato su istogrammi.
April 18th, 2009 at 7:10 pm
Allora se e’ vero che l’histogram matching con distanza EDM (suppongo che ti rifersci a quello per essere invariante all’illuminazione) e’ robusto alla variazioen di luce non basta da solo a trovare le dita, prenderesti comunque un bel po di rumore. Quindi blob tracking ci serve per forza.
Cmq il vantaggio del colore verde e’ che i CCD hanno un range dinamico maggiore e io nella demo non ho fatto altro che impostare i valori HSV molto bassi in modo che tu cmq i punti verdi sono detectati, poi ci pensa il filtro di blob tracking a trovare le zone con maggiore densita’.
La tecnica piu’ robusta however sarebbe quella di fare il tracking delle dita basato sulla forma: edge -> hough transforms -> point feature mapping.
Diciamo che ho voluto mantere un costo computazionale basso tutto qua.
April 24th, 2009 at 8:10 pm
la hough transformation non la conoscevo (gioco da poco da con la computer vision): thanks pal
btw: gran bel robottino, sto pensando di prendere uno anche io da un po’ di tempo
April 24th, 2009 at 9:24 pm
Un altra cosa molto reliable che sto leggendo recentemente e’ object tracking usando AdaBoost e Haar-like features. E’ implementato anche nelle OpenCV fra le varie API.
L’unica cosa e’ che devi farti un database di mani o diti positivo e negativo su cui costruire il classificatore.
Il vantaggio e’ che essendo una trasformata wavelet e’ invariante in spazio e scala e normalizzando in base alla varianza viene anche abbastanza invariante sull’illuminazione. Se mi aggiungi su skype ti posso dare altri tips.
ciao