Подглава 1.2.4 Общение в ROS
Last updated
Was this helpful?
Last updated
Was this helpful?
Давайте посмотрим, как два узла взаимодействуют друг с другом, используя topic ROS. Следующая диаграмма показывает, как это происходит:
Как видите, есть два узла, называемые говорящим(talker) и слушающим(listener). Узел говорящего публикует строковое сообщение с именем Hello World в topic /talker, а узел слушателя подписывается на этот topic. Давайте посмотрим, что происходит на каждом этапе, отмеченным (1), (2) и (3):
Прежде чем запускать какие-либо узлы в ROS, мы должны запустить ROS Master. После того, как он был запущен, он будет ждать узлов. Когда узел говорящего (издатель) начинает работать, он сначала подключается к мастеру ROS и обменивается подробностями topicпубликации с мастером. Это включает в себя имя topic, тип сообщения и URI узла публикации. URI мастера является глобальным, и к нему могут подключаться все узлы. Мастер ведет таблицы издателя, связанные с ним. При изменении данных издателя таблица обновляется автоматически.
Когда мы запускаем узел слушателя (подписчик), он подключается к мастеру и обменивается сведениями об узле, такими как topic, на который планируется подписаться, тип ее сообщения и URI узла. Мастер также ведет таблицу подписчиков, аналогичную издателю.
Когда есть подписчик и издатель для одной и того же topic, главный узел будет обмениваться URI издателя с подписчиком. Это поможет обоим узлам соединяться друг с другом и обмениваться данными. После того, как они соединились друг с другом, у мастера нет роли. Данные не проходят через мастер; вместо этого узлы взаимосвязаны и обмениваются сообщениями.