9 mars 2017

Comment apprendre la robotique avec ROS

Vous voulez apprendre la robotique en programmant, mais vous ne savez pas par où commencer ?

La robotique est un immense domaine, avec tellement de choses à faire et à apprendre. Cela peut être décourageant de voir tout ce qu’on peut faire, mais de seulement commencer par faire clignoter une DEL.

Nous avons une bonne nouvelle pour vous : ROS est certainement ce que vous cherchez. Dans cet article, nous verrons ce qu’est ROS et ce que vous pouvez en tirer lors de votre apprentissage de la robotique. Nous vous donnerons des conseils pour bien commencer, et pouvoir rapidement créer des applications robotiques cools et utiles !

Qu’est ce que ROS ?

ROS (Robot Operating System), est un framework pour écrire des logiciels robotiques. C’est un projet qui a été lancé en 2007 par Willow Garage, dans le but de fournir un “standard” pour la programmation robotique, permettant aux développeurs de créer de meilleures applications plus rapidement.

ROS est maintenant utilisé dans de nombreux robots : drones, voitures autonomes, robots humanoïdes, bras robotisés, et bien d’autres encore… Niryo One est un exemple de bras robotisé 6 axes basé sur ROS.

Voici une courte vidéo montrant une façon de contrôler le robot, avec l’aide de ROS. ROS rend aisé l’envoi de commandes depuis une application web, jusqu’aux moteurs du robot (avec quelques étapes intermédiaires).

Pour utiliser ROS, vous aurez besoin d’un système d’exploitation Ubuntu (d’autres OS sont supportés, mais il est préférable de commencer sur Ubuntu). Nous vous recommandons d’utiliser la version Ubuntu 16.04 avec ROS Kinetic (version 2016), cette dernière étant pour le moment la plus développée et maintenue.

Pourquoi apprendre la robotique avec ROS ?

La robotique est difficile, et les robots reposent souvent sur des systèmes très complexes qui demandent une expertise dans bien des domaines. Un problème récurrent en robotique est que de nombreuses personnes réinventent la roue à chaque projet. Imaginons que vous ayez un an pour programmer un robot complet à partir de zéro. Vous passerez sûrement la première moitié du temps à créer un système basique de communication et de calculs, et à la fin de votre projet, vous remarquerez que vous n’êtes pas allé plus loin que la plupart des personnes avant vous.

Avec ROS, vous bénéficiez d’un ensemble d’outils complet, et d’une architecture de base vous permettant de commencer votre application avec une plus grande abstraction. Vous n’avez plus besoin de vous soucier de comment est faite la communication entre les différents programmes. Vous aurez également accès à des outils intégrés à ROS, pour faire de la planification de mouvement, reconnaissance d’objets, navigation 2D, cartographie 3D, etc. Vous n’avez donc pas besoin de recréer ce qui a déjà été fait par nombre de développeurs avant vous, et pouvez donc vous focaliser sur l’essentiel de votre projet.

Ce que vous apprendrez avec ROS :

La robotique est composée de mécanique, d’électronique et d’informatique. Avec ROS, vous apprendrez bien évidemment la partie informatique :

  • Programmation (C++ / Python) pour développer votre application.
  • Administration système et réseau, pour installer ROS sur différents systèmes d’exploitation, gérer les paquets sources/binaires, communiquer avec l’extérieur en utilisant différents protocoles (HTTP, WebSocket, I2C, SPI, …).
  • Concepts de robotique, comme la cinématique inverse, localisation, cartographie 3D, intelligence artificielle, …

En utilisant ROS vous aurez une base déjà toute faite pour vos applications robotiques. En y ajoutant les nombreux outils disponibles, vous pourrez :

  • Communiquer entre tous vos capteurs, contrôleurs, moteurs, interfaces utilisateur, …
  • Gérer des systèmes robotiques complexes. Il sera plus facile pour vous d’avoir en tête une vue d’ensemble du projet.
  • Étendre vos connaissances en robotique. ROS est utilisé dans de nombreux robots. Même si vous programmez un drone, vous pourrez utiliser certaines choses que vous avez apprises sur un bras robotisé par exemple.

Comment apprendre la robotique avec ROS – Les bases :

Commençons donc avec les bases de ROS. Cette partie est assez difficile, vous ne comprendrez pas tout en un jour. Cependant, gardez votre motivation intacte, et après un certain temps vous ne regretterez pas les efforts faits pour apprendre ! Voici quelques ressources utiles qui vous aideront dans votre apprentissage :

  • ROSCON 2012 sur Youtube (en anglais). ROSCON est un rassemblement annuel des développeurs et utilisateurs de ROS, afin de discuter des avancées faites et de la voie à suivre. Cette série de vidéos vous aidera à comprendre certains concepts fondamentaux, et vous donnera de nombreuses idées d’applications.
  • ROS wiki. Vous y trouverez de nombreux tutoriels pour débutants. Ces tutoriels vont vous enseigner comment mettre en place une base logicielle ROS en utilisant les concepts de base de communication.
  • Si vous voulez directement voir un exemple réel de robot utilisé dans la vie réelle, jetez un coup d’oeil aux robots existants basés sur ROS. Ceux-ci ont une partie de leur code rendue open source, vous pouvez vous en inspirer pour vos projets.

