ROS 2 公式文書(英語) 日本語訳シリーズです。
本ブログの日本語翻訳版のトップページは以下のリンクを参照下さい。
※2019/05/06 現在のものです。
このリリースに含まれる予定の詳細については、近日発売予定の Dashing Diademata のページを参照してください。
今後のディストリビューションのスケジュールと情報についてはディストリビューションのページをご覧ください。
ROS 2 の設計に関する詳細は design.ros2.org をご覧ください。 ROS 2 のコアコードは ros2 github Organization にあります。 ROS 2 の設計について議論するための Discourse フォーラム/メーリングリストは ng-ros です。 質問は ROS answers にてお願いします。投稿の際は、ros2
タグと、実行中のrosdistro
のバージョン(例:ardent
)を必ず含めてください。
機能のアイデア(順不同)
設計 / コンセプト
- IDL(Interface Definition Language)フォーマット:ROS インタフェース(msgs、srv、actions)を指定するために IDL 4.2 を使う
- メッセージ/サービスでの非 ASCII 文字列のサポート
- グループ化やさまざまな注釈(コメント、単位)などの新機能の活用
- .idl ファイル対応:定数や、範囲を指定したパラメータの宣言
- 移行計画の進捗
- DDS における ROS ノードの1対1マッピングの再検討
- ノード名の一意性を確保
- Python ベースの launch における、オプション設定XML or YAML(フロントエンド向け)
インフラとツール
ビルド
- 「大容量」パッケージ/アーカイブ生成のサポート
- Windows と Mac OS のパッケージ
ドキュメント
- ドキュメントプラットフォームを改善する
- ROS 2 buildfarm での
docジョブ
のサポート - design.ros2.org との統合を検討
- 3種類のコンテンツを提供
-「デモ」:機能を表示し、テストでカバー
-「サンプル」:単純/最小限の使用法の提示(複数の手段がある場合にそれぞれ端的に示す)
- 「チュートリアル」:Wiki に対するコメントやリンクを含む(推奨される方法の一例を教示する)
新機能
末尾の星は、大まかな成果の大きさを示しています。1つ星が小さい、2つ星が中、3つ星が大です。
- Pythonでのアクション
- ログ機能の改善[* / **]
- ファイルで指定された構成
- C++ストリーム演算子
- コンソール出力の色付け
- パラメータ
-コマンドライン引数で個々のパラメータを設定する(yamlファイルを渡す代わりに)
- 値の範囲を指定
- 読み取り専用パラメータの定義
- 追加の Graph API 機能[** / ***]
- ROS 1 Master API に準拠:ROS/Master_API - ROS Wiki
- イベントベースの通知
- 拡張には
rmw
インターフェースの知識が必要
- リマップ[** / ***]
- Service インタフェースを介した動的なリマップとエイリアス対応
- 型マスカレード[***]
- ROS 1 のメッセージ特性に準拠:http://wiki.ros.org/roscpp/Overview/MessagesSerializationAndAdaptingTypes
- 型サポートシステムの知識が必要
- リアルタイムの安全性を強化する[***]
- FastRTPS の使用
- サービス、クライアント、およびパラメータ
- Executor で実行可能ファイルの決定論的順序付けをサポート(公平なスケジューリングの実現)
- リアルタイムパフォーマンスに関連する QoS パラメータの更なる公開
- リアルタイムで安全なプロセス内メッセージ通信
- マルチロボットサポート機能とデモ[***]
- 全ロボットに関わるノードが全て同一ドメインを共有(+互いに検出)する状態にはしたくない
- システムを「分割」する方法を設計する
- Cクライアントライブラリ
rclc
の実装[**] - 更なる DDS / RTPS 実装のサポート
- 動的接続[*]
- RTI の最小限の実装[*]
- Eclipse Cyclone DDS(旧ADLINK OpenSplice)[*]
- セキュリティの向上
- セキュリティ設定の細分化(認証のみ許可、認証と暗号化を許可、等々)[*]
- アクセス制御許可生成をサービスに拡張する[*]
- DDS-Security ロギングプラグインを統合する(セキュリティイベントを集約し、それらを ROS I/F を通してユーザーに報告する方法の統一化)[**]
- 認証鍵保管のセキュリティ(現状、認証鍵はファイルシステムに格納されているだけ)[**]
- よりユーザーフレンドリーな I/F(セキュリティ設定の簡単化)。おそらく Qt の GUI?この GUI は、認証鍵の配布にも役立つ [***]
- 現在実行中の全モジュールに対して鍵とポリシーを自動生成する UI を利用し、「この実行中のシステムを保護してください」とユーザに警告できる機能[***]
- 鍵を保護したり、暗号化/署名メッセージを高速化するためのハードウェア固有の機能がある場合は、それをまだ使用していないDDS / RTPS 実装に追加するのも面白そう[***]
既存の ROS 1 機能の移植
Perception
メタパッケージ- 画像パイプライン
- 待ち時間/オーバーヘッドを減らすためプロセス内通信の改善
MoveIt
- アクションが必要
- Moveit メンテナが対応中:https://discourse.ros.org/t/moveit-maintainer-meeting-recap-july-25th-2018/5504
- RQt
- もっと多くのプラグインを変換する[*依存性関係に問題がないものから個別に]
- 診断機能
技術的負債の削減
- 現在のコードベースに、テストの拡張とデバッグをする
- 待機セットの不整合
- コンポーネントよって生じるマルチスレッド問題
- プロセス内通信のオーバーヘッド/待ち時間を削減
- 不安定なテストを修正
- ツールを使用して(すべての)単体テストを実行する機能(例:Valgrind)
- API レビュー
- 同期/調整機能の設計ドキュメントと実装
- プレリリース版の再レビュー(API、ドキュメントなど)
- 保留中のチケットの宛先指定/分類
- コード/ドキュメントで TODO 対応