Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
徳永 誠
自動運転システムのCI/CDとは?
Webシステムとの違いってなんだ
Jan. 29th, 2021
1
自己紹介
アルゴリズムやデータ構造に興味がある
Backend エンジニアです
Rust+WASMでたまに遊んでます
徳永 誠
最近は
Tier IVには入社3年目。(3年目で古株扱いされま
す)
Tier IV 釣り部部長
CI/CD Tea...
CONTENTS
自動運転システム
とCI/CD
自動運転開発の難しさ
CI/CDとは
CI/CDの詳細
テスト戦略
Simulatorを利用したCI
自動運転システムのDelivery
プロダクト紹介
CI/CD Dashboard
Rosb...
自動運転システムとCI/CD
4
自動運転システム開発の難しさ
高い安全要求 ハードウェア
小さなプログラムによる大きなシステム 難しい要件定義
100以上のプロセスが協調して動作
決まったことの変更が難しい
熱・電力などハード固有の問題
人を轢かないことを保証する
システム
...
実現するために
ウォーターフォールなV字型開発とアジャイル的な開発フローを部分的に採用
1. V字型
a. ハードウェアに関わる開発
b. 安全性品質に関わる要求分析・設計・検証
2. アジャイル型
a. ソフトウェア/アルゴリズムの開発
b....
CI/CDの意義
Continuous Integration(CI)とContinuous Delivery(CD)の略称
2つの開発フローをつなげるためにより早いFeedBackを回したい
- お互いに全く関係せずに開発が実施されることはな...
CI/CDの詳細
8
テスト戦略
皆さんどういったテストを行ってますか?
一般的なWebシステムであればこういう分け方が多いのでは?
単体テスト 結合テスト
機能テスト
UI(受け入れ)テスト
非機能テスト
テスト数
スコープ
コスト
9
自動運転のテスト戦略
ソフトウェアのテストは大きく変わらないが、実際のハードウェア・車両を用い
たベンチテスト・Fieldテストが含まれる
CI/CDチームでは、コストやスコープ、実現可能性を考慮し結合テストを対象に
単体テスト 結合テスト
機...
Simulatorを利用したCI
シナリオベースのPlanning Simulatorを用いたテスト
- 一度の実行が低コストで、地図や一部コンポーネントをインテグレーション
したテストが行える
- シナリオ = テストの前提条件・事後条件が明...
自動運転システムのDelivery
まだまだContinuousとは言い難い
- Webシステムのように継続的にアップデートされる状態でどうやって安全性
を担保するのか
- 実車での評価が終わってないものをリリースするわけにはいかない
自動運転...
プロダクト紹介
13
プロダクト紹介
CI/CD Dashboard / Rosbag Viewer
社内の自動運転システムに特化したCIサービス
- ソースコード変更でのトリガの実行 or Adhocな実行
- rosbagデータ(システム内通信のログデータ)の保...
CI/CD Pipelineのアーキテクチャ
OTA Package
Map
パラメータスイープ
Batch Job を登録
スポットインスタン
ス上で実行
Code
シナリオ単位
で分散 テスト分散
Docker Image Batch
S3...
工夫している点 (1/2)
Batch Computing Environment / ECS Cluster
EC2 Instances
Batch Job / ECS Task
EBS / Docker Layer Storage
ECS ...
工夫している点 (2/2)
過去にBuildしたImageを利用した簡易実行機能の提供. シナリ
オを編集し、実行確認がブラウザ上で完結.
ブラウザ上でのSimulatorのTrial Run
開発者のPCに存在するSimulatorを用いてC...
今後の展望
結合テストだけでなく、ベンチ/FieldテストとサポートできるTestBedの拡大
- 開発者がテストの結果、FeedBackを素早くもらえるシステムづくり
OTAアップデートでアプリケーションだけでなく、OS, Middlewar...
© 2021 Tier IV, Inc. 19
Upcoming SlideShare
Loading in …5
×

of

自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 1 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 2 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 3 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 4 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 5 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 6 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 7 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 8 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 9 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 10 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 11 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 12 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 13 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 14 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 15 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 16 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 17 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 18 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Slide 19
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0 Likes

Share

Download to read offline

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

Download to read offline

