**********************************************************************
セッションS2a 講演・チュートリアル
テーマ:自動運転プラットフォームの実用化:ROS2で高信頼ソフトウェアの実装
講師:安積卓也氏 (埼玉大学)、Geoffrey Biggs氏(Tier4)
日時:2019/9/6(金) 9:00〜10:10
参加人数:42名(終了時)
**********************************************************************

■前半:安積卓也
・自動運転のAutoware実装例の紹介
例)郵便局で実装例、海外の企業が車を走らせた例

・自動運転のレベル
1.1つ
2.複数
3.すべて
4.ドライバーなし
5.場所すべて

・自動運転ソフトウェアの役割
あくまでドライバーの代わりの部分のみを担当する

・Autowareの構成
OSの上にミドルウェアのROS、アプリケーションが載った構成

・ROSについて
- Publish/Subscribe モデル: 処理をノードとして分割処理し、トピックを介して
データのやり取りを行う。
- rosbag: 実データの保存が可能 
- Rviz: 可視化ツール
- 自己位置推定技術: GNSS(信号の受信状況に影響)、LiDAR(下参照)、IMU
(どこでも使える)
- 高精度三次元地図: 点群の情報から線の情報を抽出する。
- LiDAR: センシング。人の検知。特徴のないエリアでは使えず。
- 環境認識:ディープラーニング(YOLOv3)を用いた物体認識

・ROS重要用語
- master
- node
- 通信プロトコル
- Topic

・経路計画(A*アルゴリズムを用いる)
1.目的地までの大まかな経路を決定
2.近くまでのなめらかな経路を決定
3.経路を追従する

・PurePursuit:仮想的な緑の玉を計算し、その通りに追従する
- Waypoint:連続的に目的点を取得。速度により点間の距離がかわる
- 曲率が計算できれば高校生レベルの物理でどうハンドルを切るべきかを計算して
くれる。

・その他の機能の紹介


■後半:Geoff氏
・ROSの歴史
- Willow Garageが創業したベンチャー企業。オープンソースが中心
- とあるユースケースのために開発された。ソフトウェアがROSでハードウェアは
Tier2という研究用のもの
- 現在はOpen Source Robotics Foundation

・ROS1の特徴
- ミドルウェアだけでなく、オープンプラットフォーム
- 開発をサポートする機能
- ツールが豊か
デバッグ機能の紹介。
ロボットはデータが大量、世界は停止できない → データの可視化

・ROS1の弱点
- 品質?安全性?
- Ubuntu依存
- 起動順番がランダム
- 100%自家製
- 不安定な通信

--- ROS2に移行しましょう(以下ROS2の特徴) ----------------------------------
・様々なOSがサポートされている
Tier1:Ubuntu、Windows、MAC
Tier2:Ubuntu
Tier3:Debian

・QA中心
- 開発プロセスの定義:アジャイル
- Kanbanで定義
- CIがマスト
- 設計議論がオープン

・標準化されたプロトコルの導入
- DDS(Data Distribution Service):OMGの標準規格。実装間の互換性がある。
- Quality of Service設定 UDPとTCPの細かいチューニングが可能

・Masterがなくなった
- メタデータはDDSで通信。電話帳でなくてDiscover。あるノードが落ちても問題ない。

・Component Nodeの導入
- 複数のノードが1つのプロセスに統合可能
- コンパイル時またはランタイムに決めることが可能

・実行管理ができるようになった
- ノードは振る舞いを定義
- Executarが実行管理
- ノードはLifecycleで実行

・全スタックがリアルタイムサポート
- クライアントライブラリ、ミドルウェアがリアルタイムに

・組込み可能なROSに
- マイコンがメインユースケースの一つ

・認証可能なROSへ
- 開発プロセスが追跡できた
- セキュリティは基礎からサポート

・ROS Bridge
- ROS1とのインタラクション
----------------------------------------------------------------------
・Autowareの問題
- ROS1と同じ問題がある。品質、認証、安全性の面で劣る

・Autoware.Autoの開発:ゼロから再開発。認証向き開発プロセス。ROS2ベース。

今後、現在のAutoware.AI主流からAutoware.Autoに少しずつ移行していく


■質疑応答
Q.安全認証について、コミュニティとして第三者認証機関に認証をとってリリースする?
A.オープソースは「誰が作ったの?」という疑問が出るため認証をとることは非常に難しい。
 コミュニティの認証取得を可能にするためにELISAというプロジェクトの協力が必要。
 ELISAはオープンソースソフトの認証を取ることに努めている。

Q.企業としてはTier4からの認証付きのものを買うか、コミュニティから買う場合は
自分たちで認証をとらなければいけないのか?またそのためのサポートは提示されますか?
A.自分たちでとる必要があります。サポートは出ると思います。そこはELISAに頼って
いるところでもあります。

Q.OSの移植にかかる手間はどんなものだとお考えですか?
A.OSによります。手間がかかる(1カ月)のもあればすんなり(1日)でうまくいく
ものもあると思います。

Q.DDSに関するテクニカルイシュー(研究課題)はありますか?
A.DDSは企業で使われている。強いて言えば、QOS周りをどう設定するのかです。
チューニングしにくいのが現在の難点。ROS2ではQOSプロファイルを提供しているがそれでも
まだチューニングは難しい。またセキュリティ関連の企画書は完ぺきとは言えないと
感じています。

Q.ROS2のサポート言語について
A.ROS2だとROS1よりも色々な言語がサポートされている。

Q.言語によってはリアルタイム性が取れないのでは?
A.そうです。認証向きの言語はCとC++だと考えています。

Q.認証にはドキュメントが大量に必要なのでは?それはオープンですか?
A.ドキュメントはオープンではありません。APEXから購入する必要があります。

Q.サポートのないものはディストリビュータから買う?
A.購入するか、それができる人を育てるかです。いいサポート体制はあまりありません。
 サポートがないから使わないという考え方ば日本特有で私は間違っていると思います。

■まとめ
自動運転のミドルウェアROS1の性能とその欠点を紹介。
ROS2で高信頼ソフトウェアの実装が可能に。
今後はROS1(Autoware.AI)の技術者をROS2(Autoware.Auto)にどんどん移行させていく方針。

以上。