ROS 2 公式文書(英語) 日本語訳シリーズです。
本ブログの日本語翻訳版のトップページは以下のリンクを参照下さい。
※2019/05/07 現在のものです。
ROS 2 インターフェース定義言語(IDL)は ROS 1 IDL と密接に関連しています。ほとんどの既存のROS 1 .msg
および .srv
ファイルは、ROS 2 とそのまま使用できます。その既存機能に加えて、ROS 2 IDL には新しい機能が導入されています。
有界配列:
- ROS 1 IDLは無制限配列(例えば
int32[] foo
)と固定サイズ配列(例えばint32[5] bar
)が使えますが、ROS 2 IDL はさらに有界配列(例えば `int32[<=5] bat)が使えます。 - 常時膨大なメモリ空間を使用することなく、かつ配列のサイズに上限も設けることが重要となるユースケースがあります(例えば、実行中に使用されるすべてのメモリを事前に割り当てる必要があるリアルタイムシステムが好例です)。
- ROS 1 IDLは無制限配列(例えば
有界文字列:
- ROS 1 IDL は無制限文字列(例えば、
string foo
)を使えますが、ROS 2 IDL はさらに有界文字列(例えば、string≦5 bar)を使えます。
- ROS 1 IDL は無制限文字列(例えば、
デフォルト値:
- ROS 1 IDL は定数フィールド(例えば
int32 X=123
)を使えますが、ROS 2 IDL はさらにデフォルト値(例えばint32 X 123
)の指定ができます。 - デフォルト値は、メッセージ/サービスオブジェクトを作成するときに使用され、後でフィールドに代入することで上書きできます。
- 注意:ROS Ardent では、デフォルト値は複合型、文字列配列、またはエンコーディング付き文字列ではサポートされていません。
- 注:ROS Bouncy では、デフォルト値は複合型またはエンコーディング付きの文字列ではサポートされていません。
- ROS 1 IDL は定数フィールド(例えば