À propos de la nécessité d'une première barre oblique dans le nom de l'abonné et le nom de l'éditeur

Avez-vous besoin de la première barre oblique?

Lors de la création d'un éditeur ou d'un abonné ROS Si vous êtes un éditeur, "Quel nom souhaitez-vous publier?" Si vous êtes abonné, vous déciderez certainement à quoi vous souhaitez vous abonner.

Dans du code

pub = rospy.Publisher("pub_name", Image, queue_size=1)
sub = rospy.Subscriber("sub_name", Image, img_cb)

C'est la partie correspondant à "pub_name" et "sub_name" de.

À ce stade, le nom de l'éditeur et le nom de l'abonné peuvent ou non avoir une barre oblique au début, quelle est la signification? Je pensais. "/pub_name" "pub_name" "/sub_name" "sub_name" Il ressemble à ceci Je ne savais pas à quoi cela servait parce que le comportement ne change pas avec ou sans lui, mais cela s'est produit récemment.

Conclusion

Lors de l'appel et du lancement avec lancement, il est possible d'ajouter un espace de noms au nom de l'éditeur et au nom de l'abonné, mais on m'a demandé si je devais refléter cela ou non. Si vous ajoutez une barre oblique, l'espace de noms ne sera pas appliqué. Au contraire, l'espace de noms n'est reflété que lorsque la barre oblique n'est pas ajoutée.

Exemple concret

Pour expliquer avec un exemple concret,

hoge.py


#!/usr/bin/env python
#coding: utf-8
import rospy
from sensor_msgs.msg import Image

def img1_cb(a):
	print "1"
def img2_cb(b):
	print "2"

if __name__ == '__main__':
	rospy.init_node('hoge')	#création de nœuds

	pub1 = rospy.Publisher('/pub_name1', Image, queue_size=1)
	pub2 = rospy.Publisher('pub_name2', Image, queue_size=1)
	sub1 = rospy.Subscriber("/sub_name1", Image, img1_cb)
	sub2 = rospy.Subscriber("sub_name2", Image, img2_cb)

	while not rospy.is_shutdown():	
		rospy.spin()

Créer deux éditeurs et deux abonnés.

Et dans le fichier de lancement

hoge.launch


<launch>
	<group ns="namespace">
		<node pkg="tttest" name="new_name" type="hoge.py" />
	</group>
</launch>

Décrivez ce qui était Commencez avec l'espace de noms comme espace de noms et le nom du nœud comme nouveau_nom. Et ça

roslaunch test hoge.launch

Commencer avec. Pour voir le nom que vous publiez et auquel vous vous abonnez

rosnode info /namespace/new_name

Et vérifiez-le,

Node [/name_space/new_name]
Publications: 
 * /pub_name1 [sensor_msgs/Image]
 * /rosout [rosgraph_msgs/Log]
 * /name_space/pub_name2 [sensor_msgs/Image]

Subscriptions: 
 * /name_space/sub_name2 [unknown type]
 * 
 * /sub_name1 [unknown type]

(Extrait partiel). Celui avec la barre oblique est le même que le nom défini dans hoge.py. Si vous n'ajoutez pas de barre oblique, vous pouvez voir que l'espace de noms défini dans hoge.launch est dans la tête.

C'était rafraîchissant de comprendre ce que je me demandais depuis longtemps. J'espère que les questions de ceux qui se posent la même question seront éclaircies.

Recommended Posts

À propos de la nécessité d'une première barre oblique dans le nom de l'abonné et le nom de l'éditeur
MongoDB avec Python pour la première fois
12. Enregistrez la première colonne dans col1.txt et la deuxième colonne dans col2.txt
À propos de la différence entre "==" et "is" en python
Enregistrer une tâche dans cron pour la première fois
Pour la première fois, j'ai découvert Unix (Linux).
Résumé des points d'achoppement à Django pour la première fois
Besoin de __name__ == "__main__" comme indiqué dans les problèmes d'importation circulaire
Recherchez le pandas.DataFrame avec une variable et obtenez la ligne correspondante.
Premier Kaggle (kaggle ①)
Kaguru pour la première fois
À propos de "for _ in range ():" de python
L'histoire du retour au front pour la première fois en 5 ans et de la refactorisation de Python Django
Recherchez le nom du fichier, y compris le mot et l'extension spécifiés dans le répertoire
À propos de la procédure de liaison de Visual Studio Code pour Windows et WSL
Formatez le journal Git et obtenez le nom du fichier validé au format csv
Besoin de random_state pour train_test_split dans sklearn
À propos de Python et Cython dtype
Voir python pour la première fois
À propos de l'option moyenne de sklearn.metrics.f1_score
Démarrez Django pour la première fois
Obtenez le nom d'hôte en Python
La première étape de Python Matplotlib
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
[Python] Doux Est-ce doux? À propos des suites et des expressions dans les documents officiels
python> array> Déterminer le nombre et initialiser> mylist = [idx pour idx dans la plage (10)] / mylist = [0 pour idx dans la plage (10)] >> mylist = [0] * 10
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
Impressions et mémorandum lors de la première utilisation de VScode
Pour la première fois dans Numpy, je vais le mettre à jour de temps en temps
Quels sont le "pipeline" et "{...}" dans le pipeline Jenkins Pipeline {...} (pour les débutants Groovy, pour les langages expérimentés)
Une note utile lors de l'utilisation de Python après une longue période