D’abord vous apprendrez les concepts de base de ROS : comment fonctionnent les Topics, les Services et les Actions (vous pouvez garder les Actions pour plus tard, qui sont d’un niveau de difficulté supérieur). Il est important de bien comprendre les concepts de communication de ROS, cela vous permettra d’avoir une meilleure vue d’ensemble sur l’architecture de votre projet. Après avoir compris comment les Nodes communiquent entre eux, vous pourrez passer à la suite.

Une fois les bases apprises, nous vous encourageons fortement à travailler sur un projet robotique pour voir comment utiliser ROS sur votre robot. Avoir un projet personnel vous gardera motivé, et vous apprendrez plus rapidement.

Comment apprendre la robotique avec ROS – Après les bases

Le temps est venu de passer aux choses sérieuses ! La façon dont vous allez apprendre va dépendre du type de robot que vous souhaitez programmer. Voici quelques paquets et ressources dont vous pourriez avoir besoin :

  • URDF : une représentation de votre robot dans un format proche du XML. Avec ceci vous aurez facilement un modèle global de votre robot dans votre système ROS, qui pourra être utilisé par différents programmes.
  • Rviz : un outil de simulation qui utilisera votre fichier URDF pour vous montrer une vue 3D de votre robot.
  • Moveit : un framework complet de planification de mouvement. Moveit utilisera des commandes que vous lui donnerez, ainsi que le fichier URDF, pour calculer des trajectoires que votre robot exécutera.
  • ROS control : un ensemble de contrôleurs + une interface pour vos appareils électroniques. Vous pouvez aussi directement le relier à Moveit !
  • Rosbridge : une communication entre un système ROS et un système non-ROS, utilisant le protocole WebSocket.
  • IMU ROS messages : un type de message pour envoyer vos données récupérées d’un IMU (Inertial Measurement Unit) vers votre système ROS.
  • Gazebo : un simulateur complet, incluant l’environnement et les contraintes physiques. Avec Gazebo vous pouvez faire cartographier une salle par un drone, et refaire la même chose juste après dans le monde réel !

Nous pourrions écrire un livre entier sur cette partie. Ce que vous devez savoir, c’est que de nombreux programmes pour diverses applications robotiques ont déjà été développés. Quand vous avez besoin de faire quelque chose de nouveau, renseignez vous d’abord, peut être que quelqu’un l’a déjà fait avant vous ! Ainsi vous ne perdrez pas de temps et pourrez progresser plus efficacement.

ROS et la communauté – Vous n’êtes pas seul !

Apprendre quelque chose en partageant ses progrès, en posant ses questions à d’autres personnes, est beaucoup plus motivant.

ROS est supporté par une active et grandissante communauté. En apprenant la robotique avec ROS, nous vous garantissons que vous ne serez pas seul. Vous pouvez rencontrer des passionnés de robotiques et trouvez de l’aide facilement :

  • ROS answers, qui est en quelque sorte le “stack overflow” de ROS. De nombreuses questions/réponses y sont disponibles et vous aideront à comprendre et vous débloquer dans certaines situations. Vous pouvez bien entendu poser toutes les questions que vous avez.
  • ROS github. Pour presque chaque paquet vous trouverez le code associé sur github. Si vous avez un problème que vous pensez inhérent au code, vous pouvez en discuter avec les développeurs du paquet. Vous pouvez également proposer des contributions pour ajouter de nouvelles fonctionnalités ! De cette façon vous aiderez aussi d’autres personnes, en partageant votre travail et vos progrès.
  • ROS mailing list. Nous vous conseillons de vous y inscrire, pour recevoir des informations sur des mises à jours, questions utilisateurs, différents projets robotiques, etc. Une bonne façon de faire de la veille technologique sur le développement de ROS et des nouvelles applications qui l’utilisent.

A vous d’apprendre la robotique avec ROS !+

Nous vous avons donné ici un aperçu de comment apprendre la robotique avec ROS.

ROS vous permettra d’arrêter de toujours réinventer la roue, et de rapidement commencer à créer des applications robotiques utiles et impressionnantes.

Si vous voulez apprendre ROS avec un vrai robot que vous pouvez manipuler vous-même (la plupart du temps les robots industriels sont trop chers et vous pouvez seulement en avoir un rendu 3D), alors Niryo One est parfait pour vous !

Nous n'avons pas pu confirmer votre inscription.
Votre inscription est confirmée.
Inscrivez-vous à la newsletter