Implementation of ROS libraries on STM32F4
June 17, 2012 Leave a comment
Les travaux sur le STM32F4 progressent !
Aprés avoir fait fonctionner un USART (les autres fonctionnent de la même manière mais je n’en ai pas besoin pour l’instant), ainsi que 2 decodeurs de signaux en quadrature (sur 32bits), je me suis attaqué aux interruptions.
Tout d’abord, une interruption timer pour pouvoir calculer l’odométrie régulierement et faire l’asservissement.
Ensuite, une des interruptions de l’USART pour la reception des datas. Lorsqu’une data arrive sur l’uart, une interruption est déclenchée. Je mets alors la data dans un buffer circulaire pour pouvoir l’utiliser plus tard. Ceci permet de ne pas avoir de “lecture bloquante”.
Une fois tout ceci fonctionnel, je me suis attaqué à implémenter les libraries ROS sur le STM32F4.
Le code est totalement en C++, et est donc compilable sur l’architecture.
Il faut juste re implémenter les quelques fonctions de communication. J’ai donc utilisé l’USART2 pour communiquer les messages spécifiques avec le pc, et maintenant tout ceci fonctionne.
Voici une démonstration ou le STM32 calcul la position du robot avec une entrée de codeur, et envoie un message ROS au pc, qui l’affiche :
L’implémentation sur la carte avance :
- Faire marcher un UART / DONE
- Faire fonctionner 2 entrée de codeur en quadrature / DONE
- Faire fonctionner une interruption de timer / DONE
- Implémenter la librairie de communication avec ROS / DONE
- Utiliser les interruptions de l’UART / STARTED
- Implémenter l’asservissement / STARTED
- Faire fonctionner une interruption externe / TODO
- Faire fonctionner l’USB en mode port série / TODO