プラットフォームOSの選び方

こんにちは、ティアフォーの伊藤です。

コロナで自粛中、テレワークに励んでいますが、つい時間を忘れて稼働時間が長くなってしまう今日この頃です。

私はAutowareのプラットフォーム開発を担当していまして、OSやROSといった低レイヤーの部分を中心に見ています。今回はそのOSの部分についてお話したいと思います。

さて、現在Autowareが公式にサポートしているOSはUbuntuになります。

Ubuntuはフリーで使用できる、とても有名なLinuxディストリビューションです。Autowareが研究段階の時から使用されています。

しかしながらAutowareを実用化するにあたり、今までなんとなく使ってきたUbuntuをこのまま使用し続けてよいのか、という議論がありました。

Linuxディストリビューションには3つの流派があります。

AutowareではDebian系のUbuntuを使っていますので、まずはDebian系の中でDebianUbuntuを比較してどちらを採用すべきなのかを検討していきました。 

Debian vs Ubuntu

検討では様々な側面について比較しましたが、その代表的なものを紹介したいと思います。

  1. ソフトウェアの安定性
    • Basic Foundation
      Debian Ubuntu
      • オリジナルのLinuxディストリビューション
      • unstableブランチから開発開始→ ReleaseCriticalバグなし → testingブランチに昇格 → フリーズ/チェック/細かいバグ修正 → stableとしてリリース。
      • ReleaseCriticalバグがなくなるまでリリースはされない。
      • ボランティアが活動の主体。
      • Debianをフォークしたもの(testingブランチをベースに開発)。
      • ユーザ指向、最新のハードウェアに対応、安定性に不安?
      • Ubuntu独自の修正もあり安定性に不安?
      • Canonical社が活動の主体(ボランティアも協業)。
      Ubuntuは安定性の面で不安視されていますが、別にテストされていないわけではありません。テストはCanonical社が行っていますので、この点については同等と言えるかもしれません。

    • Linux kernel
      Debian Ubuntu
      • 安定したkernelを導入する傾向。
      • ポイントリリースでkernelのバージョンを上げない。
      • 新しめのkernelを導入する傾向。
      • ポイントリリースでkernelのバージョンを上げてくる(メジャーバージョンを上げてくることもある)。
      Ubuntuはポイントリリースでkernelのバージョンを上げてきますが、その際にドライバも更新されてしまい、今まで動いていたものが動かなくなる可能性があります。もっとも自動更新をオフにしておけばよいですが、うっかり設定し忘れすることがあり、これは十分なリスクになり得ます。この点についてはDebianのほうが優勢と言えるでしょう。

      【補足資料:Software release timeline】
      各ソフトウェアのリリース日の関連性を以下にまとめました。
      UbuntuDebianに比べて新しいkernelを導入する傾向にあると思われます。

      f:id:ito--san:20200818113334p:plain


      【補足:CIPについて】
      なんとDebianには、CIP(Civil Infrastructure Platform)というDebianベースのSLTS(Super Long Term Support)があります。

      www.cip-project.org

      サポート期間が10年以上ありますが、対象はKernelとbusybox+αのみになります。そのため、このままでは対象が限定的ですので、他のパッケージもサポートを受ける場合、cybertrust社のEM Linux(有償)を導入する必要があります。または、自前でメンテナンスをしていく(セキュリティパッチをあてていく)ことになります。

      また10年以上も同じプラットフォームを使い続けるのか、という問題もありますが、工場等の設備には非常に適しているディストリビューションと言えるでしょう。

      なお、CIPとコラボレーションする予定のプロジェクトに、ELISA(Enabling Linux In Safety Application)というものがあり、こちらはセーフティ分野においてシステム構築や認証を支援するツールやプロセスを作成するオープンソースプロジェクトです。CIPを使うならばELISAに参画したり何らかの形でコラボレーションすると、機能安全に優れたアプリケーションを開発できるかもしれません。
      以上、少し話がそれてしまいました。

      elisa.tech

  2. プロダクト計画との親和性
    • Release cycle
      Debian Ubuntu
      • リリースはあらかじめ計画されておらず、プロダクトのリリース計画が立てづらい、と言われている。
      • 歴史的には2年おきのリリース。
      • ポイントリリースは不定期(ミスが判明してすぐ再リリースすることもある)。
      • リリースはあらかじめ計画されており、プロダクトのリリース計画が立てやすい。
      • ポイントリリースもあらかじめ計画されている。
      バグがなくなるまでなかなかリリースされないことが、かつてのDebianのデメリットでした。Ubuntuはそれを解消するために計画重視のリリースになっています。どちらかというと、ディストリビューションのリリース計画があらかじめ決まっていたほうが、プロダクトへの導入計画も立てやすいですね。

       

  3. サポートおよびサポート体制
    • Support period
      Debian Ubuntu
      • フルサポート3年。
      • 無償セキュリティアップデート2年。
      • 対応はボランティア次第のところもある。
      • 対応に関心のある企業がお金を出してサポートさせる場合もある。
      • プロプライエタリ系の対応は遅れる。
      • 無償セキュリティアップデート5年。
      • 追加で5年間の有償セキュリティアップデートを受けることが可能。
      • バックにCanonicalの強み。
      • プロプライエタリ系もCanonicalが手を回して対応させる場合もある。
      • NVIDIAのデフォルトOSがUbuntu
      • Tensor FlowもUbuntuをサポート。
      サポートの面からするとバックにCanonicalがいるUbuntuのほうがサポートが厚そうに見えますね。

  4. ROSとの親和性
    • Target platform
      Debian Ubuntu
      • ROSのサポート期間が2つのDebianサポート期間にまたがった場合は、最初のDebianのみをサポート。
      • ROS2の主要なプラットフォームはCanonicalUbuntuリリース。
      ROS2のプライマリプラットフォームは、Ubuntuと定められています。Autoware AutoはROS2を使用していますので、自然にそれに習うという感じになるでしょうか。

    • Buildfarm
      Debian Ubuntu
      • 自らCI環境を構築する必要性がある。
      • CIでエラーが発生した場合の対処とOSRFへの働きかけが必要。
      OSRF側でUbuntuを使用してCIを回しているので安心ですね。ただ、DebianでもCI環境を構築できますし、OSRF(Open Source Robotics Foundation)とCIに関するノウハウを共有できたりと、OSRFに貢献をしていきたい場合はDebianもよいかもしれません。

  5. OTAとの親和性
    • Snap
      Debian Ubuntu
      • Snapは使用可能だが、OTA用のシステムは自ら構築する必要がある。
      • 有償サポートでPrivate StoreやCIを使用可能。
      • Public Storeで問題なければ無料で使用可能。
      OTAでSnapを使用する場合、自前でソフトウェアのアップデートシステムを構築するパワーがあればDebianでもよいと思います。それに対し、Public Storeで一般公開しても問題がないとか、Private StoreやCIを手っ取り早く使いたい場合はUbuntuでもよいと思います。こちらは製品の開発方針に拠るところがありまして、優劣はつけ難いです。

  6. 使用しているユーザー数
  7. プラットフォーム移行にかかるコスト
    • コスト
      Debian Ubuntu
      • かかる。
      • 開発者全員に波及する問題。
      • ほぼゼロ。
      実はティアフォーの開発者は皆Ubuntuを使用しておりまして、Debianへ移行する場合は、大きなコスト(時間)がかかってしまいます。したがって、Ubuntuの場合は現状のまま使い続けていればよいのでコストはかかりませんね。

