MoriKen's Journal

MoriKen's Journal

アラサー社会人博士による徒然日記。技術についてつらつら。だけだとコンテンツが貧弱なので、会社公認で大学院博士課程に進学した経緯や、独学でTOEICを475→910にしたノウハウを共有します。

【ROS 2】ロードマップ(公式文書和訳)

Sponsored Link

ROS 2 公式文書(英語) 日本語訳シリーズです。

本ブログの日本語翻訳版のトップページは以下のリンクを参照下さい。

www.moriken254.com

※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 インタフェースを介した動的なリマップとエイリアス対応
  • 型マスカレード[***]
  • リアルタイムの安全性を強化する[***]
    • 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
  • RQt
    • もっと多くのプラグインを変換する[*依存性関係に問題がないものから個別に]
  • 診断機能

技術的負債の削減

  • 現在のコードベースに、テストの拡張とデバッグをする
    • 待機セットの不整合
    • コンポーネントよって生じるマルチスレッド問題
    • プロセス内通信のオーバーヘッド/待ち時間を削減
  • 不安定なテストを修正
  • ツールを使用して(すべての)単体テストを実行する機能(例:Valgrind)
  • API レビュー
  • 同期/調整機能の設計ドキュメントと実装
    • プレリリース版の再レビュー(API、ドキュメントなど)
  • 保留中のチケットの宛先指定/分類
  • コード/ドキュメントで TODO 対応

翻訳元文書

index.ros.org

関連記事

www.moriken254.com

www.moriken254.com

www.moriken254.com