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.
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.
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.