Сеть ROS 2 состоит из нескольких узлов ROS 2. В отличие от ROS, где мастер ROS облегчает связь, отслеживая все активные объекты ROS, ROS 2 основана на стандарте распределения данных (DDS), который является сквозным промежуточным программным обеспечением, обеспечивающим такие функции, как обнаружение, сериализация и транспортировка. Эти функции соответствуют принципам проектирования АФК 2, таким как распределенное обнаружение и управление различными вариантами «качества обслуживания» при транспортировке.
Сведения о подключении к сети ROS 1 см. в разделе Подключение к сети ROS.
При работе с ROS 2 обычно выполняются следующие действия:
Подключение к сети ROS 2. Для подключения к сети ROS 2 необходимо создать узел ROS 2 в MATLAB, определяющий идентификатор сетевого домена.
Обмен данными. После подключения MATLAB обменивается данными с другими узлами ROS 2 в том же идентификаторе домена через издателей и подписчиков.
Отключитесь от сети АФК 2. Удаление всех ссылок на узлы, издателей и подписчиков удаляет MATLAB из сети ROS 2.
Использовать ros2node для создания узла в домене по умолчанию, который использует идентификатор 0. Узлы взаимодействуют с другими узлами в том же домене и не знают о узлах в других доменах.
defaultNode = ros2node("/default_node")defaultNode =
ros2node with properties:
Name: '/default_node'
ID: 0
Использовать clear для удаления ссылки на узел, что позволяет удалить его из сети ROS 2.
clear defaultNodeЧтобы создать узел в домене, отличном от домена по умолчанию, явно укажите идентификатор домена в качестве второго входного аргумента для ros2node. Ниже newDomainNode создается в домене, указанном идентификатором 25.
newDomainNode = ros2node("/new_domain_node",25)newDomainNode =
ros2node with properties:
Name: '/new_domain_node'
ID: 25
Для просмотра сетевой информации в определенном домене введите идентификатор в качестве параметра для ros2 функция. Следующая команда отображает все узлы с идентификатором домена 25.
ros2("node","list","DomainID",25)
/new_domain_node
Если идентификатор домена не предоставлен явным образом узлу или ros2 , они используют значение ROS_DOMAIN_ID переменная среды по умолчанию. Использовать getenv для просмотра текущего значения. Если эта переменная среды не установлена или не установлена в допустимое значение, идентификатор домена по умолчанию: 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 для просмотра узлов с идентификатором домена 25.
ros2 node list
/env_domain_node /new_domain_node
Сбросить ROS_DOMAIN_ID по умолчанию.
setenv("ROS_DOMAIN_ID","")
Для подключения к существующей сети ROS 2 создайте узел в требуемом домене. Сеть ROS 2 автоматически обнаруживает любые новые узлы, созданные в том же домене, в механизме, называемом обнаружением.
При запуске каждый узел в ROS 2 объявляет о своем присутствии другим узлам в том же домене. Другие узлы реагируют на это объявление, предоставляя свою информацию новому узлу. Узлы с объектами связи, такими как издатели и подписчики, устанавливают соединения с другими узлами, если они имеют соответствующие объекты с совместимыми настройками качества обслуживания (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-адресов.