まとめ

以上、いろいろな側面からDebianUbuntuを比較していきましたが、オープンソースとしてまずAutowareを普及させたいことを重視して、

  • ROS2の主要なプラットフォームはUbuntuなので、まずはAutowareもUbuntu上で動作させるべき。
  • Ubuntuは利用者数が多くCommunityも大きいので、Autowareの普及をより最大化できる。
  • 途中でkernelが更新されるなどUbuntuにもデメリットはあるが、なんとか運用でカバーする。

という理由から現状はUbuntuを選択しています。

ただ、Ubuntuに替わるOSが台頭してくるようになれば、Autowareエコシステムの基盤になる可能性も十分にありますし、積極的に検討していきたいと考えています。今後とも様々なOSの動向を注視していきたいと思います。

最後に

ティアフォーではオープンソースの自動運転ソフトウェア「Autoware」だけではなく、Autowareを下支えするROSやプラットフォームOSの開発や性能改善等も行っております。今回はLinuxについて触れましたが、RTOSの研究や採用検討も進めております。

ティアフォーではAutowareを下支えすることができる優秀なプラットフォームエンジニアも募集していますので、もしご興味があれば是非エントリーをご検討ください。

tier4.jp

※本記事に記載されている会社名、製品名、サービス名は、当社または各社、各団体の商標もしくは登録商標です。