mppi_controller_cuda accelere le planificateur MPPI sous ROS

Robot mobile dans un laboratoire avec visualisation de trajectoires ROS et calcul GPU
Illustration generee pour RoboActu d'un robot mobile utilisant une planification locale acceleree par GPU.

Un nouveau projet open source, mppi_controller_cuda, adapte le planificateur local MPPI de ROS à l’exécution GPU. Publié le 9 août sur Open Robotics Discourse, il vise ROS 1 comme ROS 2 et annonce des gains importants lorsque le nombre de trajectoires échantillonnées augmente.

Le projet est développé par Dat Le Doan et disponible sur GitHub. Il reprend l’approche du contrôleur MPPI de Nav2, l’un des planificateurs locaux utilisés pour guider un robot mobile à court horizon, et s’appuie sur MPPI-Generic, une bibliothèque CUDA dédiée à l’optimisation stochastique de trajectoires.

Un contrôleur local accéléré par CUDA

MPPI, pour Model Predictive Path Integral, consiste à échantillonner de nombreuses trajectoires possibles, à les évaluer selon une fonction de coût, puis à choisir la commande qui rapproche le robot du meilleur compromis. Cette méthode est utile pour la navigation dans des environnements dynamiques, mais elle peut devenir coûteuse dès que le nombre de rollouts augmente.

mppi_controller_cuda déplace cette charge de calcul vers le GPU. Dans sa présentation, l’auteur indique que le contrôleur peut être jusqu’à environ 200 fois plus rapide que la version CPU dans des configurations à grand nombre d’échantillons. Le dépôt précise que la branche ROS 2 vise Jazzy et Nav2, où le paquet s’installe comme plugin de controller_server. Une branche séparée couvre ROS 1 Noetic, avec move_base et move_base_flex.

Le README mentionne un environnement testé sous Ubuntu 24.04, ROS 2 Jazzy, CUDA 12.0 et une carte RTX 2050. La valeur par défaut de compilation cible la capacité CUDA 8.6, mais elle peut être ajustée via CMAKE_CUDA_ARCHITECTURES pour d’autres GPU.

Pourquoi cela compte pour les robots mobiles

Pour les équipes qui travaillent avec des AMR, des plateformes de recherche ou des robots de terrain, la planification locale reste une zone sensible. Elle doit tenir compte des obstacles, respecter la dynamique de la machine et produire une commande assez vite pour ne pas créer de latence dans la boucle de contrôle.

L’intérêt d’un contrôleur MPPI accéléré par GPU est donc double. Il peut permettre d’augmenter le nombre de trajectoires testées sans ralentir le cycle de décision, ou de conserver une cadence élevée sur des plateformes qui embarquent déjà un GPU pour la perception. Cela ne remplace pas les essais sur robot réel, mais cela ouvre une piste pour des contrôleurs plus ambitieux dans Nav2 et dans les piles ROS historiques.

Le projet reste jeune : le dépôt a été créé le 8 août et la licence GitHub n’est pas encore déclarée de manière standardisée. Il faudra donc vérifier la maturité du code, les paramètres par défaut, les dépendances CUDA et le comportement en environnement réel avant de l’intégrer dans une flotte de production.

Un signal pour l’outillage ROS

La publication illustre une tendance plus large : les briques de navigation robotique cherchent à exploiter le matériel déjà présent sur les robots, notamment les GPU utilisés pour la vision, la cartographie ou l’apprentissage. En rapprochant Nav2, MPPI-Generic et CUDA, mppi_controller_cuda propose une voie pragmatique pour tester cette approche dans des piles ROS existantes.

Le briefing RoboActu

L’essentiel de la robotique, une fois par semaine.

Une sélection courte des annonces, usages et robots à suivre.

Continuer sur ce sujet

Comparer les robots