Open Source Robotics

Une collection organisée de projets, outils et logiciels robotiques open source de haute qualité.

OpEn (Optimization Engine)

Solveur d'optimisation non convexe embarqué en Rust pour le MPC temps réel sur robots

Licence

MIT, Apache 2.0

Aperçu

OpEn (Optimization Engine) est un framework d'optimisation non convexe rapide et sûre en mémoire pour systèmes embarqués, construit autour de l'algorithme PANOC de type Newton à moyennage proximal, avec des méthodes de lagrangien augmenté et de pénalité pour les contraintes. Les problèmes sont décrits en Python ou MATLAB avec les symboliques CasADi ; OpEn génère un solveur Rust sans dépendances pour la cible — l'ordinateur de bord d'un robot, une carte de classe MCU ou un nœud ROS — permettant du contrôle prédictif (MPC) temps réel et de l'optimisation de trajectoires sans collision.

Le flux de travail repose sur la génération de code : vous définissez variables de décision, un coût (éventuellement non convexe) et des contraintes dans opengen, le front-end Python/MATLAB d'OpEn ; il émet un crate Rust autonome implémentant PANOC — une méthode à recherche linéaire combinant gradients proximaux et directions L-BFGS qui converge vite sans hessiennes — enveloppé de boucles externes ALM/pénalité pour les contraintes générales. Le solveur généré n'a aucune surprise d'allocation sur le tas, aucune bibliothèque externe et une mémoire bornée de façon prouvable : exactement ce qu'exige un contrôle embarqué visant la certification. Les interfaces incluent le Rust direct, des bindings C/C++, un mode serveur TCP, des bindings Python et un générateur de paquets ROS. Les usages robotiques typiques sont le MPC non linéaire à des centaines de hertz pour l'évitement d'obstacles (ses exemples de navigation sont devenus une référence pour le MPC sans collision d'AGV/UAV), l'optimisation de trajectoires et l'estimation à horizon glissant sur plateformes à ressources limitées. OpEn est développé académiquement (Sopasakis et al., article IFAC 2020) et sous double licence MIT/Apache-2.0.

Pourquoi c'est important

OpEn a rendu le MPC non convexe temps réel praticable sur de petits robots : un solveur avec les garanties mémoire de Rust, sans dépendances et à mémoire bornée, qui tourne sur cartes embarquées — la pièce dont vous avez besoin quand un robot doit re-résoudre un problème d'évitement d'obstacles toutes les quelques millisecondes à bord.

Le problème résolu

Les solveurs NLP généralistes (de classe IPOPT) sont trop lents et lourds pour le MPC embarqué à haute cadence, et les solveurs codés à la main sont sources d'erreurs. OpEn génère un solveur rapide, sans dépendances et sûr en mémoire pour votre problème spécifique à partir de quelques lignes de CasADi.

Points clés

  • Algorithme PANOC : gradient proximal + L-BFGS pour des résolutions non convexes rapides sans hessiennes
  • Génère des solveurs Rust autonomes, sans dépendances, à mémoire bornée
  • Front-ends Python (opengen) et MATLAB avec symboliques CasADi
  • Usage direct en Rust/C/C++, mode serveur TCP et génération de paquets ROS
  • Choix de référence pour le MPC embarqué sans collision sur AGV et UAV ; double licence MIT/Apache-2.0

Pour qui

  • Ingénieurs de contrôle déployant du MPC embarqué
  • Chercheurs en robotique en optimisation de trajectoires
  • Développeurs embarqués ayant besoin de solveurs compatibles certification
  • Équipes d'autonomie AGV/UAV

Limites

  • PANOC, basé sur le premier ordre, peut rester derrière les méthodes de points intérieurs sur les problèmes mal conditionnés
  • La non-convexité implique des solutions locales (pas globales) — l'initialisation compte
  • La gestion des contraintes via ALM/pénalité exige un réglage des tolérances pour les contraintes d'égalité strictes

Ce site nécessite JavaScript. Veuillez activer JavaScript pour explorer nos projets de robotique open source.