発表者:徳永誠

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

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

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

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

  1. 1. 徳永 誠 自動運転システムのCI/CDとは? Webシステムとの違いってなんだ Jan. 29th, 2021 1
  2. 2. 自己紹介 アルゴリズムやデータ構造に興味がある Backend エンジニアです Rust+WASMでたまに遊んでます 徳永 誠 最近は Tier IVには入社3年目。(3年目で古株扱いされま す) Tier IV 釣り部部長 CI/CD TeamのLead 2 vios-fish
  3. 3. CONTENTS 自動運転システム とCI/CD 自動運転開発の難しさ CI/CDとは CI/CDの詳細 テスト戦略 Simulatorを利用したCI 自動運転システムのDelivery プロダクト紹介 CI/CD Dashboard Rosbag Viewer Scenario Editor 04 08 13 3
  4. 4. 自動運転システムとCI/CD 4
  5. 5. 自動運転システム開発の難しさ 高い安全要求 ハードウェア 小さなプログラムによる大きなシステム 難しい要件定義 100以上のプロセスが協調して動作 決まったことの変更が難しい 熱・電力などハード固有の問題 人を轢かないことを保証する システム 実際に動かして分かる要件の追加・変更 自動運転システムの世界はこれから 5
  6. 6. 実現するために ウォーターフォールなV字型開発とアジャイル的な開発フローを部分的に採用 1. V字型 a. ハードウェアに関わる開発 b. 安全性品質に関わる要求分析・設計・検証 2. アジャイル型 a. ソフトウェア/アルゴリズムの開発 b. 要件の追加・変更 Ticket 1 Ticket 1 V字型 アジャイル型 0.5~1.0 years 2 wks 開発計画 安全コン セプト 設計 仕様 評価 計画 評価 結果 6
  7. 7. CI/CDの意義 Continuous Integration(CI)とContinuous Delivery(CD)の略称 2つの開発フローをつなげるためにより早いFeedBackを回したい - お互いに全く関係せずに開発が実施されることはない - V字型でも、最初に要求がすべて洗い出されることは難しい (そもそも自動運転が未知の世界) - Agile型でも、安全性や品質をないがしろにしていいわけではない V字の手戻りを最小限に抑える Agileな変化にも耐えうる安全性・品質の担保 7
  8. 8. CI/CDの詳細 8
  9. 9. テスト戦略 皆さんどういったテストを行ってますか? 一般的なWebシステムであればこういう分け方が多いのでは? 単体テスト 結合テスト 機能テスト UI(受け入れ)テスト 非機能テスト テスト数 スコープ コスト 9
  10. 10. 自動運転のテスト戦略 ソフトウェアのテストは大きく変わらないが、実際のハードウェア・車両を用い たベンチテスト・Fieldテストが含まれる CI/CDチームでは、コストやスコープ、実現可能性を考慮し結合テストを対象に 単体テスト 結合テスト 機能テスト Fieldテスト 非機能テスト ベンチ環境でのテスト テスト数 スコープ コスト 10
  11. 11. Simulatorを利用したCI シナリオベースのPlanning Simulatorを用いたテスト - 一度の実行が低コストで、地図や一部コンポーネントをインテグレーション したテストが行える - シナリオ = テストの前提条件・事後条件が明記 - 事前条件: 自動運転車・登場人物(他車両・歩行者・自転車etc.)・地図 - 事後条件: どういう状況になれば成功/失敗なのか - Ex. 自動運転車が歩行者にぶつからずに目的地にたどり着いたら成功 11 シナリオ 地図 自動運転システム with simulator Result
  12. 12. 自動運転システムのDelivery まだまだContinuousとは言い難い - Webシステムのように継続的にアップデートされる状態でどうやって安全性 を担保するのか - 実車での評価が終わってないものをリリースするわけにはいかない 自動運転車の台数に対してスケールさせるために、構成管理・OTA(遠隔)アップデ ートができるようになっておく必要がある - システムのアプリケーションのみを管理 - 差分アップデートサポート 12
  13. 13. プロダクト紹介 13
  14. 14. プロダクト紹介 CI/CD Dashboard / Rosbag Viewer 社内の自動運転システムに特化したCIサービス - ソースコード変更でのトリガの実行 or Adhocな実行 - rosbagデータ(システム内通信のログデータ)の保存 - 実行結果のグラフィカルなWeb表示 Scenario Editor テストのシナリオ記述をサポートするツール - グラフィカルに車両の挙動を記述できる - 過去にビルドされたイメージを用いて、編集したシ ナリオをWeb上ですぐに実行可能 14
  15. 15. CI/CD Pipelineのアーキテクチャ OTA Package Map パラメータスイープ Batch Job を登録 スポットインスタン ス上で実行 Code シナリオ単位 で分散 テスト分散 Docker Image Batch S3 S3 DynamoDB DynamoDB ECR ECR Lambda GitHub Docker Image Base Docker Image Test Scenarios Test Report Batch Build Test Pull Request User Kick 15
  16. 16. 工夫している点 (1/2) Batch Computing Environment / ECS Cluster EC2 Instances Batch Job / ECS Task EBS / Docker Layer Storage ECS Container Agent systemd-tmpfiles tmpfs Docker Container Docker Image Base Docker Image PCD Map Vector Map Batch Job / ECS Task Docker Container ライフサイクル 管理 保存 / 取得 ライフサイクル 管理 保存 / 取得 ベースイメージはクリーンアップしないなどのECS Container Agentのチューニング. 敢えて、ベースイメージを中間レイヤーではなく 、明示的なイメージとして管理. Docker Layer Cache ホストマシンのボリュームに置くことで、Job間で 再利用. ディスクフルを避けるためにtmpfsを利用. Map Cache 16
  17. 17. 工夫している点 (2/2) 過去にBuildしたImageを利用した簡易実行機能の提供. シナリ オを編集し、実行確認がブラウザ上で完結. ブラウザ上でのSimulatorのTrial Run 開発者のPCに存在するSimulatorを用いてCI実行時と同様の環 境を提供. 開発者のデバッグをサポート. 実行環境のRuntime化 開発が過渡期で複数のFirmware(ROS, ROS2など)の管理が必要 . Firmware依存部分をプラガブルにし、開発・管理効率改善. Firmware依存処理のプラグイン化 17 シナリオTrial Runのアーキテクチャ図
  18. 18. 今後の展望 結合テストだけでなく、ベンチ/FieldテストとサポートできるTestBedの拡大 - 開発者がテストの結果、FeedBackを素早くもらえるシステムづくり OTAアップデートでアプリケーションだけでなく、OS, Middlewareも含めた環 境管理・アップデートの実施 18
  19. 19. © 2021 Tier IV, Inc. 19

発表者:徳永誠 2021年1月29日に行われた「Tier IV 自動運転Web&Dataミートアップ」のプレゼン資料です https://tier4.connpass.com/event/198897/preview/

Views

Total views

132

On Slideshare

0

From embeds

0

Number of embeds

1

Actions

Downloads

1

Shares

0

Comments

0

Likes

0

×