Sorting Cards using SIFT
Problem Description and Introduction
The objective is for the aibo to sort playing cards according to whether they are a face card or not. Playing cards are taped to styrofoam blocks for easy manipulation and are scatter throughout the play pen. The aibo needs to find a card, then move close enough to it to be able to take a picture of the card. The card is then identified as either a face card or rank card using SIFT. Once identified the aibo pushes it to the appropriate goal location, marked by either a yellow or orange cone. Then repeats the process until all cards have been sorted.
There are several different task involved in the project. They are broken up as follows:
Finding A Card
Card Identification using SIFT
The advantages of SIFT are that it is independent of scale, translation, rotation, and occlusion, which allows it to identify and object in a variety of different situations. For this project I trained sift on images of kings & queens of clubs & spades for face cards and two & threes of clubs & spades for rank cards. When an image is given to SIFT it compares the features in the images to the database of cards and then returns if there is a face or a rank card in the image. This information is sent back to the AIBO and used to identify the card.
ResultsPushes card to Cone and Turn Around
Full run of pushing to Cone and searching for next Card
finalProj.h - Code run on AIBO: world navigation
finalProjSIFT.h - Code run on Computer: SIFT identification
Areas for Improvement
I ran into difficultly sending the image from the AIBO to the simulator on the computer to be able to run SIFT on the image. Because of this, the current version of the project isn't able to actually send the image to the computer, although the identification of the cards works fine on its own. Further work on the project would be to get the data transfer working. Also, the project could also be applied to other objects that are of similar size, or to sort playing cards in a different manner.