Vous voulez commencer à apprendre la robotique par la programmation, mais vous ne savez pas par où commencer ?
La robotique est un domaine immense, il y a tellement de choses à faire et à apprendre. Il peut être décourageant de voir tout ce que vous pouvez faire, mais de commencer seulement par programmer une LED pour clignoter.
Nous avons de bonnes nouvelles pour vous : ROS est certainement la voie que vous recherchez. Dans cet article, nous verrons ce qu’est ROS, ce que vous pouvez apprendre avec, et nous vous donnerons quelques lignes directrices sur la manière de commencer à l’apprendre et à créer des applications robotiques intéressantes !
Qu’est-ce que ROS ?
ROS (Robot Operating System) est un cadre pour écrire des logiciels robotiques. Ce projet a été lancé en 2007 par Willow Garage, pour fournir aux roboticiens un ensemble standard de configurations et d’outils, afin qu’ils puissent écrire de meilleurs logiciels plus rapidement.
ROS alimente aujourd’hui de nombreux types de robots, tels que les drones, les voitures autonomes, les robots humanoïdes, les bras robotiques, et bien d’autres encore… Jetez un œil à Niryo One pour avoir un exemple de bras robotique à 6 axes alimenté par ROS.
Voici un exemple de contrôle du robot, avec l’aide de ROS. ROS facilite l’envoi de commandes à partir d’une interface Web vers les moteurs (avec quelques étapes entre eux).
Pour utiliser ROS, vous aurez besoin d’un système d’exploitation Ubuntu sur votre ordinateur (d’autres systèmes d’exploitation sont pris en charge, mais il est préférable de commencer avec Ubuntu). Nous vous recommandons d’utiliser Ubuntu 16.04 avec ROS Kinetic (version 2016), car c’est, pour l’instant, la version la plus développée et entretenue.
Pourquoi apprendre la robotique avec ROS ?
La robotique est difficile à développer, et les robots sont souvent des systèmes très complexes qui nécessitent une expertise dans de nombreux domaines. Le problème de la robotique est que les gens réinventent sans cesse la roue. Supposons que vous ayez un an pour construire un robot à partir de zéro (partie programmation). Vous passerez presque la moitié du temps à créer un système de communication et de calcul de base, et à la fin de votre projet, vous remarquerez que vous n’êtes pas allé plus loin que ce que tout le monde fait.
ROS est là pour vous fournir un ensemble d’outils, et un peu de « plomberie » pour démarrer votre application à partir d’un niveau plus élevé. Vous n’avez pas besoin de vous soucier de la manière dont les différentes parties vont communiquer. De plus, vous obtiendrez gratuitement des outils intégrés, tels que la planification de mouvement, la reconnaissance d’objets, la navigation 2D, la cartographie de pièces en 3D, etc. De cette manière, vous n’avez pas besoin de refaire ce qui a été fait avant par des centaines de développeurs, et vous pouvez vous concentrer sur le cœur de votre projet.
Ce que vous apprendrez avec ROS
La robotique concerne la mécanique, l’électronique et l’informatique. Avec ROS, vous apprendrez surtout le dernier. Vous en apprendrez sur :
- La programmation (C++ / Python) pour développer votre application.
- L’administration système et réseau, pour installer et maintenir ROS sur différentes versions d’OS, manipuler des packages sources/binaires, communiquer avec des périphériques externes en utilisant différents protocoles (HTTP, WebSocket, I2C, SPI…).
- Des concepts de robotique, tels que la cinématique inverse, la localisation, la cartographie 3D, l’intelligence artificielle…
En utilisant ROS, vous aurez une base de départ solide pour votre application robotique. Avec cela, et le nombre d’outils disponibles, vous serez capable de :
- Communiquer entre tous vos capteurs, contrôleurs, actionneurs, interfaces utilisateurs…
- Gérer des systèmes robotiques complexes et de grande taille. Il sera plus facile d’obtenir une image globale d’une énorme application robotique.
- Étendez vos connaissances en robotique. ROS alimente de nombreux types de robots. Même si vous programmez un drone, vous apprendrez des choses utiles qui pourront s’appliquer plus tard à un bras robotique, par exemple.
Comment apprendre la robotique avec ROS – Les bases
La première étape consiste à apprendre les bases de ROS. C’est une partie assez difficile, et vous ne saurez pas tout en un jour. Mais continuez à vous motiver, et après un certain temps, vous ne regretterez pas le temps que vous avez passé ! Nous vous donnons ici quelques ressources utiles qui vous aideront certainement dans votre parcours d’apprentissage :
- Regardez ROSCON 2012 sur YouTube. ROSCON est l’endroit où les développeurs, les mainteneurs et les utilisateurs se rencontrent chaque année pour discuter des progrès passés et du chemin à parcourir. Cette série de vidéos vous aidera à comprendre certains concepts fondamentaux et vous donnera des tonnes d’idées d’applications.
- Mettez un signet sur le wiki ROS, où vous trouverez de nombreux tutoriels pour les débutants. Ces tutoriels vous apprendront à mettre en place une application ROS de base tout en utilisant les concepts de communication fondamentaux.
- Si vous ne pouvez pas attendre de voir des projets réels et puissants fonctionner dans la vraie vie, consultez les robots existants alimentés par ROS avec un code source ouvert, disponibles pour que vous puissiez apprendre.
Tout d’abord, vous devrez comprendre les concepts de ROS : comment fonctionnent les sujets, les services et les actions (vous pouvez garder les actions pour plus tard si vous vous sentez dépassé). Il est important de comprendre les concepts de communication dans ROS dès le début, afin que vous puissiez commencer à penser à l’architecture de votre projet. Une fois que vous aurez compris comment les nœuds communiquent entre eux, vous pourrez aller plus loin.
Ensuite, nous vous encourageons fortement à trouver un projet de robotique, et à voir comment vous pouvez utiliser ROS pour le renforcer. Avoir un projet personnel vous permettra de rester motivé et de progresser plus rapidement.
Comment apprendre la robotique avec ROS – Après les bases
Il est temps pour vous de faire un travail plus sérieux, avec des packages plus globaux et plus utiles ! La façon dont vous apprenez maintenant dépendra principalement du type de robot que vous voulez programmer. Voici quelques packages et ressources que vous pourriez consulter :
- URDF : une représentation XML de votre robot. Avec cela, vous pouvez facilement avoir un modèle global de votre robot à l’intérieur de votre système ROS et permettre à d’autres paquets de l’utiliser.
- RVIZ : un outil de simulation qui utilisera le format URDF de votre robot pour montrer une visualisation 3D.
- Moveit : un cadre de planification de mouvement complet. Moveit utilisera certaines commandes que vous lui donnerez avec le fichier URDF et calculera une trajectoire complète pour votre robot.
- ROS Control : un ensemble de contrôleurs + une interface pour votre matériel, et vous pouvez aussi le brancher sur Moveit !
- Rosbridge : un moyen de communiquer entre un système ROS et un système non-ROS, en utilisant le protocole WebSocket.
- Messages IMU ROS, pour interfacer vos données IMU (Inertial Measurement Unit) avec un système ROS.
- Gazebo : un outil de simulation complet, incluant les contraintes physiques et l’environnement. Vous pouvez cartographier une pièce avec un drone sur Gazebo, et la reproduire exactement de la même manière après dans la vie réelle !
Eh bien, nous pourrions écrire une série de livres entière sur ces parties. Vous devez juste savoir que de nombreux packages sont en cours de développement pour de nombreuses applications robotiques différentes. Lorsque vous devez développer une nouvelle partie, vérifiez d’abord si quelqu’un a déjà fait un travail dessus ! Cela vous fera gagner du temps et vous permettra de progresser plus efficacement.
ROS et la communauté – Vous n’êtes pas seul !
Ce qui est formidable, lorsque vous apprenez quelque chose, c’est de partager votre progression avec d’autres personnes et d’obtenir des réponses à partir de l’expérience des autres.
ROS a une communauté immense et croissante. En apprenant la robotique avec ROS, nous vous garantissons que vous ne serez pas seul. Voici où vous pouvez trouver de l’aide et rencontrer de nouveaux passionnés de robotique :
- ROS answers, qui est le « stack overflow » de ROS. De nombreuses questions et réponses existantes sont très utiles et vous aideront à comprendre certains concepts et à résoudre vos problèmes. Vous pouvez également poser toutes les questions que vous avez.
- Les dépôts ROS GitHub. Pour presque chaque package, vous pouvez trouver le code en ligne. Si vous avez un problème et que vous pensez que cela est lié au code du paquet, vous pouvez facilement ouvrir un problème et entamer une discussion avec les mainteneurs du paquet. Vous pouvez également contribuer à l’ajout de nouvelles fonctionnalités ! De cette façon, vous pouvez aider d’autres personnes en partageant votre travail et vos progrès.
- La liste de diffusion ROS. Nous vous conseillons de vous y inscrire, vous recevrez des nouvelles sur tous les projets robotiques, les versions, les questions des utilisateurs… Un excellent moyen de vous tenir au courant du développement et des nouvelles fonctionnalités/applications de ROS.
Nous avons donné ici un aperçu de ce que vous pouvez faire pour apprendre la robotique avec ROS.
ROS vous permettra d’arrêter de toujours réinventer la roue et de commencer à créer des applications robotiques impressionnantes, très rapidement.
Si vous voulez apprendre ROS avec un vrai robot que vous pouvez manipuler vous-même (parce que la plupart du temps les robots industriels sont trop chers et vous ne pouvez apprendre qu’avec des simulations 3D), alors Niryo One pourrait être parfait pour vous !