主要内容

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

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

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

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

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

ROSカスタムメッセージをはじめて使用する場合は,ROS系统需求を確認してください。

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

ROSカスタムメッセージは,味精および深水救生艇ディレクトリを含むROSパッケージフォルダー内に指定されます。

メモ

どの時点でも,MATLABパス上のカスタムメッセージフォルダーは1つのみでなければなりません。このフォルダーには複数のパッケージを含めることができます。すべてのパッケージを 1 つの固有のフォルダーに維持することを推奨します。

味精フォルダーには,すべてのカスタムメッセージタイプ定義が含まれています。また,深水救生艇フォルダーには,すべてのカスタムサービスタイプ定義を追加しなければなりません。たとえば,パッケージcustom_robot_msgsのフォルダーとファイルの構造は次のとおりです。

このパッケージでは,1つのカスタムメッセージタイプがRobotTopic.msgに含まれ1つのカスタムサービスタイプがRobotService.srvに含まれています。MATLABはこれらのファイルを使用して、パッケージに含まれるカスタム メッセージを使用するために必要なファイルを生成します。味精および深水救生艇ファイル作成の詳細については,ROS Wikiの创建ROS消息和srv定义自定义消息を参照してください。これらのファイルの構文は,味精深水救生艇についてのページで説明されています。

メモ

  • カスタムメッセージフォルダーに対する書き込みアクセス権限がなければなりません。

  • どの時点でも,MATLABパス上のカスタムメッセージフォルダーは1つのみでなければなりません。このフォルダーには複数のパッケージを含めることができます。すべてのパッケージを 1 つの固有のフォルダーに維持することを推奨します。

  • ROSアクションはサポートされておらず,カスタムメッセージ生成の際に無視されます。

メッセージフィールドからのプロパティの命名

ROSメッセージ定義がMATLABに変換されると,フィールド名がメッセージオブジェクトのプロパティに変換されます。オブジェクトプロパティは常に大文字で始まり,アンダースコアは含まれません。フィールド名はこの命名規則に従って変更されます。最初の文字と,アンダースコアの直後の文字が大文字になり,アンダースコアは削除されます。たとえば,sensor_msgs /形象メッセージには,ROSでは次のフィールドがあります。

头高度宽度编码is_bigendian步长数据

変換されたMATLABプロパティは次のようになります。

头高度宽度编码是bigendian步骤数据

これは,ROSメッセージを仿真金宝app软件®で使用するときにも反映されます。ROSメッセージバスは,MATLABと同じプロパティ名を使用します。

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

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

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

関数rosgenmsgによってこれらのファイルが作成された後,クラスファイルをMATLABパスに追加しなければなりません。これらの手順は,MATLABコマンドウィンドウのプロンプトとして示されます。

  1. クラスファイルの場所をMATLABパスに追加目录を使用して。m拡張子のファイルの新しい場所をMATLABパスに追加し,savepathを使用して変更を保存します。

  2. すべてのメッセージクラス定義を更新します。これには,以下のとおりワークスペースをクリアする必要があります。

    清晰的重新处理toolboxcache

  3. メッセージが使用可能であることを確認rosmsg列表または関数rosmessageを使用して,新しいカスタムメッセージが使用可能であることを確認します。

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

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

ファイルのディレクトリが含まれるMATLABパスを維持しなければなりません。MATLABパスに、カスタム メッセージ アーティファクトが含まれるフォルダーが一度に 1 つだけ存在することを確認してください。

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

カスタムメッセージタイプとカスタムサービスタイプをROS仿真软件ブロ金宝appックとともに使用して,スタンドアロンROSノード用のc++コードを生成できます。生成されたコード(. tgz归档)には,カスタムメッセージの模型定義が含まれ金宝appますが,ROSカスタムメッセージパッケージは含まれません。生成されたコードが生成先のLinuxシステム内でビルドされる際には,カスタムメッセージパッケージが柔荑花序ワークスペースまたはROS_PACKAGE_PATH上で使用できる必要があります。生成されたコードをビルドする前に,Linuxシステムにカスタムメッセージパッケージを確実にインストールまたはコピーします。

参考

|

関連するトピック