Сеть ROS 2 состоит из кратного ROS 2 узла. В отличие от ROS, где ведущее устройство ROS упрощает коммуникацию путем отслеживания все активные сущности ROS, ROS 2 основан на Стандарте распределения данных (DDS), который является сквозным промежуточным программным обеспечением, которое обеспечивает функции, такие как открытие, сериализация и транспортировка. Эти функции выравнивают с принципами разработки ROS 2, такими как распределенное открытие и управление различным "Качеством Сервиса" опции для транспортировки.
Чтобы соединиться с сетью ROS 1, смотрите Подключение к Сети ROS.
Когда вы работаете с ROS 2, вы обычно выполняете эти шаги:
Соединитесь с сетью ROS 2. Чтобы соединиться с сетью ROS 2, необходимо создать узел ROS 2 в MATLAB, задающем сетевой доменный ID.
Обменивайтесь Данными. После того, как соединенный, MATLAB обменивается данными с другим ROS 2 узла в том же доменном ID через издателей и подписчиков.
Отключитесь от сети ROS 2. Очищая все ссылки на узлы, издатели и подписчики удаляют MATLAB из сети ROS 2.
Используйте ros2node создать узел в области по умолчанию, которая использует ID 0. Узлы связываются с другими узлами в той же области и не знают об узлах в других областях.
defaultNode = ros2node("/default_node")defaultNode =
ros2node with properties:
Name: '/default_node'
ID: 0
Используйте clear удалить ссылку на узел, позволяя ему быть удаленным из сети ROS 2.
clear defaultNodeЧтобы создать узел в области не по умолчанию, явным образом задайте доменный ID как второй входной параметр к ros2node. Ниже newDomainNode создается в области, заданной ID 25.
newDomainNode = ros2node("/new_domain_node",25)newDomainNode =
ros2node with properties:
Name: '/new_domain_node'
ID: 25
Чтобы просмотреть сетевую информацию об определенной области, предоставьте ID в качестве параметра ros2 функция. Следующая команда отображает все узлы с доменным ID 25.
ros2("node","list","DomainID",25)
new_domain_node
Если доменный ID не предоставляется явным образом узлу или ros2 команда, они используют значение ROS_DOMAIN_ID переменная окружения по умолчанию. Используйте getenv видеть текущее значение. Если та переменная окружения сброшена или не установлена в допустимое значение, доменный ID по умолчанию 0 будет использоваться.
getenv("ROS_DOMAIN_ID")ans = 0x0 empty char array
Можно установить ROS_DOMAIN_ID использование setenv команда.
setenv("ROS_DOMAIN_ID","25") envDomainNode = ros2node("/env_domain_node")
envDomainNode =
ros2node with properties:
Name: '/env_domain_node'
ID: 25
Функция ros2 предоставляет информацию о сети, заданной той переменной окружения. Используйте ros2 node list просмотреть узлы с доменным ID 25.
ros2 node list
env_domain_node new_domain_node
Сбросьте ROS_DOMAIN_ID принимать значение по умолчанию.
setenv("ROS_DOMAIN_ID","")
Чтобы соединиться с существующей сетью ROS 2, создайте узел в желаемой области. Сеть ROS 2 автоматически обнаруживает любые новые узлы, созданные в той же области в названном открытии механизма.
После запуска каждый узел в ROS 2 рекламирует свое присутствие к другим узлам в той же области. Другие узлы отвечают на эту рекламу путем предоставления их информации новому узлу. Узлы с коммуникационными объектами как издатели и подписчики устанавливают связи с другими узлами, если у них есть соответствующие объекты с совместимыми настройками Quality of Service (QoS). Для получения дополнительной информации о настройках QoS смотрите, Управляют Качеством Обслуживаний в ROS 2.
Открытие является продолжающимся процессом, который позволяет новым узлам соединить сеть, когда они создаются. Каждый узел контролирует сеть ROS 2, и действуйте так же ведущему устройству ROS в сети ROS. Узлы также рекламируют свое отсутствие к другим узлам, когда они идут оффлайн.

Новый узел ROS 2 отправляет свою рекламу в существующие узлы. Существующие узлы отвечают на рекламу и затем настраивают для продолжающейся коммуникации.
Подсеть является логическим разделом сети IP в несколько, меньшие сетевые сегменты. ROS 2 узла может связаться с другими узлами в той же подсети. Чтобы обнаружить подарок узлов вне подсети, создайте файл DEFAULT_FASTRTPS_PROFILE.xml, чтобы сконфигурировать определенную реализацию DDS использование MATLAB. Добавьте список IP-адреса систем за пределами подсети, с которой можно связаться в address элементы. Обратите внимание на то, что для обеих систем, чтобы связаться, каждый из них должен задать адрес другой системы в их соответствующих файлах DEFAULT_FASTRTPS_PROFILE.xml. Установите domainId элемент к соответствующему значению для сети, которая используется в коммуникации.
Сохраните этот файл в Текущей рабочей директории MATLAB. Системы с помощью ROS 2 за пределами MATLAB должны поместить этот файл в ту же директорию, из которой запущено приложение ROS 2. Ниже пример файл DEFAULT_FASTRTPS_PROFILES.xml.
<?xml version="1.0" encoding="UTF-8" ?>
<profiles>
<participant profile_name="participant_win" is_default_profile="true">
<rtps>
<builtin>
<domainId>0</domainId>
<initialPeersList>
<locator>
<kind>UDPv4</kind>
<address>192.34.17.36</address>
</locator>
<locator>
<kind>UDPv4</kind>
<address>182.30.45.12</address>
</locator>
<locator>
<kind>UDPv4</kind>
<address>194.158.78.29</address>
</locator>
</initialPeersList>
</builtin>
</rtps>
</participant>
</profiles>
ROS 2 рекламирует информацию к узлам, существующим в системах с IP-адресами, перечисленными в DEFAULT_FASTRTPS_PROFILES.xml. Никакая информация от узлов в другой машине вне подсети не будет получена, если DEFAULT_FASTRTPS_PROFILES.xml будет или не существовать или не будет содержать правильные IP-адреса.
