*************************************
Rappels : setup ROS2
*************************************
Un projet ROS2 se compile et s'exécute dans ce que l'on appelle un ``workspace`` souvent abrévié en ``ws`` dans lequel se trouve un répertoire ``src`` qui contient les packages ROS2 que vous allez créer ou que vous allez utiliser.
.. code-block:: bash
cd ~/info_indus/
mkdir -p ros2_ws/src
Nous allons maintenant utiliser un package ROS2 que nous allons installer dans le répertoire ``src`` de votre workspace ROS2.
.. code-block:: bash
cd ~/info_indus/ros2_ws/src
git clone https://github.com/ICube-Robotics/ecat_ros2_workshop
Afin d'accélerer les processus de compilation et d'exécution, nous allons utiliser des macros bash qui facilitent la tâche quand on utilise la suite d'outils ROS2 centrée sur ``colcon``.
Ouvrez votre fichier ``~/.bashrc`` avec vscode:
.. code-block:: bash
code ~/.bashrc
Ajoutez à la fin du fichier les lignes suivantes:
.. literalinclude:: resources/code/_.bashrc
:language: bash
:caption: Addons au fichier .bashrc
:linenos:
Enregistrez le fichier et fermez vscode.
Rechargez votre fichier ``~/.bashrc`` pour prendre en compte les modifications:
.. code-block:: bash
source ~/.bashrc
Vous pouvez maintenant utiliser les macros bash que vous venez de définir.
*************************************************
Premiers pas avec le package scara_tutorial_ros2
*************************************************
Nous allons maintenant compiler le package ``scara_tutorial_ros2`` que nous venons de cloner à l'aide des macros bash que nous venons de définir.
.. code-block:: bash
cd ~/info_indus/ros2_ws
sudo apt-get update
ros2_jazzy
ros2_build
Si tout s'est bien passé, vous devriez voir un message de succès à la fin de la compilation.
.. code-block:: bash
#All required rosdeps installed successfully
Starting >>> scara_description
Starting >>> scara_bringup
Starting >>> scara_joint_velocity_controller
Starting >>> scara_nodes
Finished <<< scara_description [0.88s]
Starting >>> scara_hardware
Finished <<< scara_nodes [0.90s]
Finished <<< scara_bringup [1.14s]
Finished <<< scara_hardware [4.50s]
Finished <<< scara_joint_velocity_controller [8.28s]
Summary: 5 packages finished [8.52s]
.. note::
``ros2_jazzy`` est un alias qui charge l'environnement ROS2 de la distribution jazzy.
``ros2_build`` est un alias qui installe les dépendences et compile tout le workspace ROS2 courant.
===========================
Extension vscode pour ROS2
===========================
Pour faciliter la rédaction de code ROS2, il est très utile d'installer les extensions suivantes:
#. ``ROS2`` de nonanonno (nonanonno.vscode-ros2)
#. ``RO2`` de JaehyunShim (jaehyunshim.vscode-ros2)
#. ``ROS 2 Ament Task Provider`` de Allison Thackston (althack.ament-task-provider)
===============================================
Créer la description URDF physique d'un robot
===============================================
Pour créer la description URDF physique d'un robot, suivez dans l'ordre:
#. `tutoriel URDF `_
#. `Comment lancer et intéragir avec le système courant `_
===============================================
Créer un projet ROS2 c++ publisher-subscriber
===============================================
Nous allons maintenant créer un nœud ROS2 c++ qui va souscrire au topic ``/joint_states`` et publier sur un topic ``/velocity_supervision`` lorsque la vitesse d'un point physique du robot dépasse un certain seuil.
Pour cela il va falloir créer 2 packages ROS2:
.. code-block:: bash
cd ~/info_indus/ros2_ws/src
ros2 pkg create --build-type ament_cmake --license Apache-2.0 scara_velocity_supervision
``ros2 pkg create`` est une commande qui crée un package ROS2 avec le nom donné en argument.
L'option ``--build-type ament_cmake`` indique que le package sera en c++.
Il faudra créer un package dédié au message qui sera transmis sur le topic ``/velocity_supervision``.
.. code-block:: bash
cd ~/info_indus/ros2_ws/src
ros2 pkg create --build-type ament_cmake --license Apache-2.0 scara_velocity_supervision_msgs
Étapes:
#. Créez des projets git et enregistrez vos packages sur github.
#. Quelles dépendances ajouter à ces packages?
#. Comment créer un nœud ROS2 c++ qui souscrit à un topic et publie sur un autre topic?
#. Ajoutez les fichiers du projet à votre git et publiez les sur github.
#. Créez une documentation pour chacun de ces 2 packages.
#. Créez le code c++ en utilisant les transformations qui vient vérifier les vitesses de n'importe quel point physique du robot.
#. Documentez votre code.
Une fois ces tâches accomplies nous allons regarder:
#. Comment rendre votre nœud ROS2 paramétrable.
#. Comment tester de manière automatique votre code.