メインコンテンツ

ROS 2 ネットワークへの接続と通信の確立

ROS 2 ノード

ノードは、計算を処理する ROS アプリケーションの基本構成ブロックです。1 つの ROS 2 ネットワークに、単一のコンピューターまたは複数のコンピューターで実行されている複数のノードを含めることができます。ノードは、メッセージを送受信して相互に通信する独立したプロセスです。ロボット システムでは、ノードにはセンサー (カメラ)、モーション コントローラー (モーター)、および コンポーネント (ルート プランナー) が含まれます。

ROS 2 ネットワークの初期化

ROS 2 ネットワークに接続するには、ROS 2 ノードを作成します。ROS 2 ネットワークはROS Domain IDで識別されます。既定のドメイン (ドメイン ID 0) で ROS 2 ノードを作成するには、ros2nodeコマンドを使用します。

defaultNode = ros2node("/default_node")
defaultNode = 
  ros2node with properties:

    Name: '/default_node'
      ID: 0

ROS 2 ネットワーク情報の表示

ros2 node list を使用すると、既定のドメインのネットワーク情報が表示されます。

ros2 node list
/default_node
/node_1

別のドメインでの ROS 2 ノードの作成

パラメーターとしてドメイン ID を渡して、既定以外のドメインのノードを作成します。

newDomainNode = ros2node("/new_domain_node",25)
newDomainNode = 
  ros2node with properties:

    Name: '/new_domain_node'
      ID: 25

これにより、ノードが作成され、ドメイン ID が 25 となるネットワークに接続されます。

既定でないドメインの場合は、ドメイン ID を以下に示すように指定します。

ros2("node","list","DomainID",25)
/new_domain_node

ROS 2 ネットワークのシャットダウン

clear を使用するとノードへの参照が削除され、ネットワークからそのノードが削除されます。

clear defaultNode
clear newDomainNode

このようなノードを複数作成し、インターフェイス タイプが異なるメッセージを送受信してノード間の通信を確立できます。

ROS 2 ネットワークとの通信

既存の ROS 2 ネットワークに接続するには、目的のドメインでノードを作成します。ROS 2 ネットワークは、Discoveryで説明したように、同じドメインで作成されたすべての新しいノードを自動検出します。

サブネット外の ROS 2 通信

サブネットは、IP ネットワークを複数の小さなネットワーク セグメントに論理分割したものです。ROS 2 ノードは同じサブネット内の他のノードと通信できます。サブネット外にあるノードを検出するには、DEFAULT_FASTRTPS_PROFILE.xml ファイルを作成し、MATLAB が使用する特定の DDS 実装を構成します。通信相手となるサブネット外のシステムの IP アドレスのリストを、アドレス要素内に追加します。通信を行うどちらのシステムも、通信相手のアドレスを各自の DEFAULT_FASTRTPS_PROFILE.xml ファイルで指定しなければならないことに注意してください。ドメイン ID 要素を、通信に使用するネットワークに応じた値に設定します。

このファイルを MATLAB® の現在の作業ディレクトリに保存します。MATLAB の外で ROS 2 を使用しているシステムでは、ROS 2 アプリケーションが実行されるディレクトリと同じディレクトリにこのファイルを配置する必要があります。以下は DEFAULT_FASTRTPS_PROFILE.xml ファイルの例です。

<?xml version="1.0" encoding="UTF-8" ?>
<profiles>
    <participant profile_name="participant_win" is_default_profile="true">
        <rtps>
            <builtin>
                <metatrafficUnicastLocatorList>
                     <locator/>
                </metatrafficUnicastLocatorList>
                 <initialPeersList>
                     <locator>
                         <udpv4>
                         <address>192.34.17.36</address>
                         </udpv4>
                     </locator>
                     <locator>
                         <udpv4>
                         <address>182.30.45.12</address>
                         </udpv4>
                     </locator>
                     <locator>
                         <udpv4>
                         <address>194.158.78.29</address>
                         </udpv4>
                     </locator>
                 </initialPeersList>
             </builtin>
         </rtps>
     </participant>
</profiles> 

ROS 2 は、DEFAULT_FASTRTPS_PROFILE.xml 内に記録されている IP アドレスのシステムに存在するノードに情報をアドバタイズします。DEFAULT_FASTRTPS_PROFILE.xml が存在しないか、このファイルに正しい IP アドレスが含まれていない場合、サブネットの外にある他のマシンのノードからの情報は取得されません。

ROS 2 communication subnet

ROS 2 通信インターフェイス

ROS 2 ノード間で異なるインターフェイス タイプを使用して通信できます。