Qu'est-ce qu'un CPG (Central Pattern Generator) ?
Un Central Pattern Generator (CPG) est un réseau neuronal capable de produire des motifs rythmiques sans nécessiter d'entrées sensorielles ou de commandes centrales.
Dans le contexte de la robotique et de la génération de marche, les CPGs sont utilisés pour créer des mouvements rythmiques coordonnés comme la marche, la nage ou le vol chez les animaux, et sont reproduits artificiellement pour contrôler les robots.
Le savais-tu ?
Les CPGs biologiques ont été découverts en étudiant comment des animaux, comme les salamandres ou les cafards, pouvaient continuer à marcher même après que leur moelle épinière ait été séparée de leur cerveau.
Principe des CPGs pour la génération de marche
Les CPGs artificiels pour la marche sont typiquement implémentés comme des systèmes d'oscillateurs couplés, souvent modélisés par des équations différentielles non-linéaires.
$$\dot{x}_i = \alpha x_i - \omega y_i + \sum_{j=1}^N w_{ij} f(x_j, y_j)$$
$$\dot{y}_i = \omega x_i + \alpha y_i + \sum_{j=1}^N w_{ij} f(x_j, y_j)$$
Chaque oscillateur dans le réseau CPG correspond typiquement à un degré de liberté (par exemple une articulation de la jambe). Les connexions entre oscillateurs déterminent la coordination entre les membres.
Application des CPGs en robotique mobile
Dans un projet de robotique, un CPG peut être utilisé pour générer les signaux de commande des actionneurs qui contrôlent les mouvements des jambes du robot. Les paramètres du CPG peuvent être ajustés pour différentes allures (marche lente, course, etc.).
class CPGOscillator:
def __init__(self, alpha, omega, coupling_weights):
self.alpha = alpha # paramètre de stabilité
self.omega = omega # fréquence
self.weights = coupling_weights # poids des connexions
def update(self, x, y, neighbors):
dx = self.alpha * x - self.omega * y
dy = self.omega * x + self.alpha * y
# Couplage avec les oscillateurs voisins
for j, (xj, yj) in enumerate(neighbors):
dx += self.weights[j] * (xj - x)
dy += self.weights[j] * (yj - y)
return dx, dy
Implémentation pour robot bipède
Architecture de base
Un CPG pour bipède utilise typiquement :
- 6 oscillateurs (hanche/genou/cheville × 2 jambes)
- Couplage alterné entre jambes (déphasage 180°)
- Couplage synchronisé pour les articulations d'une même jambe
- Le CPG génère des signaux rythmiques
- Transformation en positions articulaires
- Correction par feedback sensoriel
Références
- Ijspeert, A. J. (2008). Central pattern generators for locomotion control in animals and robots: A review. Neural Networks, 21(4), 642-653.
- Grillner, S. (2003). The motor infrastructure: From ion channels to neuronal networks. Nature Reviews Neuroscience, 4(7), 573-586.
- Kimura, H., Fukuoka, Y., & Cohen, A. H. (2007). Adaptive dynamic walking of a quadruped robot on natural ground based on biological concepts. The International Journal of Robotics Research, 26(5), 475-490.
- Righetti, L., & Ijspeert, A. J. (2008). Pattern generators with sensory feedback for the control of quadruped locomotion. IEEE International Conference on Robotics and Automation.