[PYTHON] Über die Notwendigkeit eines ersten Schrägstrichs im Abonnenten- und Herausgebernamen

Benötigen Sie den ersten Schrägstrich?

Beim Erstellen eines ROS-Herausgebers oder Abonnenten Wenn Sie ein Verlag sind, "Welchen Namen möchten Sie veröffentlichen?" Wenn Sie ein Abonnent sind, werden Sie definitiv entscheiden, was Sie abonnieren möchten.

In Code

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

Dies ist der Teil, der "pub_name" und "sub_name" von entspricht.

Zu diesem Zeitpunkt können der Name des Herausgebers und des Abonnenten am Anfang einen Schrägstrich haben oder nicht. Was bedeutet das? Ich dachte. "/pub_name" "pub_name" "/sub_name" "sub_name" Es sieht so aus Ich wusste nicht, wofür es war, weil sich das Verhalten nicht mit oder ohne ändert, aber es stellte sich erst kürzlich heraus.

Fazit

Beim Aufrufen und Starten mit Start ist es möglich, dem Herausgeber- und Abonnentennamen einen Namespace hinzuzufügen, aber ich wurde gefragt, ob ich dies widerspiegeln soll oder nicht. Wenn Sie einen Schrägstrich hinzufügen, wird der Namespace nicht angewendet. Im Gegenteil, der Namespace wird nur angezeigt, wenn der Schrägstrich nicht hinzugefügt wird.

Konkretes Beispiel

Um mit einem konkreten Beispiel zu erklären,

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')	#Knotenerstellung

	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()

So erstellen Sie zwei Publisher und zwei Abonnenten.

Und in der Startdatei

hoge.launch


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

Beschreibe was war Beginnen Sie mit dem Namespace als Namespace und dem Knotennamen als new_name. Und das

roslaunch test hoge.launch

Beginnen mit. Um zu sehen, welchen Namen Sie veröffentlichen und abonnieren

rosnode info /namespace/new_name

Und überprüfe es,

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]

(Teilauszug). Der mit dem Schrägstrich ist der gleiche wie der in hoge.py festgelegte Name. Wenn Sie keinen Schrägstrich hinzufügen, sehen Sie, dass sich der in hoge.launch festgelegte Namespace im Kopf befindet.

Es war erfrischend zu verstehen, was ich mich schon lange gefragt hatte. Ich hoffe, dass die Fragen derer, die sich ähnlich wundern, geklärt werden.

Recommended Posts

Über die Notwendigkeit eines ersten Schrägstrichs im Abonnenten- und Herausgebernamen
MongoDB mit Python zum ersten Mal
12. Speichern Sie die erste Spalte in col1.txt und die zweite Spalte in col2.txt
Über den Unterschied zwischen "==" und "is" in Python
Registrieren Sie zum ersten Mal eine Aufgabe in cron
Zum ersten Mal habe ich etwas über Unix (Linux) gelernt.
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Notwendigkeit für __name__ == "__main__", wie in zirkulären Importproblemen zu sehen
Durchsuche den pandas.DataFrame mit einer Variablen und erhalte die entsprechende Zeile.
Erster Kaggle (Kaggle ①)
Kaguru zum ersten Mal
Über "für _ in range ():" von Python
Die Geschichte, zum ersten Mal seit 5 Jahren wieder an die Front zurückzukehren und Python Django umzugestalten
Suchen Sie den Dateinamen einschließlich des angegebenen Wortes und der angegebenen Erweiterung im Verzeichnis
Informationen zum Verknüpfen von Visual Studio Code für Windows und WSL
Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format
Benötigen Sie random_state für train_test_split in sklearn
Über Python und Cython dtype
Siehe Python zum ersten Mal
Über die durchschnittliche Option von sklearn.metrics.f1_score
Starten Sie Django zum ersten Mal
Holen Sie sich den Hostnamen in Python
Der erste Schritt von Python Matplotlib
Ersetzen Sie den Verzeichnisnamen und den Dateinamen im Verzeichnis zusammen mit einem Linux-Befehl.
[Python] Süß Ist es süß? Über Suiten und Ausdrücke in offiziellen Dokumenten
python> array> Bestimmen Sie die Nummer und initialisieren Sie> mylist = [idx für idx im Bereich (10)] / mylist = [0 für idx im Bereich (10)] >> mylist = [0] * 10
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Impressionen und Memorandum bei der ersten Arbeit mit VScode
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren
Was sind die "Pipeline" und "{...}" in der Jenkins-Pipeline-Pipeline {...} (für Groovy-Anfänger, für erfahrene Sprachen)
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden