Main Content

ROS パッケージからのカスタム メッセージの作成

この例では、MATLAB® で ROS カスタム メッセージを作成する手順を実行します。必要な msgsrv、および action ファイルが含まれる ROS パッケージがなければなりません。正しいファイルの内容とフォルダー構造については、カスタム メッセージの内容で説明しています。このフォルダー構造は、ROS パッケージの標準の規則に従っています。したがって、既存のパッケージがある場合、この構造に一致しなければなりません。

適切なサードパーティ ソフトウェアがあることを確認するには、ROS Toolbox システム要件を参照してください。

カスタム メッセージ パッケージが正しいことを確認したら、フォルダー パスの場所をメモします。次に、パスを指定して rosgenmsg を呼び出し、コマンド ウィンドウに出力された手順に従います。次の例には、互いに依存関係にある AB、および C という 3 つのメッセージがあります。また、この例は、複数のメッセージが含まれるフォルダーを使用して、すべてのメッセージを同時に生成できることも示しています。

MATLAB でカスタム メッセージを設定するには、次を行います。

  • MATLAB を新しいセッションで開きます。

  • カスタム メッセージをある場所に配置し、フォルダーのパスをメモします。すべてのカスタム メッセージ定義を単一のパッケージ フォルダーに配置することをお勧めします。

    folderpath = 'c:\MATLAB\custom_msgs\packages';
  • (オプション) 既存の catkin ワークスペース (catkin_ws) がある場合、代わりにその src フォルダーへのパスを指定することもできます。ただし、このワークスペースには大量のパッケージが含まれている場合があります。メッセージ生成はすべてのパッケージに対して実行されます。

    folderpath = fullfile('catkin_ws','src');
    
  • カスタム メッセージ パッケージが含まれるフォルダー パスを指定し、関数 rosgenmsg を呼び出して、MATLAB 用のカスタム メッセージを作成します。

    rosgenmsg('c:\MATLAB\custom_msgs')
  • 次に、rosgenmsg の出力から手順に従います。

  1. コマンド ウィンドウで addpathsavepath を実行して、指定したファイルを MATLAB パスに追加します。

    addpath('C:\MATLAB\custom_msgs\packages\matlab_msg_gen_ros1\msggen')
    savepath
  2. すべてのメッセージ クラス定義を更新します。これには、以下のとおりワークスペースをクリアする必要があります。

    clear classes
    rehash toolboxcache

  3. その後、ROS Toolbox でサポートされている他の ROS メッセージと同様に、カスタム メッセージを使用することができます。rosmsg list を呼び出してメッセージ タイプを検索するか、rosmessage を使用して新しいメッセージを作成して、これらの変更を確認します。

    custommsg = rosmessage('B/Standalone')
     custommsg = 
    
      ROS Standalone message with properties:
    
          MessageType: 'B/Standalone'
          IntProperty: 0
        StringPropert: ''
    
      Use showdetails to show the contents of the message
    

この最終的な検証により、カスタム メッセージ生成プロセスを正しく実行したことが示されます。これで、MATLAB と Simulink® を使用してこれらのメッセージを ROS ネットワーク上で送受信できるようになりました。新しいカスタム メッセージは、通常のメッセージ タイプと同様に使用できます。これらによってそのメッセージ タイプ固有のオブジェクトが作成され、ワークスペースに表示されるはずです。

custommsg = rosmessage('B/Standalone');
custommsg2 = rosmessage('A/DependsOnB');

Custommsg and custommsg2 as viewed in MATLAB command window and workspace.

カスタム メッセージは、ROS Simulink ブロックとともに使用することもできます。

A Blank Message block in a Simulink model configured to create a blank message of custom message type.

参考

|

関連するトピック