メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

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

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

カスタム メッセージの作成には ROS 2 パッケージが必要です。パッケージの詳細については、ROS Wiki の ROS 2 Packages で説明しています。カスタム メッセージ用の有効な ROS 2 パッケージがあることを確認したら、カスタム メッセージ パッケージのフォルダーがある場所のファイル パスを指定して ros2genmsg を呼び出し、カスタム メッセージの使用に必要な MATLAB コードを生成します。MATLAB で ROS 2 カスタム メッセージを生成する方法の例については、共有可能な ROS 2 カスタム メッセージ パッケージの作成を参照してください。

ROS 2 カスタム メッセージをはじめて使用する場合は、ROS Toolbox システム要件を確認してください。

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

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

メモ

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

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

Custom message folder structure. The top level package ros2CustomMessages contains three folders- msg, srv, and action which contain the generated custom messages, services and actions respectively.

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

メモ

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

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

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

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

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

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

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

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

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

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

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

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

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

参考

|

トピック