Simulink での ROS メッセージの配列サイズの管理
ROS メッセージはバスとして表されます。バスの詳細については、合成インターフェイスのガイドライン (Simulink)を参照してください。
Simulink® で可変長信号を処理している場合、メッセージに使用される非バーチャル バスにはプロパティとして可変長配列を含めることはできません。非バーチャル バスでは、可変長配列はすべて固定長配列に変換されます。そのため、これらの固定サイズの配列の最大サイズを管理しなければなりません。
Simulink モデルが ROS 用に構成されていることを確認します。まだの場合は、以下の手順に従います。
[アプリ] タブの [制御システム] にある [Robot Operating System (ROS)] をクリックします。
開いた [ROBOT OPERATING SYSTEM (ROS)] ダイアログ ボックスで、[ROS ネットワーク] ドロップダウンから
[ROBOT OPERATING SYSTEM (ROS)]
を選択します。これにより、ツールストリップで [ROS] タブが開き、[接続] セクションに指定した ROS ネットワークが表示されます。
次に、配列のサイズを管理するには、[シミュレーション] タブで [ROS Toolbox]、[可変サイズのメッセージ] を選択します。可変長配列の ROS メッセージがモデルで使用されている場合、次のダイアログ ボックスが開きます。それ以外の場合、Simulink はメッセージを表示します。
メッセージのプロパティは可変長となっているため、配列に対して設定された最大サイズを超過すると打ち切られる可能性があります。[警告して打ち切る]
または [警告なしで打ち切る]
のオプションがあります。いずれの場合でもシミュレーションは実行されますが、[警告して打ち切る]
の場合は、メッセージのプロパティが打ち切られたことを通知する警告が診断ビューアーに表示されます。生成コードを使用している場合、ROS のログ ステートメントを使用して警告が出力されます。警告のログ ステートメントは ROS_WARN_NAMED
であり、name はモデル名となります。
[モデル内のメッセージ タイプ] セクションには、Simulink モデルの Publish、Subscribe、Blank Message の各ブロックで現在使用されているすべての ROS メッセージ タイプが表示されます。チェック ボックスをクリックすることで、このメッセージ タイプの既定の範囲を使用できます。あるいは、各メッセージ タイプを個別に選択し、必要に応じて [配列プロパティ] の [最大長 (項目数)] を設定します。最大長は当該モデル内で、当該メッセージ タイプをもつすべてのインスタンスに適用されます。また、最大長はモデルに保存されます。そのため、同じメッセージ タイプにアクセスする 2 つのモデルでそれぞれ異なる最大長の範囲を設定できます。
可変長配列のサイズ管理を通してパフォーマンスを向上できます。関連するデータのみが含まれるように配列のサイズを制限することで、データを効果的に処理できます。ただし、これらのモデルを実行する場合は、打ち切りに関連して発生し得る問題や、一部のデータが無視されることでシステムに与える影響を考慮してください。
メモ: 各種のメッセージ タイプの適切な最大長を把握するには、モデルをシミュレートして警告のサイズ出力を確認します。ROS メッセージの使用と可変長配列の処理の例については、Get Started with ROS in Simulinkを参照してください。