We posted a new video showing our group performing with casper :
- Video tracking
- Mail fetching
- Vocal commands
We now have our face tracking algorithm running on BeagleBoard. Since a tracking only based on face detection was to slow and not very intuitive (you always have to look the camera), we decided to use a blob tracking algorithm, which we initialize with the face detection algorithm.
First, Casper looks for a face. When it finds one, it learns the associated color histogram. After what it tracks the histogram (with the OpenCV Camshift function), for a few tens of frames. If it does not find a face again during the blob tracking, it stops at the end of the frames. Otherwise, it keeps tracking the « blob » face.
We adopt a multithread program : a thread looks for a face every second, and a thread is responsible for blob tracking when a face is found. The first thread is used to set a counter which is decremented by the second thread.
We made some improvements in our mail fetcher. Now, it’s able to fetch mails from most mail server ( pop3, secured or not). It can fetch the last mail received and store its content and subject into a file, so it can be read by our text-to-speach engine.
Moreover, we had the mail fetcher work in the Beagleboard.
As a reminder, we are using the C++ library Vmime 0.9.1.
We started to work on the first web service we would like to have casper use : MAILS.
We choose to use the C++ library Vmime which support many protocols such as pop or imap. It also has functions to parse the retrieved mails and get only the parts interesting to us.
We wrote a program able to connect in POP3 to the pop3.free.fr mail server (which allows unsecured connections). Giving a login/password pair this program is able to print a mail (the first of the list for now).
We are now working on organizing and selecting the right data from the mail server.
Now you can visit our website ! For now, presentation of the project and videos are available as well as an awesome logo made by Thibault !
During these past weeks, we implemented several features in separate demonstration programs.
The time as now come to merge these features in a common architecture. For this purpose we revised the API we previously defined, in order to better fit our prototype and libraries.
Then we drew a schematic representation of casper’s software architecture, which should have a LUA script interpreter as the central element. This script interpreter will communicate with the other libraries by posting/retrieving data in a producer/consumer scheme, an exception being the configuration transactions.
The new version 0.2 of the API can be downloaded here: Casper API.
The software architecture is available in pdf file format here: architecture.
We progressed in different fields today.
Alain designed a small extension PCB for the beagleboard. This board will include the necessary elements for audio amplification in and out, and for level shifting between the beagleboard’s output and the motors’ input.
At the same time, we worked with Thomas to build a first tracking system demo, by placing the webcam on top of casper’s body, connecting it to the beagleboard and then connecting the serial link to drive the motors. This demo gave some first results tonight, and will be kept under improvement.
Finally, we managed to create a custom language model and dictionary, which combined with the pocketsphinx engine’s data now allow the beagleboard to understand french vocal commands.
Today, we have been looking for the simplest way of giving a http control interface to our project. We found that the C library Microhttpd was matching our needs.
It’s a library which will allow us to create a very simple http server on the BeagleBoard. This way a user will be able to get registered into Casper’s « Database ». Eventually, through this interface, he will be able to give his name, a new Lua script or his various logins/passwords to access his mails and so on…
Besides, we made some changes in Casper’s prototype. We made a « box » in wood which contains the motors and supports Casper itself, so it’s easier to move it.
This week-end we added a new video showing how we are able to control Casper’s direction and bending remotely. Movements are smoother and have a good response time.
Now, that we got a UART connexion working on the BeagleBoard we will be soon trying to use it to control Casper.