Main Content

Node

ROS ノードを起動して ROS マスターに接続

R2019b 以降

説明

ros.Node オブジェクトは、ROS ネットワーク内の ROS ノードを表します。このオブジェクトを通じて ROS ネットワークの残りの部分と通信できます。パブリッシャー、サブスクライバー、サービスなど、他の ROS の機能を使用する前にノードを作成する必要があります。

ROS ノードは、関数 rosinit を使用するか、ros.Node を呼び出すことによって作成できます。

  • rosinit — 単一の ROS ノードを MATLAB® で作成します。既存の ROS マスターを指定することも、関数で作成することもできます。Node オブジェクトは表示されません。

  • ros.Node — 同じ ROS ネットワークで使用する複数の ROS ノードを MATLAB で作成します。

作成

説明

N = ros.Node(Name) は、Name の ROS ノードを初期化し、既定の URI http://localhost:11311 にある ROS マスターへの接続を試みます。

N = ros.Node(Name,Host) は、既定のポート番号 11311 を使用して、指定された IP アドレスまたはホスト名 Host にある ROS マスターへの接続を試みます。

N = ros.Node(Name,Host,Port) は、ポート番号 Port で ROS マスターへの接続を試みます。

N = ros.Node(Name,MasterURI,Port) は、指定された IP アドレス MasterURI にある ROS マスターへの接続を試みます。

N = ros.Node(___,'NodeHost',HostName) は、ノードが自身を ROS ネットワークにアドバタイズするために使用する IP アドレスまたはホスト名を指定します。たとえば、"192.168.1.1""comp-home" です。前述の構文の任意の引数を使用できます。

プロパティ

すべて展開する

ノードの名前。string スカラーまたは文字ベクトルとして指定します。ノードの名前は有効な ROS グラフの名前でなければなりません。ROS の名前を参照してください。

ROS マスターの URI。string スカラーまたは文字ベクトルとして指定します。指定された URI の ROS マスターにノードが接続されます。

ノードの URI。string スカラーまたは文字ベクトルとして指定します。ノードは、そのノードに他のノードが接続できるように、この URI を使用して自身を ROS ネットワークにアドバタイズします。

現在の ROS ネットワークの時間。Time オブジェクトとして指定します。詳細については、rostime を参照してください。

すべて折りたたむ

複数の ROS ノードを作成します。パブリッシャー、サブスクライバー、および他の ROS の機能をもつ Node オブジェクトを使用して、接続するノードを指定します。

ROS マスターを作成します。

master = ros.Core;
Launching ROS Core...
Done in 0.7113 seconds.

複数のノードを初期化します。

node1 = ros.Node('/test_node_1');
node2 = ros.Node('/test_node_2');

これらのノードを使用して、別々の処理を実行し、別々のメッセージを送信します。node1 からパブリッシュされたメッセージに node2 で実行されるサブスクライバーからアクセスできます。

pub = ros.Publisher(node1,'/chatter','std_msgs/String');
sub = ros.Subscriber(node2,'/chatter','std_msgs/String');

msg = rosmessage('std_msgs/String');
msg.Data = 'Message from Node 1';

node1 からメッセージを送信します。node2 に接続されたサブスクライバーがメッセージを受信します。

send(pub,msg) % Sent from node 1
pause(1) % Wait for message to update
sub.LatestMessage
ans = 
  ROS String message with properties:

    MessageType: 'std_msgs/String'
           Data: 'Message from Node 1'

  Use showdetails to show the contents of the message

パブリッシャー、サブスクライバー、およびノードの ROS ネットワークをクリアします。Core オブジェクトを削除して ROS マスターをシャットダウンします。

clear('pub','sub','node1','node2')
clear('master')

MATLAB® を使用して複数の ROS マスターに接続することが可能です。これらの個々の ROS マスターは情報を共有せず、異なるポート番号が必要です。情報をネットワークでどのように配信するかに基づいて、個々のマスターに ROS ノードを接続します。

2 つの ROS マスターを別々のポートで作成します。

m1 = ros.Core; % Default port of 11311 
Launching ROS Core...
.Done in 1.1225 seconds.
m2 = ros.Core(12000);
Launching ROS Core...
.Done in 1.8069 seconds.

それぞれの ROS マスターに別々の ROS ノードを接続します。

node1 = ros.Node('/test_node_1','localhost');
node2 = ros.Node('/test_node_2','localhost',12000);

ROS ノードをクリアします。ROS マスターをシャットダウンします。

clear('node1','node2')
clear('m1','m2')

バージョン履歴

R2019b で導入

参考

|

外部の Web サイト