**********************************************************************
セッションS2-a
テーマ :次世代ロボットフレームワークROS2の紹介[ESS2018企画セッション]
講師 :Geoffrey Biggs
日時 :2018/8/31 9:00~10:10
参加人数:48名(開始時)
**********************************************************************

・アジェンダ
○なぜROSが存在するのか
○ROS1について
○ROS2について
○ROS 1とROS2の違い
○これからのROS2
○まとめ

ロボットもROSもわからない人のためになぜROSが存在するか
についてから話します。

<なぜROSが存在するのか>
 ロボットソフトウェアを開発するには様々な障害が存在する。
 そのために開発者はロボットソフトウェアフレームワークを利用する。
 ロボットソフトウェアは分散が可能でリアルタイム性が重要視される。
 ロボットソフトウェアフレームワークは20年前からオープンソースであることが
 大事だと言われている。

・ロボットソフトウェアの歴史
 初期段階ではソフトウェアは完全にカスタムであった。
 自分で研究する際に開発企業のカスタマイズに縛られるため非常に自由度が少なかっ
 た。それを解決するためにPlayerを開発しました。
 Unixの考え方を導入し非常に自由にカスタマイズできるようになった。
 数年以内に爆発的に人気になり、ロボット世界ではPlayerを使ってないと馬鹿にされ
 るレベルだった。

・ROSの登場
 Playerの開発者が2007年にROSを開発した。ROSはどんどん大きくなっていっている。
 ROSは1つのことに特化しているわけではなく色々なことができるのが特徴である。
 シュミレーターのおかげで研究が進みやすくなった。
 そこからツールも爆発的に開発されていった。ROSのメインシュミレーターはarenaか
 らきた。



・ROS
 ROSの目的はロボットを作るためのフレームワークだけでなくオペレーティングシステ
 ムである。
 ROSの考えはフレームワークだけでなくプラットフォーム全体を示す。


・使用例
 ROSは走行用ロボットや自動運転、さらにナビゲーションシステムなどに利用
 されている。
 他にアメリカではホテル内でのロボットが人気になった。
 特徴としてみんな同じROSの機能を利用することできる。

・コミュニティ
 コミュニティとしてROSConが存在し、2012年から毎年行われている。
 ROSConのコミュニティは爆発的に大きくなっていっている。
 中国のサマーキャンプに3百人が参加していた。

・日本でのROSの人気
 日本では昔ランキングに入らないほど使用者が少なかったが、一気に人気になり世界
 3位になった。

・なぜROSがこれほど利用されているのか
 ロボット開発にツールは必須とされており
 その中でROSはオープンで公開されており、多くのツールが含まれているので人気が出
 た。

・デバッグ作業
 ロボットだと数値の羅列になり、データが大量なためデバッグが不可能である。
 そのため可視化が必要でROS内のツールを用いることでロボットの考えていることなど
 も可視化可能になった。



・なぜもうROS2?
 日本で人気になってから数年だがROS1が登場してから10年経っている。

・コンポーネント間の通信を活動の中心に
 それ以外はポ—ティングと改善が行われている。
 イメージとしては家は変わってないけど基礎が変わったからできることは変わった。

・ROS1での問題
 リアルタイムと非リアルタイムの混合やCPUやメモリの少ないマイコンでは利用できな
 いなどの問題があった。
 また企業にとっての問題としてはリアルタイムが難しいやUbuntuではないと使いにく
 い、組み込みシステムは不可能などが挙げられる。
 ROS2ではこれらの問題を解決した。


<二つの違い>
・ROS1の構造の特徴
 Masterが落ちるとアプリケーションが終わる。
 自家製のプロトコルなのでできないことが多い。

・ROS2の構造
 Masterがない。
 ノードがシステムのニーズに合わせて別々のプロセスでも
 同一プロセスでも実行可能。
 DDSを採用した。

・DDS
 信頼性が高いプロトコルで出力されたデータはチャネルに入る。
 OMGの標準規格であり安全認証版のためROS1と違い安全性を自分で証明する
 必要がない。

・QoS設定
 ROS1ではチューニングすることができなかったがROS2では細かいチューニングが可能
 である。

・Masterの排除
 必要になるときに場所がわかる。

・サイクルの違い
 ROS1ではノードの実行は管理できない。
 ROS2ではノードの実行は管理可能であり決定的実行が可能になった。

・リアルタイム可能
 全システムがリソースを獲得し実行可能なときに実行できる。

・組み込みROS
 OSなしでの小さいマイコンでROS2を使った。

・開発プロセス
 ROS1では追加したい機能次々に追加していった。
 ROS2ではアジャイル開発を行いかんばん方式により管理を行った。

・認証可能なROSへ
 セキュリティは基礎からサポートがある。
 DDS-security企画に合格

・ROS1とインタラクション
 ブリッジによりROS1のシステムとROS2のシステムが通信可能に

<これからのROS2>
・利用が加速
 Rosconの発表の半分はRos2であり企業が利用している。

