[ROS] Comment laisser les nœuds dans ROS obtenir des données III -- Introduction à la communication du serveur de paramètres et aux instructions de l'outil commun ros

insérez la description de l'image ici

Halo, c'est Ppeua. Habituellement, je mets à jour principalement le langage C, le C++, l'algorithme de structure de données... Suivez-moi si vous êtes intéressé ! Vous ne serez pas déçu.


insérez la description de l'image ici

0. Concept de serveur de paramètres

Comparé aux modèles de communication précédents, le serveur de paramètres est le plus simple. Dans les modèles précédents, ROSMASTER a agi comme un pont pour relier les deux ensemble.
insérez la description de l'image ici
Dans le serveur de paramètres : ROSMASTER devient un conteneur pour stocker les messages , permettant aux utilisateurs d'effectuer eux-mêmes les opérations d'ajout, de suppression, de vérification et de modification .

Sa conception est uniquement de stocker des données non binaires simples.Si des opérations performantes sont requises, d'autres méthodes de communication sont recommandées.

Types de paramètres pouvant être stockés dans le conteneur :

  1. entiers 32 bits
  2. booléens
  3. cordes
  4. double
  5. dates iso8601
  6. listes
  7. données binaires encodées en base64
  8. dictionnaire

1. Le serveur de paramètres ajoute/modifie des paramètres :

  1. initialiser le noeud
  2. Utilisez la fonction set_param pour ajouter/modifier

set_param est quelque peu similaire à hash : s'il n'y a pas une telle valeur dans le serveur de paramètres, elle sera augmentée, s'il y en a, elle sera modifiée à la dernière valeur

import rospy

rospy.init_node("param")

#设置整形
rospy.set_param("p_int",10)

#设置浮点型
rospy.set_param("p_double",3.14)

#设置bool值
rospy.set_param("p_bool",True)

#设置string
rospy.set_param("p_string","hello python")

#设置List
rospy.set_param("p_list",["hello","haha","xixi"])

#设置字典
rospy.set_param("p_dict",{
    
    "name":"hulu","age":8})

insérez la description de l'image ici

2. Le serveur de paramètres recherche les paramètres

Les fonctions suivantes sont couramment utilisées :

  1. get_param(key,value)
    renvoie la valeur correspondante lorsque la clé existe, et renvoie la valeur par défaut si
    elle
    n'existe pas Le rôle des tables rapides dans la mémoire système
    radius2=rospy.get_param_cached("radius_p",0.5)
    
    radius=rospy.get_param("radius_p",0.5)
    
  2. get_param_names()
    obtient tous les noms de paramètres dans la liste de paramètres actuelle et renvoie
    names=rospy.get_param_names()
    
    for name in names:
    
     print(name)
    
  3. has_param(key)
    détermine s'il y a un paramètre dans la liste des paramètres et
    renvoie une valeur booléenne
    flag1=rospy.has_param("radius_p")
    
     if flag1:
    
         print("存在")
    
     else :
    
         print("不存在")
    
  4. search_param(key)
    pour trouver s'il y a ce message, sinon, retourne None, s'il y en a, retourne cette clé
    key=rospy.search_param("radius_p")
    
    print(key)
    

3. Le serveur de paramètres supprime le paramètre :

  1. delete_param(key)
    supprime la clé spécifiée

Il est relativement simple et ne démontrera pas l'utilisation, et il y aura un projet pratique impliquant

4. Commandes communes

La communication de rubrique et la communication de service utilisées dans la configuration précédente seront utilisées.

Utilisez ces commandes pour afficher dynamiquement la relation entre les nœuds et les porteurs de messages lorsque le robot est en cours d'exécution :

  • rosnode : nœud
  • rotopique : topic
  • rosservice : service
  • rosmsg : message msg
  • rossrv : message srv
  • rosparam : serveur de paramètres opérationnels

4.1 rosnœud

Commençons d'abord par démarrer les nœuds sub et pub du message personnalisé précédemment configuré . Pour des configurations spécifiques, veuillez vous référer à la rubrique cas de communication de cet article.

rosrun lesson2 demo02_pub.py
rosrun lesson2 demo02_sub.py

insérez la description de l'image ici

Utilisez rosnode directement pour afficher la liste des paramètres
insérez la description de l'image ici

  1. rosnode ping teste l'état de la connexion au nœud

    rosnode ping /person_pub
    

    Ici /pub_person est le nœud qui envoie le message, juste une démonstration
    insérez la description de l'image ici

  2. rosnode list répertorie les nœuds actifs

    rosnode list
    

    Utilisez cette commande pour afficher les nœuds actuellement actifs
    insérez la description de l'image ici

  3. informations sur le nœud d'impression des informations sur le nœud rosnode

    ronode info /person_pub
    ronode info /person_sub
    

    Les informations des nœuds d'envoi et de réception sont imprimées ici, notamment les suivantes :

    1. nom du nœud
    2. utiliser le sujet
    3. destinataire/expéditeur

    Une utilisation raisonnable peut faciliter la clarification de la relation entre les nœuds

