2017-09-22 54 views
0

我剛開始使用ROS今晚。ROS:訂閱不同命名空間中的主題

我試圖實現這一目標是:

enter image description here

這是我已經做了:

  • 發佈和訂閱topic_b。

  • 發佈到NS1/topic_a

  • (我rostopic echo /ns1/topic_a選中)發佈到NS2/topic_a(我rostopic echo /ns2/topic_a選中)

  • 訂閱NS2/topic_a(ros::Subscriber sub = n.subscribe("topic_a", 1000, callback);

我不知道該怎麼辦:

  • 從node_b訂閱ns1/topic_a。

讀取教程之後,我嘗試這樣做:

1 /在node_b.cpp,我訂閱/ topic_a_temp。

2 /在啓動文件中,節點_B標籤裏面,我加<remap from="topic_a_temp" to="ns1/topic_a">

但它不工作。

這可能是非常基本的,因爲我是初學者,但我不知道如何從ns2節點讀取ns1主題。

感謝你的幫助,

+1

如何有幫助'<重映射來自=「topic_a_temp」到=「/ NS1/topic_a」>'?請注意,添加的正斜槓告訴ROS在寫入時查找名稱,而不是相對於節點正在啓動的任何名稱空間。另外,使用'rosnode info'或其他內省工具來檢查節點實際訂閱哪些主題可能會有所幫助爲解決這些問題。 – mikkola

+0

聖潔的狗屎。那斜線確實奏效了!非常感謝你。 –

回答

0

添加斜線到你的話題重映射指令: ​​

ROS然後將查找名全球,因爲它是寫的,而不是相對於節點推出的命名空間有關更多信息,請參閱how names are resolved in ROS

rosnode info或其他內省工具來檢查哪些主題節點實際上訂閱可以爲解決這些問題