Tous les projets

Robotique en essaim

Firmware pour robots en essaim

Firmware embarqué complet en C pour robots mobiles autonomes en essaim, avec algorithmes de contrôle avancés et coordination multi-robots.

Firmware pour robots en essaim

Présentation

Le firmware Swarm Robot est un système embarqué complet écrit en C pour des robots mobiles autonomes fonctionnant en essaim. Conçu pour des microcontrôleurs AVR 8 bits, il fournit une plateforme robotique complète : algorithmes de contrôle avancés, fusion de capteurs et coordination multi-robots. Développé dans le cadre d'un projet de fin d'études en mécatronique, c'est un système de contrôle robotique complet, optimisé pour des ressources très limitées.

Architecture technique

Une conception modulaire

Le firmware repose sur une architecture très modulaire aux composants clairement séparés, facile à maintenir, à tester et à étendre. Chaque sous-système est un module indépendant aux interfaces bien définies, ce qui favorise la réutilisation du code et la fiabilité.

Composants principaux

Couche d'abstraction matérielle

Architecture de contrôle

Fonctions de contrôle avancées

Fusion de capteurs et localisation

L'odométrie combine plusieurs sources de données :

// Potentiometer-based angular velocity estimation with median filtering
void _pmB_current_calc(void) {
    if(_sample_counter > __PM_SAMPLE_COUNT) {
        _sample_counter = 0;
        _insertion_sort(reads, __PM_SAMPLE_COUNT);
        _pmB_current = reads[(__PM_SAMPLE_COUNT >> 1)];
        _omega_pmB = __PM_SLOPE * (float)(_pmB_current - _pmB_prev);
    }
    _pmB_prev = _pmB_current;
}

Filtrage robuste

Contrôle en temps réel

Le système suit une architecture multi-fréquence :

Intégration à la plateforme robotique

Cinématique différentielle

Le module de cinématique fournit les modèles mathématiques complets des robots différentiels :

struct point {
    float x;  ///< X coordinate in world frame
    float y;  ///< Y coordinate in world frame
};

struct _theta {
    float theta;  ///< Robot orientation in radians
};

// Robot geometric parameters
#define L 0.06    // Wheelbase (meters)
#define r 0.02    // Wheel radius (meters)
#define R_over_L 0.333  // Turning ratio

Intégration multi-capteurs

Communication et coordination de l'essaim

Protocole série

Le module USART assure une communication robuste avec les systèmes externes :

Formatage des données et télémétrie

Des fonctions de formatage dédiées rendent la transmission efficace :

char * _float_to_printable(float input) {
    int16_t a = input;
    uint16_t b = (float)((input - (float)a) * 10000.0);
    sprintf(out, "%d,%u", a, b);
    return out;
}

Comportements d'essaim

Développement et déploiement

Chaîne de compilation

Matériel requis

Performances temps réel

Le firmware est optimisé pour du matériel très contraint :

Applications de recherche

Recherche en robotique en essaim

Ce firmware sert de base à plusieurs thèmes de recherche :

Plateforme pédagogique

Sa conception modulaire et sa documentation en font un support idéal pour :

Performances

Système de contrôle

Communication

Évolutions prévues

Extensions

Passage à l'échelle

Ce firmware est une plateforme robotique embarquée complète : il montre une mise en œuvre avancée de l'automatique sur du matériel contraint, tout en restant assez flexible pour la recherche comme pour l'enseignement.