メインコンテンツ

ROS 2 カスタム メッセージのサポート

カスタム メッセージの概要

カスタム メッセージは、ROS Toolbox で現在サポートされているメッセージ タイプのセットの拡張に使用できる、ユーザー定義のメッセージです。サポートされているメッセージ タイプを送受信する場合は、カスタム メッセージを使用する必要はありません。サポートされているメッセージ タイプのリストを表示するには、MATLAB® コマンド ウィンドウで ros2 msg list を呼び出します。

カスタム メッセージを作成するには、ROS Wiki の ROS 2 パッケージにある有効な ROS 2 パッケージが必要です。カスタム メッセージ パッケージ フォルダーがある場所へのファイル パスを指定して ros2genmsg 関数を呼び出し、カスタム メッセージを使用するために必要な MATLAB コードを生成します。

ros2genmsg 関数は、ROS 2 IDL (.idl) ファイルからカスタムな ROS 2 メッセージ タイプ、サービス タイプ、およびアクション タイプを直接生成することもサポートしています。ROS インターフェイス タイプと DDS IDL タイプの間のマッピングの詳細については、ROS インターフェイス タイプと DDS IDL タイプのマッピングを参照してください。

MATLAB で ROS 2 カスタム メッセージを生成する方法の例については、共有可能な ROS 2 カスタム メッセージ パッケージの作成を参照してください。

ROS 2 カスタム メッセージを初めて生成する場合は、前提条件についてROS Toolbox システム要件を参照してください。

カスタム メッセージの内容

ROS 2 カスタム メッセージは、msgsrv、および action ディレクトリを含む ROS パッケージ フォルダー内に指定されます。

メモ

ROS Toolbox は、同時に MATLAB パス上の複数のカスタム メッセージ フォルダーをサポートします。これらのフォルダーには複数のカスタム メッセージ パッケージを含めることができます。

msg フォルダーには、すべてのカスタム メッセージ タイプ定義 (.msg または .idl) が含まれています。また、srv フォルダーには、すべてのカスタム サービス タイプ定義 (.srv または .idl) を追加し、action フォルダーにはすべてのカスタム アクション タイプ定義 (.action または .idl) を追加する必要があります。パッケージ ros2CustomMessages のフォルダーとファイルの構造は次のとおりです。

ROS 2 custom message folder structure

このパッケージでは、Num.msg に 1 つのカスタム メッセージ タイプが、AddTwoInts.srv に 1 つのカスタム サービス タイプが、Test.action に 1 つのカスタム アクション タイプが、SimpleMsg.idl に 1 つのカスタム IDL メッセージ タイプが含まれています。MATLAB はこれらのファイルを使用して、パッケージに含まれるカスタム メッセージを使用するために必要なファイルを生成します。msg ファイルおよび srv ファイルの作成の詳細については、ROS 2 のドキュメンテーションの Creating ROS 2 msg and srv を参照してください。

メモ

ROS 2 用に生成されるカスタム メッセージ ライブラリは、内部の ROS ワークフローに統合されるユーザー作成のファイルです。これらのファイルを未承認のアクセスから守り、システムの整合性を維持するには、対象とするユーザー アカウントのみにアクセスを制限するように適切なディレクトリの権限を設定します。

カスタム メッセージ作成ワークフロー

前の節で説明したとおりにカスタム メッセージ構造を設定したら、これらのカスタム メッセージを使用するために必要なコードを作成できます。まず、カスタム メッセージ ファイルへの既知のパスを使用して ros2genmsg を呼び出し、MATLAB コードを作成します。

関数 ros2genmsg は、カスタム メッセージ ファイル (.msg.srv、および .action) を取り、それぞれのメッセージ タイプを、動作する MATLAB コードに変換します。ソフトウェアによって、msg フォルダーで .msg ファイルまたは .idl ファイルを、srv フォルダーで .srv ファイルまたは .idl ファイルを、action フォルダーで .action ファイルまたは .idl ファイルが検索され、それぞれのメッセージ タイプを動作する MATLAB コードに変換されます。このコードは、新しいカスタム メッセージを作成するときにメッセージ プロパティを定義する関数のグループです。これにより、さまざまなメッセージ関数に必要な MATLAB M ファイルが作成されます。

ros2genmsg 関数によってこれらのファイルが作成された後、関数ファイルを MATLAB パスに追加しなければなりません。これらの手順は、MATLAB コマンド ウィンドウのプロンプトとして示されます。ros2 msg list または ros2message 関数を使用して、新しいカスタム メッセージが使用可能であることを検証します。

この手順の例については、共有可能な ROS 2 カスタム メッセージ パッケージの作成を参照してください。この例では、サンプル カスタム メッセージ ファイルを使用して MATLAB でカスタム メッセージを作成しています。

この手順は、カスタム メッセージの特定のセットに対して 1 回だけ実行する必要があります。その後、新しいカスタム メッセージを MATLAB の他の ROS メッセージと同様に使用し、ROS Toolbox が提供する ROS のフル機能を活用することができます。メッセージ タイプを更新する場合や、新しいメッセージ タイプを作成する場合は、この生成手順を繰り返します。

ファイルのディレクトリが含まれる MATLAB パスを維持しなければなりません。

カスタム メッセージを使用したコード生成

カスタム メッセージ タイプ、カスタム サービス タイプ、およびカスタム アクション タイプ (ROS 2 IDL インターフェイス タイプを含む) を ROS 2 Simulink® ブロックおよび MATLAB 関数とともに使用して、スタンドアロン ROS 2 ノード用の C++ コードを生成できます。生成されたコード (.tgz アーカイブ) には、カスタム メッセージ定義および ROS 2 カスタム メッセージ パッケージが含まれます。生成されたコードを対象の Linux システムでビルドすると、カスタム メッセージ パッケージが colcon ワークスペースで自動的に使用可能になります。

アプリケーション用にカスタム メッセージ定義を MATLAB で変更した場合は、生成先の Linux システム上のカスタム メッセージ パッケージを削除し、C++ コードを再生成して、再展開する必要があります。

組み込みメッセージ定義のカスタム定義との置き換え

MATLAB は、多くの組み込み ROS 2 メッセージ タイプを提供しています。これらのメッセージ タイプの定義を、上記で詳述した同じカスタム メッセージ作成ワークフローを使用して、新しい定義と置き換えることができます。組み込みのメッセージ パッケージの定義を置き換える場合は、カスタム メッセージ パッケージ フォルダーに、対応する組み込みメッセージ パッケージのすべてのメッセージ タイプに対する新しい定義 (.msg ファイルまたは .idl ファイル) が含まれていることを確認する必要があります。

参考

|

トピック

外部の Web サイト