OpenAI Gym + ROS + Gazebo: entraînez un robot autonome à la maison. Partie 1

Au cours des dernières années, nous avons assisté à l'introduction de technologies d'intelligence artificielle dans notre vie quotidienne - des aspirateurs robotiques aux drones sans pilote. Tous, contrôlés par l'intelligence artificielle, sont déjà monnaie courante pour nous. Mais malgré cela, le processus de développement, de la conception à la mise en œuvre, prend des années et n'est pas bon marché. De plus, les algorithmes d'apprentissage automatique nécessitent des données volumineuses et rien ne garantit que tout fonctionnera à long terme.

Tôt ou tard, chaque développeur arrive à la conclusion qu'avant de créer un vrai robot, vous devez tester le concept dans une simulation, déboguer tous les systèmes et, à la fin, comprendre si la voie de développement a été choisie.

Le Dr Andrew Howard avait des idées similaires quand, avec son étudiant Nathon Koenig, il a commencé en 2002 le développement d'un simulateur de gazebo 3D à l'Université de Californie du Sud. Le concept d'un simulateur de haute précision est né de la nécessité de tester des robots dans diverses conditions extérieures difficiles. Dans les premières étapes du développement, cette approche permet d'économiser du temps et de l'argent sur l'achat de l'équipement nécessaire.

Dans cette série d'articles, je voudrais partager mon expérience dans la simulation et la formation d'un véhicule sans pilote avec une seule caméra ordinaire comme capteur.



Bonjour à tous. Je suis titulaire d'une maîtrise ès sciences (informatique, MS) en informatique appliquée à l'Université des sciences appliquées de Berlin (HTW-Berlin).

Dans le cadre de mon cours, je travaille sur les méthodes de formation de robots autonomes dans un environnement simulé à l'aide de ROS [1], Gazebo [2] et OpenAI Gym [3]. Ce cours est divisé en deux parties.

La première partie est consacrée au développement d'un framework qui simplifierait le test d'algorithmes d'apprentissage par renforcement (formation avec renforcement) sur différents robots autonomes à l'intérieur de la simulation Gazebo.

Dans la deuxième partie, je me concentrerai sur la mise en œuvre de l'algorithme de conduite autonome. Je vais y travailler pour le prochain semestre, donc cet article et les prochains se concentreront principalement sur la mise en œuvre de l'environnement OpenAI Gym pour Gazebo. L'apprentissage par renforcement (RL) lui-même sera affecté de manière superficielle.

Le code de projet complet peut être trouvé ici .

Configuration requise


  • Ubuntu 18.04 ou Windows WSL Ubuntu 18.04
  • Python 2.7
  • pip
  • CPU ou GPU Tenserflow

Nous utiliserons la version ROS de Melodic. Cette version a plusieurs limitations et la plus importante d'entre elles est Ubuntu 18 (il est également possible d'installer ROS sur Windows WSL et sur Ubuntu Headless, mais plus à ce sujet une autre fois). De plus, ROS ne prend toujours pas en charge Python 3.

Première partie: Introduction


Dans cette partie pilote, je parlerai brièvement des technologies qui seront utilisées pour créer l'environnement. Je décrirai également le processus d'installation et, à la fin, nous lancerons une simulation à part entière, qui peut être contrôlée via l'API Gym.

ROS: «ne réinventez pas la roue»


Robot Operating System (ROS) est un cadre de programmation de robots. ROS est une «colle logicielle» qui permet aux développeurs de se concentrer sur leur tâche spécifique. Bien que ROS ne soit pas un système d'exploitation, il fournit des services tels que l'abstraction matérielle, la gestion des appareils de bas niveau, la mise en œuvre de fonctions fréquemment utilisées, la transmission de messages entre les processus et la gestion des packages (plugins).

ROS est conçu comme un système à couplage lâche dans lequel un processus appelé nœud doit être responsable d'une tâche. Les nœuds communiquent entre eux à l'aide de messages passant par des canaux logiques appelés sujets. Chaque nœud peut envoyer ou recevoir des données d'un autre nœud à l'aide du modèle de publication - abonnement

Pour ROS, des pilotes ont déjà été implémentés qui permettent de travailler de manière unique avec de nombreux appareils, tels que contrôleurs, GPS, caméras, télémètres laser, etc.

Et donc, installez ROS Melodic ( instructions complètes )

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt update sudo apt install ros-melodic-desktop-full sudo rosdep init rosdep update echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source /opt/ros/melodic/setup.bash 

Pour une raison quelconque, le package d'installation complet n'inclut pas certains packages nécessaires. Installez-les séparément:

 sudo apt install ros-melodic-ackermann-msgs sudo apt install ros-melodic-effort-controllers sudo apt install ros-melodic-joy sudo apt install ros-melodic-tf2-sensor-msgs 

Nous ne nous attarderons pas sur eux en détail. Ils sont nécessaires pour contrôler notre robot, ce qui sera discuté plus tard.

Gazebo


Gazebo est un simulateur 3D dynamique open source développé par l' Open Source Robotic Foundation et interagit assez étroitement avec ROS. Gazebo vous permet de simuler avec précision et efficacité des robots dans des conditions intérieures et extérieures difficiles.