insérez la description de l'image ici

  1. la machine rosnode répertorie les nœuds sur le périphérique spécifié
  2. rosnode kill tue un nœud
    rosnode kill /sub_person
    
    Tué le nœud d'abonnement
  3. Le nettoyage de rosnode efface les nœuds non connectables.
    Parfois, après ctrl+c, certains nœuds seront indisponibles, mais ils sont toujours dans la liste. À ce stade, vous pouvez utiliser cette commande pour les actualiser

4.2 rotopique

Démarrez d'abord les deux nœuds utilisés ci-dessus
et entrez directement rostopic dans le terminal pour afficher toutes les commandes disponibles
insérez la description de l'image ici

  1. la liste rotopic affiche tous les sujets actuellement utilisés

    rostopic list
    

    insérez la description de l'image ici

    Par exemple, le sujet utilisé ici est /che

  2. l'écho rostopique agit comme récepteur et peut imprimer des informations sur le sujet à l'écran

    rostopic echo topic
    

    insérez la description de l'image ici

    Par exemple, ici, vous pouvez vérifier si les informations de l'éditeur sont correctes

  3. Les deux fonctions de rostopic info/type sont les mêmes, affichant le type de message de la communication du sujet, où info contient le type type

    rostopic info topic
    

    Par exemple, le type de message Person msg est utilisé ici

  4. rostopic find recherche des sujets à l'aide d'un type de message

    rostopic find lesson2/Person
    

    insérez la description de l'image ici

    Par exemple, quel est le sujet de la recherche du type de message de lesson2/Person ici ?

  5. rostopic pub publie un message sur un sujet

    rostopic pub topic
    

    Par exemple, publiez des informations sur le nœud d'abonnement ici

4.3 rosmsg

rosmsg est un outil de ligne de commande utilisé pour afficher des informations sur les types de messages ROS. C'est
également le même que ci-dessus. Vous pouvez entrer directement rosmsg et les commandes disponibles seront affichées.

  1. la liste rosmsg répertorie tous les types de messages
    insérez la description de l'image ici

  2. rosmsg show / info répertorie les types spécifiques contenus dans le type de message actuel

    rosmsg show msg
    

    insérez la description de l'image ici


  3. Le paquet rosmsg répertorie tous les messages sous un paquet

    rosmsg package pack
    

    insérez la description de l'image ici

    Lister tous les types de messages dans turtlesim

  4. rosmsg packages répertorie les packages contenant un message

    rosmsg package pack
    

    Lister tous les packages contenant le type de message turtlesim/Pose
    insérez la description de l'image ici

4.4 rosservice

Pour interroger les informations de service associées,
nous démarrons d'abord le serveur srv personnalisé et les nœuds clients précédemment configurés. Pour une configuration spécifique, veuillez vous référer à cet article

rosrun lesson3_srv demo01_client.py
rosrun lesson3_srv demo01_server.py

Vous pouvez également voir la liste des paramètres en tapant rosservice dans le terminal
insérez la description de l'image ici

  1. rosservice list répertorie la liste des services de paramètres
    insérez la description de l'image ici

  2. l'appel rosservice appelle le service
    ici pour appeler l'onglet /sum2 pour terminer et transmettre deux paramètres

    rosservice call /sum2
    

    insérez la description de l'image ici

  3. rosservice args pour afficher les paramètres spécifiques du message srv

    rosservice args /sum2
    

    insérez la description de l'image ici

Le reste de l'utilisation est le même que ci-dessus

4.5 rossrv

Semblable à rosmsg, il vérifie également le type spécifique de srv
insérez la description de l'image ici

4.6 rosparame

Commençons d'abord la tortue pour vérification
insérez la description de l'image ici

rosrun turtlesim turtlesim_node
  1. rosparam list répertorie la liste des paramètres
    insérez la description de l'image ici

  2. rosparam set définit des valeurs de paramètres spécifiques

    rosparam set 参数类型
    

    Veuillez ajouter une description de l'image

  3. rosparam get obtenir la valeur de paramètre spécifique

  4. rosparam supprimer supprimer les paramètres

  5. rosparam load charge les paramètres sur le disque

  6. le vidage de rosparam charge les paramètres du disque

Jusqu'à présent, l'introduction de la communication du serveur de paramètres et des instructions d'outil communes est terminée

Je suppose que tu aimes

Origine blog.csdn.net/qq_62839589/article/details/130650185
conseillé
Classement