ROS
Configuration initiale
Si ROS n'est pas installé sur votre machine, installez-le. Ne commencez pas tout de suite les tutorials, lisez ce qui suit.
Nous vous proposons cette méthode pour créer un espace de travail ros. Celle qui est proposée dans le premier tuto de ros est plus native, mais nous profiterons d'un outils plus avancé, les "catkin tools". Si besoin, pour les installer :
sudo apt install python-catkin-tools
Création d'un workspace
Un workspace est un dossier dans lequel on mettra tout notre travail sous ros. Il rassemble des projets, et de quoi les compiler facilement et en harmonie avec l'ensemble des packages ROS (via l'outil catkin justement). Créons ce dossier à la racine (par exemple), avec d'emblée un sous dossier src. Nous appellerons notre workspace ros-ws ici, mais vous pouvez l'appeler autrement et le mettre ailleurs.
cd ~ mkdir -p ros-ws/src cd ros-ws/srcDans ce dossier src, on mettra un sous-dossier par module, et notre workspace visera à compiler les modules que nous concevrons. Pour l'instant, ramenez un module depuis des sources extérieures, sans chercher à comprendre comment il est fait. Nous souhaitons simplement le compiler avec catkin.
git clone https://github.com/HerveFrezza-Buet/demo-teleop.git ls cd ..
Compilation
Pour que ros "marche bien", il faut que l'interpréteur de commande sache avec quelle version de ros on veut travailler. Elles sont installées dans /opt/ros. Disons ici que l'on souhaite travailler avec la version indigo (adaptez les instructions qui suivent à votre version). Pour que bash (l'interpréteur de commande) sache trouver toutes les commandes ros, il faut positionner les variables d'environnement idoines. C'est très simple :
source /opt/ros/indigo/setup.bashVoilà, maintant, vous travaillez, dans ce terminal, avec la version indigo de ROS. Nous pouvons alors compiler notre workspace.
cd ~/ros-ws catkin buildEt voilà. Tapez
lspour constater que catkin a crée plusieurs sous-dossiers, avec des résultats de compilation dedans. Mais le sous-dossier src, qui contient ce que vous, vous écrivez, est intact. La documentation des catkin tools vous dira tout ce que vous pouvez faire avec ces outils.
Exécution
Nous n'allons rien écrire nous-mêmes dans l'immédiat, ce sera l'objet des tutos. En revanche, pour exécuter des choses, le terminal a besoin de savoir sous quelle version on est, et quel est le workspace concerné (eh oui, on peut avoir plusieurs workspaces). C'est encore une affaire de positionnement de variables d'environnement. Comme la commande "catkin build" que nous avions lancée dans notre workspace savait, elle, sous quelle version de ros on a compilé le workspace, elle a pu nous construire un fichier à "sourcer" qui dit qu'on est sous ros version indigo et qu'on utilise ros-ws pour travailler. Chaque fois qu'on démarre un nouveau terminal pour travailler sous ros, il faut donc taper simplement ce qui suit pour configurer complètement l'interpréteur de commandes.
source ~/ros-ws/devel/setup.bashCertains préféreront, pour que ceci soit fait automatiquement, ajouter ce "sourçage" dans leur fichier ~/.bashrc, en ajoutant les lignes
# ROS workspace configuration source $HOME/ros-ws/devel/setup.bash
Les tutos de ROS
Il faudra aussi faire ces tutos de ROS (commencer en cours et finir à la maison). Attention, nous travaillerons avec catkin, et donc surtout pas rosbuild. De même, on regardera les tutos python de préférence, pas les tutos C++. En priorité, abordez les sujets suivants :
- Ne lisez pas la section sur l'installation et la configuration de votre environnement.
- Navigating the ROS Filesystem
- Creating a ROS Package : Attention, ne compilez pas avec catkin_make mais avec catkin build, car nous, contrairement aux tutos, nous utilisons les catkin tools.
- Understanding ROS Nodes
- Understanding ROS Topics
- Understanding ROS Services and Parameters
- Using rqt_console and roslaunch
- Creating a ROS msg and srv
- Writing a Simple Publisher and Subscriber
- Examining the Simple Publisher and Subscriber
- Writing a Simple Service and Client
- Examining the Simple Service and Client
- Recording and playing back data