Création d'un workspace ======================= Un workspace, littéralement "espace de travail", est un dossier qui contient vos fichiers source (les packages), les *install*, les *logs* et les fichiers sources compilés. .. code-block:: bash mkdir -p ~/ros2_ws/src Vous créez ici le workspace de nom "ros2_ws" (vous pouvez l'appeler comme vous le souhaitez.) et par la même occasion le dossier *src* qui contiendra les packages. .. warning:: Attention votre workspace doit etre créé par l'utilisateur et non le root. Vous pouvez vérifier avec la commande suivante à qui appartient le dossier dans lequel vous vous placez. .. code-block:: bash ll Vous pouvez, grâce à cette commande, savoir qui est le propriétaire du dossier. Pour modifier le propriétaire du fichier : .. code-block:: bash sudo chown nom_utilisateur nom_dossier Maintenant le dossier nous appartient. Création d'un package ===================== Afin de séparer les différentes parties d'un projet, il est recommandé de créer plusieurs packages dans le dossier src de votre espace de travail. On commence par se rendre dans le dossier source de notre workspace précédemment créé. .. code-block:: bash cd ~/ros2_ws/src Puis on crée le package. python ****** .. code-block:: bash ros2 pkg create --build-type ament_python my_package C++ *** .. code-block:: bash ros2 pkg create --build-type ament_cmake my_package Programmes type =============== Voici un premier nœud type dans lequel on retrouve tout ce qui est nécessaire pour commencer. .. code-block:: python import rclpy #lib ro2 from rclpy.node import Node #import de la classe Node from std_msgs.msg import String #import du type de message de topic String, cette ligne doit etre adaptée au cas par cas #création de notre neoud, ce dernier est un objet herité de la classe Node de la librairie ros2 class MyNode(Node): def __init__(self): super().__init__('my_node') #nom du noeud en paramètre self.publisher_ = self.create_publisher(String, 'my_topic', 10) #création d'un publisher (type de message, nom du topic, timeout) self.subscription_ = self.create_subscription(String, 'my_topic', self.callback, 10) #création d'un subscriber (type de message, nom du topic, fonction à appeler, timeout) self.timer_ = self.create_timer(1.0, self.timer_callback) #création d'un timer (période, fonction à appeler) self.get_logger().info('Node initialized') def callback(self, msg): #cette fonction est appelée à chaque fois qu'un message est lu self.get_logger().info('Received message: "%s"' % msg.data) #renvoie le message lu def timer_callback(self): # cette fonction est appelée à une certaine fréquence définie à la création du timer msg = String() #création de l'objet msg msg.data = 'Hello, ROS 2!' #on remplit le message self.publisher_.publish(msg) #on publie sur le publisher self.get_logger().info('Published message: "%s"' % msg.data) #en dessous les lignes suivantes sont obligatoire et toujours en fin de programme #création de la fonction main def main(args=None): rclpy.init(args=args) node = MyNode() rclpy.spin(node) rclpy.shutdown() if __name__ == '__main__': main() Compilation d'un workspace avec colcon ====================================== À chaque fois qu'un fichier est modifié, il est nécessaire de compiler de nouveau votre espace de travail. Pour cela, placez-vous dans votre workspace puis entrez la commande suivante. Commencez par vous placer dans votre workspace : .. code-block:: bash cd ~/ros2_ws Puis vous pouvez compiler. .. code-block:: bash colcon build Vous pouvez aussi compiler un package en particulier pour gagner du temps .. code-block:: bash colcon build --packages-select my_package Une fois la compilation terminée, il est nécessaire de sourcer de nouveau votre travail. La compilation a créé le fichier bash (.sh) nécessaire à l'installation. .. code-block:: bash source install/setup.sh Alias ***** Pour simplifier la compilation, je recommande de créer un alias pour ne pas à avoir à lancer les deux lignes précédentes, pour cela, nous allons éditer le fichier *.bashrc* qui gère votre terminal. .. code-block:: bash sudo nano ~/.bashrc Et y rajouter la ligne suivante à la fin : .. code-block:: bash alias rb='colcon build && source install/setup.sh' Maintenant en entrant la commande 'rb' dans votre terminal, la compilation puis le sourçage s'effectueront.