Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

rosmessage

ROS メッセージの作成

説明

msg = rosmessage(messagetype) は、メッセージ タイプをもつ空の ROS メッセージ オブジェクトを作成します。messagetype string スカラーでは、大文字と小文字が区別され、部分一致は受け入れられません。rosmsg("list") を呼び出すことで与えられたリスト上のメッセージと一致していなければなりません。

msg = rosmessage(pub) は、pub によってパブリッシュされたトピックで決定される空白のメッセージを作成します。

msg = rosmessage(sub) は、sub のサブスクライブされるトピックで決定される空白のメッセージを作成します。

msg = rosmessage(client) は、client に関連付けられたサービスで決定される空白のメッセージを作成します。

msg = rosmessage(server) は、server のサービス タイプで決定される空白のメッセージを作成します。

すべて折りたたむ

strMsg = rosmessage('std_msgs/String')
strMsg = 
  ROS String message with properties:

    MessageType: 'std_msgs/String'
           Data: ''

  Use showdetails to show the contents of the message

ROS マスターを起動します。

rosinit
Launching ROS Core...
.......................................Done in 1.4714 seconds.
Initializing ROS master on http://192.168.0.10:53162.
Initializing global node /matlab_global_node_93995 with NodeURI http://bat1012501glnxa64:38929/

'std_msgs/String' メッセージ タイプの '/chatter' トピックのパブリッシャーを作成します。

chatpub = rospublisher('/chatter','std_msgs/String');

送信するメッセージを作成します。Data プロパティを指定します。

msg = rosmessage(chatpub);
msg.Data = 'test phrase';

パブリッシャー経由でメッセージを送信します。

send(chatpub,msg);

ROS ネットワークをシャットダウンします。

rosshutdown
Shutting down global node /matlab_global_node_93995 with NodeURI http://bat1012501glnxa64:38929/
Shutting down ROS master on http://192.168.0.10:53162.
............

複数のメッセージを保存するオブジェクト配列を作成できます。配列は他の配列と同様にインデックス可能です。各オブジェクトのプロパティを変更するか、ドット表記を使って各要素から特定のプロパティにアクセスすることができます。

2 メッセージ オブジェクト配列を作成します。

msgArray = [rosmessage('std_msgs/String') rosmessage('std_msgs/String')]
msgArray = 
  1x2 ROS String message array with properties:

    MessageType
    Data

データを配列の個々のオブジェクト要素に代入します。

msgArray(1).Data = 'Some string'; 
msgArray(2).Data = 'Other string';

すべての Data プロパティをメッセージ オブジェクトから cell 配列に読み取ります。

allData = {msgArray.Data}
allData = 1x2 cell
    {'Some string'}    {'Other string'}

ROS メッセージを使用して配列に事前割り当てを行うには、関数 repmat の代わりに関数 arrayfun または cellfun を使用します。これらの関数は、ハンドル クラスのオブジェクトまたは cell 配列を正しく作成します。

ROS メッセージのオブジェクト配列に事前割り当てを行います。

msgArray = arrayfun(@(~) rosmessage('std_msgs/String'),zeros(1,50));

ROS メッセージの cell 配列に事前割り当てを行います。

msgCell = cellfun(@(~) rosmessage('std_msgs/String'),cell(1,50),'UniformOutput',false);

入力引数

すべて折りたたむ

メッセージ タイプ。string スカラーまたは文字ベクトルとして指定します。string は大文字と小文字が区別され、部分一致は受け入れられません。rosmsg("list") を呼び出すことで与えられたリスト上のメッセージと一致していなければなりません。

ROS パブリッシャー。Publisher オブジェクト ハンドルとして指定します。rospublisher を使用してオブジェクトを作成できます。

ROS サブスクライバー。Subscriber オブジェクト ハンドルとして指定します。rossubscriber を使用してオブジェクトを作成できます。

ROS サービス クライアント。ServiceClient オブジェクト ハンドルとして指定します。rossvcclient を使用してオブジェクトを作成できます。

ROS サービス サーバー。ServiceServer オブジェクト ハンドルとして指定します。rossvcserver を使用してオブジェクトを作成できます。

出力引数

すべて折りたたむ

ROS メッセージ。Message オブジェクト ハンドルとして返されます。

R2019b で導入