Le simulateur se compose du serveur gzserver , qui est impliqué dans le calcul de la physique, les collisions et la simulation de capteurs. Les clients peuvent se connecter au serveur, par exemple gzclient (pour le bureau) et gzweb (pour le navigateur). Ce sont eux qui rendent les modèles.

Tout cela permet de tester des systèmes robotiques complexes dans un espace virtuel beaucoup plus rapidement et sans risque d'endommager de vrais robots coûteux.

Gazebo est inclus dans le package d'installation complet de ROS, vous n'avez donc pas besoin d'installer autre chose. Pour la configuration sans tête, gzweb est requis. Je parlerai de lui dans les parties suivantes.

OpenAI Gym


OpenAI est une société de recherche en intelligence artificielle à but non lucratif co-fondée par Ilon Max.
OpenAI Gym est une bibliothèque Python qui fournit une API pour développer et comparer des algorithmes RL avec un grand nombre d'environnements virtuels et une API commune. Gym possède déjà de nombreux environnements prêts à l'emploi, y compris pour les jeux Atari.

openai_ros


Mon projet est basé sur le package openai_ros . Ce package implémente l'architecture proposée par l'équipe The Construct . Les gars de Construct ont développé un cadre commun qui implémente l'API nécessaire pour gérer la simulation et décrit une API pour intégrer Gazebo dans Gym, nécessitant une implémentation minimale. La structure proposée se compose de trois couches logiques (vous pouvez réellement utiliser n'importe quel nombre), la plus basse d'entre elles est une autre «colle» qui relie l'API Gym à Gazebo. Plus d'informations à ce sujet dans la partie suivante, lorsque nous analyserons le code.

Tout mettre ensemble


Nous devons d'abord créer un répertoire de travail pour catkin. catkin est un système d'automatisation de construction comme CMake, qui est inclus par défaut dans le package d'installation de ROS:

 cd ~ mkdir catkin_ws cd catkin_ws/ mkdir src cd src/ 

et clonez les packages ROS nécessaires.

Voiture de course Mit


Nous avons besoin d'un modèle de robot développé par le MIT avec tous les capteurs.

 git clone https://github.com/mit-racecar/racecar.git git clone https://github.com/mit-racecar/racecar-simulator.git 

openai_ros


 git clone https://bitbucket.org/theconstructcore/openai_ros.git 

neuroracer


Eh bien, en fait, le projet lui-même

 git clone https://github.com/karray/neuroracer.git 

Ensuite, vous devez compiler tous ces packages

 cd ~/catkin_ws catkin_make 

Vous devez également installer toutes les bibliothèques python nécessaires.

 pip install -U numpy tensorflow gym keras 

Exécution de la simulation


Pour exécuter n'importe quel package ROS, nous devons d'abord charger dans la session de terminal actuelle tous les packages ROS que nous avons compilés:

 source ~/catkin_ws/devel/setup.bash 

Nous pouvons maintenant exécuter la simulation du robot Racecar:

 roslaunch racecar_gazebo racecar_tunnel.launch 

Cette commande lancera le serveur maître ROS, le serveur Gazebo avec son interface utilisateur (sur le bureau), chargera le robot et le monde pour lui.

Capture d'écran:

En-tête de spoiler


Et la même chose dans le deuxième terminal pour notre algorithme RL:

 source ~/catkin_ws/devel/setup.bash roslaunch neuroracer_gym_rl qlearning.launch 

Cette équipe lancera notre package neuroracer_gym_rl , qui implémente un algorithme Q-Learning simple dans notre environnement Gym. Nous allons l'analyser dans la prochaine partie.

Ceux qui ne peuvent pas attendre peuvent trouver le code source ici . Pour l'avenir, je dirai qu'après plusieurs jours de formation sur un serveur avec une carte mémoire GeForce GTX 1080 Ti 11 Go, cet algorithme simple n'a vraiment rien appris. Dans la partie suivante, je vais énumérer les raisons possibles, mais vous pouvez maintenant expérimenter votre implémentation.

Conclusion


Et donc, nous avons une simulation entièrement fonctionnelle d'une voiture autonome et un modèle d'algorithme RL prêt à l'emploi. Dans la partie suivante, nous analyserons plus en détail openai_ros et discuterons des capteurs installés sur le robot, puis je montrerai comment implémenter mes algorithmes et quels problèmes peuvent survenir pendant la formation.

PS: C'est ma première expérience d'écriture d'un article. Par conséquent, n'hésitez pas à écrire si vous trouvez des erreurs ou si vous avez des idées ou des critiques constructives. J'essaierai d'en tenir compte dans les parties suivantes.

Les références


[1] (M. Quigley, K. Conley, B. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler et AY Ng. Ros: un système d'exploitation de robot open source. Dans un atelier de l'ICRA sur logiciel open source, volume 3, page 5. Kobe, Japon, 2009.

[2] NP Koenig et A. Howard. Concevez et utilisez des paradigmes pour gazebo, un simulateur multi-robots open source. Dans IROS, volume 4, pages 2149–2154 . Citeseer, 2004.

[3] LPJSJSJTWZ Greg Brockman, Vicki Cheung. Openai gym, 2016, arXiv: 1606.01540

Source: https://habr.com/ru/post/fr441218/


All Articles