ELECINF344/381

Partie interactive du site pédagogique ELECINF344/ELECINF381 de Télécom ParisTech (occurrence 2011).

Catégories

[CASPER] : text-to-speech on the beagleboard

Here is a little summary of what has been done today, regarding the text-to-speech on the beagleboard.

Audio with alsa on the beagleboard

First, I would like to explain the step we followed to get the audio output to work on the beagleboard without damaging the TPS6595, which manages the audio, but also the power supply (now I am sure that you understand the reason why we should not burn this one down).

We have on our SD card a bootstrapped version of the ubuntu linux distribution, with alsa installed.

To get alsa to work without being the superuser, you have to add the normal user to the audio group, and reboot the beagleboard.

Then, open the alsamixer program.

Here is was you SHOULD NOT do, despite it is being advised on some forums : enable each and every device in alsamixer.
This will cause the TPS6595 chip to overheat, and may damage it.

 

What you should do is enable only what is necessary :

  • Increase the volume of the DAC2 analog; DAC2 digital coarse and DAC2 digital fine.
  • Increase the volume of the headset
  • Enable headsetL2 and headsetR2

You should now have a working audio output.

 

Text-to-speech

In order for our whole application to work properly on the board, we decided not to use pulseaudio (which requires up to 40% of the CPU on the board). We decided to implement our own interface for the audio output, which would handle all the write requests from internal threads such as the text-to-speech engine’s thread. This interface would store the corresponding samples, pre-process them in order to fit alsa’s interleaved pcm format, and play them on the audio output.

We were able to test successfully this interface today, by synthesizing speech with SVOX pico on the beagleboard, and playing it simultaneously on the audio output.

The whole process requires 30% of the cpu during a short period (synthesis/samples post) and then 0/0.7% of the CPU during the rest of the the process, which is good news compared to the 40% CPU minimum required during the whole process in our previous experiments.

The next step will be to port the CMU Sphinx recognition helloworld we designed to the beagleboard.

Copterix : ubuntu sur gumstix && communication STM32/Gumstix

Hier et aujourd’hui, j’ai -comme Casper- fait passer Ubuntu d’ext3 à nilfs2 pour des raisons de performances et pour augmenter la durée de vie de la microSD.

Les noyaux fournis par Gumstix ne le supportant pas, j’ai recompilé le kernel (patché pour supporter la Camera), généré un uInitrd et reconfiguré le bootloader.

En parallèle, j’ai terminé un script faisant un debootstrap adapté à nos besoins, avec les paquets et les fichiers de configurations idoines. Il permet ensuite de formater correctement la microSD et d’y installer notre ubuntu fraichement créé.

 

Loïc continue de travailler sur la communication Gumstix/STM32. Pour des raisons de vitesse de transfert (avoir au moins 1000 paquets/s, un paquet contenant l’ensemble des données des capteurs), il a poussé l’UART à 1 Mhz et est en train de faire des testbenchs pour mesurer le débit utile.

[CASPER] Dernières avancées…

Vendredi, nous avons avancé dans le projet sur trois fronts :

- Alain a commencé la modélisation physique de Casper. Le but étant de définir les contraintes pour le contrôle des moteurs. Après quelques expérimentations, nous avons déterminé que la meilleure solution à notre problème est d’utiliser des servomoteurs reliés à des bras mécaniques. D’après nos calculs, nous avons besoin d’un couple minimum de 35 Ncm pour un bras de 7 cm.

- Thibault a quant à lui travaillé sur le PCB et rédigera un billet détaillé à ce propos.

- Pour ma part, j’ai commencé à travailler sur la Beagleboard. Nous avons préparé une carte SD qui contient une partition de boot en fat32 et une partition contenant linux (en ext2). Pour l’instant, la carte boote depuis la carte SD sur Ubuntu (Maverick) 10.10. Nous communiquons par le port série avec la Beagleboard, avons activé la connexion filaire et sommes en train d’installer divers packages.

Copterix : vision et autres avancements

OS:

On a laissé tomber angström pour ubuntu et on l’a installé sur la carte.

Tracking:

La caméra a la mauvaise habitude de rendre des images en « fish eye », j’ai donc utilisé OpenCV pour arranger tout ça, et voici les résultats:

À gauche, l’image telle qu’elle est reçue par la caméra et à droite après application d’OpenCV.

On a aussi compilé mon code qui renvoie le vecteur déplacement détecté sur la Gumstix et on l’a testé, mais on tourne à une image par seconde…
Après test via Cheese, il s’avère que la résolution de la caméra est trop élevée, ce qui explique son si faible débit, je m’apprête donc à y remédier.

Physique:

On a continué à réfléchir, on a vu Wahba et Kalman. Samuel veut coder le FQA, qui résout le problème de Wahba. On aura un post sur la physique demain plus complet.