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.
Introduction à la communication du serveur de paramètres et aux commandes de l'outil commun ros
- 0. Concept de serveur de paramètres
- 1. Le serveur de paramètres ajoute/modifie des paramètres :
- 2. Le serveur de paramètres recherche les paramètres
- 3. Le serveur de paramètres supprime le paramètre :
- 4. Commandes communes
- Jusqu'à présent, l'introduction de la communication du serveur de paramètres et des instructions d'outil communes est terminée
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.
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 :
- entiers 32 bits
- booléens
- cordes
- double
- dates iso8601
- listes
- données binaires encodées en base64
- dictionnaire
1. Le serveur de paramètres ajoute/modifie des paramètres :
- initialiser le noeud
- 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})
2. Le serveur de paramètres recherche les paramètres
Les fonctions suivantes sont couramment utilisées :
- 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èmeradius2=rospy.get_param_cached("radius_p",0.5) radius=rospy.get_param("radius_p",0.5)
- get_param_names()
obtient tous les noms de paramètres dans la liste de paramètres actuelle et renvoienames=rospy.get_param_names() for name in names: print(name)
- has_param(key)
détermine s'il y a un paramètre dans la liste des paramètres et
renvoie une valeur booléenneflag1=rospy.has_param("radius_p") if flag1: print("存在") else : print("不存在")
- 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 :
- 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
Utilisez rosnode directement pour afficher la liste des paramètres
-
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
-
rosnode list répertorie les nœuds actifs
rosnode list
Utilisez cette commande pour afficher les nœuds actuellement actifs
-
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 :
- nom du nœud
- utiliser le sujet
- destinataire/expéditeur
Une utilisation raisonnable peut faciliter la clarification de la relation entre les nœuds
- la machine rosnode répertorie les nœuds sur le périphérique spécifié
- rosnode kill tue un nœud
Tué le nœud d'abonnementrosnode kill /sub_person
- 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
-
la liste rotopic affiche tous les sujets actuellement utilisés
rostopic list
Par exemple, le sujet utilisé ici est /che
-
l'écho rostopique agit comme récepteur et peut imprimer des informations sur le sujet à l'écran
rostopic echo topic
Par exemple, ici, vous pouvez vérifier si les informations de l'éditeur sont correctes
-
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
-
rostopic find recherche des sujets à l'aide d'un type de message
rostopic find lesson2/Person
Par exemple, quel est le sujet de la recherche du type de message de lesson2/Person ici ?
-
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.
-
la liste rosmsg répertorie tous les types de messages
-
rosmsg show / info répertorie les types spécifiques contenus dans le type de message actuel
rosmsg show msg
-
Le paquet rosmsg répertorie tous les messages sous un paquet
rosmsg package pack
Lister tous les types de messages dans turtlesim
-
rosmsg packages répertorie les packages contenant un message
rosmsg package pack
Lister tous les packages contenant le type de message turtlesim/Pose
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
-
rosservice list répertorie la liste des services de paramètres
-
l'appel rosservice appelle le service
ici pour appeler l'onglet /sum2 pour terminer et transmettre deux paramètresrosservice call /sum2
-
rosservice args pour afficher les paramètres spécifiques du message srv
rosservice args /sum2
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
4.6 rosparame
Commençons d'abord la tortue pour vérification
rosrun turtlesim turtlesim_node
-
rosparam list répertorie la liste des paramètres
-
rosparam set définit des valeurs de paramètres spécifiques
rosparam set 参数类型
-
rosparam get obtenir la valeur de paramètre spécifique
-
rosparam supprimer supprimer les paramètres
-
rosparam load charge les paramètres sur le disque
-
le vidage de rosparam charge les paramètres du disque