・リリースサイクルは半年
 次は12月17日にリリース予定である。

・実装予定
 アクションの実装

・開発に参加可能
 Waffle.io/ros2/ros2

・Rosのチュートリアル
 https://gbiggs.github.io/rosjp_ros2_intro/


<質疑応答>

・安積(埼玉大学)
<質問1>
 DDSには種類がいくつかあるがどれを選べばいいのか?
 RTIがいいと聞くが違いは?

<回答1>
 RTIは経歴が長く信頼性が高い
 OpenSpliceも人気が高い
 この二つならそこまで差がない
 両方無料でダウンロードして試せるので実際に試した好きな方を使ったらいい

 開発で差が出るのはサポート
 問題が起きた時にどのくらい早く対応してくれるのか
 OpenSpliceはわからないがRTIのサービスは良い
 企業用ではなくオープンソースならFastRTPSでもよい
 QOS管理とかが大事であればRTIやOpenSpliceがいい

<質問2>
 複数のDDSが混在したときサポートしているQOSが違ったらどうしたらいいのか?

<回答2>
 基本的にROS2としては同一に扱っている
 しかしRTI,OpenSplice,FastRTPS以外ではすぐに使えず自分で処理する必要があり問題
 になる
 RTIだと細かくチューニングできる


・菅谷(芝浦工大)
<質問1>
 リアルタイムOSの上でROS2動かした場合どのくらいのリアルタイム性が実現できるの
 か?Qnx以外で既に使えることが確認できているRTOSがあれば教えて欲しい

<回答1>
 実験ではより小さくできた
 Unix以外ではデータを見ていないのでどこまでできるか分からない
 Qnxは他の人が試しているらしい
 日本のルネサスという会社が詳しい


<質問2>
 RTフレームというのはリアルタイムのプレエプションといったリアルタイム拡張のOS
 といった理解でよろしいでしょうか

<回答2>
 RT Preemptというのはカーネルのパッチ
 ロックの変更をするパッチでリアルタイムもできるようになる
 ただサポートはちょっと微妙
 Ubuntuで使いにくいなどの問題がある


・質問者(匿名)
 アクティベイティング状態の時に非リアルタイムノードを実行してしまって
 アクティブ状態になった時に実行するとのことですが
 そういう風に書くっていうのは設計者に任せるのか?

<回答>
 そうです
 ノードの設計者次第です


・質問者(匿名)
 ROSの考え方はロボット以外にも使えるのでは?
 ロボットが対象だからこういう特別性があるっていうのを教えていただきたい

<回答>
 私自身はロボット以外で使われている例は分からない
 ROS1は使われているけどそこまでではない
 IoT系にはあまり向いていないから、でもROS2は割と使われているらしい
 先日インテルがIoT用の推進例を作ったらしいけど名前は忘れました
 ROS2用のDDPSを作った
 インテルのような大きな会社でもROS2はロボット以外でも使えると考えている
 私はこれから分散組み込みシステムに利用されると考えている

・安積(埼玉大学)
 ROS2の対故障性で保障されているものはありますか?

<回答>
 あります
 まだ開発中だが6月にリリースしたバージョンではイベント管理の考えを取り入れ
 ノードが落ちた時にイベントがどう来るかを作成できるので非常にやりやすくなる
 ROS2ではノード落ちるだけでなく様々なイベントに対応できるようになるので
 非常に管理しやすいシステムになります
 将来はGUIで管理できるようになるだろう


・質問者(匿名)
 ROS2でやり残したことまだできていなことはありますか?

<回答>
 まだ色々ある
 ROS1には様々な機能があり、それを1からやり直しているので
 どこまでできるかという話
 今ROS2はROS1と結構似てるぐらいの機能はできているが、ROS1のアクション(機能)
 がROS2では全く(実装されてい)ない、やり始めているので次には入ると思う
 Rvizで可視化できるデータが少ない、インフラの方は結構できている


・菅谷(芝浦工大)
<質問1>
 ROS2の中リアルタイム性が保障されているプロトコルのバラエティを教えてほしい

<回答1>
 基本的にはDDSがメインでサポートされている
 他のプロトコルも他の方がサポートを出している
 インテルのIOTも今週から正式にサポートされるようになった
 みんなDDSを使っているし信頼性の問題もない

<質問2>
 プロトコルの場合ではTCP/UDPに置き換えられるのかそれとも上にあるのか

<回答2>
 それはプロトコル次第
 DDSは実装次第がほとんどは上で実装されている


■まとめ
最初にロボットやROSについて詳しくない人ためにロボットソフトウェアについての紹介
を行った。そして現在公開されているROS1の紹介をしてから本講演のメインテーマであ
るROS2の紹介をした。
既存のROS1での問題点を述べ新たに開発されたROS2では既存の問題が解決されているこ
とを紹介した。そして最後に現在開発中のROS2がどのような目的を達成するために開発
が続けられているかを述べた。