自動運転システムのCI/CDとは? Webシステムとの違いってなんだ

1.2K Views

February 02, 21

スライド概要

発表者:徳永誠

2021年1月29日に行われた「Tier IV 自動運転Web&Dataミートアップ」のプレゼン資料です

https://tier4.connpass.com/event/198897/preview/

profile-image

自動運転の民主化 Intelligent Vehicles for Everyone

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

自動運転システムのCI/CDとは? Webシステムとの違いってなんだ 徳永 誠 Jan. 29th, 2021 1

2.

自己紹介 徳永 誠 アルゴリズムやデータ構造に興味がある Backend エンジニアです vios-fish CI/CD TeamのLead Tier IVには入社3年目。(3年目で古株扱いされま す) Tier IV 釣り部部長 最近は Rust+WASMでたまに遊んでます 2

3.

CONTENTS 自動運転システム とCI/CD 04 13 CI/CD Dashboard 自動運転開発の難しさ Rosbag Viewer CI/CDとは CI/CDの詳細 プロダクト紹介 Scenario Editor 08 テスト戦略 Simulatorを利用したCI 自動運転システムのDelivery 3

4.

自動運転システムとCI/CD 4

5.

自動運転システム開発の難しさ 高い安全要求 ハードウェア 人を轢かないことを保証する システム 決まったことの変更が難しい 熱・電力などハード固有の問題 小さなプログラムによる大きなシステム 難しい要件定義 100以上のプロセスが協調して動作 実際に動かして分かる要件の追加・変更 自動運転システムの世界はこれから 5

6.

実現するために ウォーターフォールなV字型開発とアジャイル的な開発フローを部分的に採用 1. V字型 a. ハードウェアに関わる開発 b. 安全性品質に関わる要求分析・設計・検証 2. アジャイル型 a. ソフトウェア/アルゴリズムの開発 b. 要件の追加・変更 V字型 開発計画 アジャイル型 0.5~1.0 years 安全コン セプト 設計 仕様 評価 計画 2 wks 評価 結果 6 Ticket 1

7.

CI/CDの意義 Continuous Integration(CI)とContinuous Delivery(CD)の略称 2つの開発フローをつなげるためにより早いFeedBackを回したい - お互いに全く関係せずに開発が実施されることはない V字型でも、最初に要求がすべて洗い出されることは難しい (そもそも自動運転が未知の世界) Agile型でも、安全性や品質をないがしろにしていいわけではない V字の手戻りを最小限に抑える Agileな変化にも耐えうる安全性・品質の担保 7

8.

CI/CDの詳細 8

9.

テスト戦略 皆さんどういったテストを行ってますか? 一般的なWebシステムであればこういう分け方が多いのでは? テスト数 コスト スコープ 単体テスト 結合テスト 機能テスト UI(受け入れ)テスト 非機能テスト 9

10.

自動運転のテスト戦略 ソフトウェアのテストは大きく変わらないが、実際のハードウェア・車両を用い たベンチテスト・Fieldテストが含まれる CI/CDチームでは、コストやスコープ、実現可能性を考慮し結合テストを対象に テスト数 コスト スコープ 単体テスト 結合テスト 機能テスト ベンチ環境でのテスト Fieldテスト 非機能テスト 10

11.

Simulatorを利用したCI シナリオベースのPlanning Simulatorを用いたテスト - 一度の実行が低コストで、地図や一部コンポーネントをインテグレーション したテストが行える シナリオ = テストの前提条件・事後条件が明記 - 事前条件: 自動運転車・登場人物(他車両・歩行者・自転車 etc.)・地図 事後条件: どういう状況になれば成功/失敗なのか Ex. 自動運転車が歩行者にぶつからずに目的地にたどり着いたら成功 シナリオ 地図 自動運転システム with simulator Result 11

12.

自動運転システムのDelivery まだまだContinuousとは言い難い - Webシステムのように継続的にアップデートされる状態でどうやって安全性 を担保するのか 実車での評価が終わってないものをリリースするわけにはいかない 自動運転車の台数に対してスケールさせるために、構成管理・OTA(遠隔)アップデ ートができるようになっておく必要がある - システムのアプリケーションのみを管理 差分アップデートサポート 12

13.

プロダクト紹介 13

14.

プロダクト紹介 CI/CD Dashboard / Rosbag Viewer 社内の自動運転システムに特化したCIサービス - ソースコード変更でのトリガの実行 or Adhocな実行 - rosbagデータ(システム内通信のログデータ)の保存 - 実行結果のグラフィカルなWeb表示 Scenario Editor テストのシナリオ記述をサポートするツール - グラフィカルに車両の挙動を記述できる - 過去にビルドされたイメージを用いて、編集したシ ナリオをWeb上ですぐに実行可能 14

15.

CI/CD Pipelineのアーキテクチャ GitHub ECR DynamoDB S3 Code Base Docker Image シナリオ単位 で分散 Pull Request User Kick Map Test Scenarios Batch テスト分散 Lambda パラメータスイープ OTA Package Docker Image Batch Job を登録 スポットインスタン ス上で実行 Test Report Batch Docker Image S3 Build ECR DynamoDB Test 15

16.

Batch Computing Environment / ECS Cluster 工夫している点 (1/2) Docker Layer Cache ベースイメージはクリーンアップしないなどのECS Container Agentのチューニング. 敢えて、ベースイメージを中間レイヤーではなく 、明示的なイメージとして管理. EC2 Instances ECS Container Agent ライフサイクル 管理 ホストマシンのボリュームに置くことで、Job間で 再利用. ディスクフルを避けるためにtmpfsを利用. ライフサイクル 管理 EBS / Docker Layer Storage Docker Image Map Cache systemd-tmpfiles Base Docker Image 保存 / 取得 Batch Job / ECS Task Docker Container tmpfs PCD Map Vector Map 保存 / 取得 Batch Job / ECS Task Docker Container 16

17.

工夫している点 (2/2) ブラウザ上でのSimulatorのTrial Run 過去にBuildしたImageを利用した簡易実行機能の提供. シナリ オを編集し、実行確認がブラウザ上で完結. 実行環境のRuntime化 開発者のPCに存在するSimulatorを用いてCI実行時と同様の環 境を提供. 開発者のデバッグをサポート. Firmware依存処理のプラグイン化 開発が過渡期で複数のFirmware(ROS, ROS2など)の管理が必要. Firmware依存部分をプラガブルにし、開発・管理効率改善. シナリオTrial Runのアーキテクチャ図 17

18.

今後の展望 結合テストだけでなく、ベンチ/FieldテストとサポートできるTestBedの拡大 - 開発者がテストの結果、FeedBackを素早くもらえるシステムづくり OTAアップデートでアプリケーションだけでなく、OS, Middlewareも含めた環 境管理・アップデートの実施 18

19.

© 2021 Tier IV, Inc. 19