ROS + Snappy Ubuntu Core (1) : いったい何なの?

iPhoneのAppStoreやAndroidのGooglePlayのようなアプリのマーケットインフラを,ロボットの世界にも導入するためにはどのような課題があるでしょうか?ROSはその開発当初から「Robot App Store」を視野に入れてきていますが,まだ実現していません.

その中で,最近のUbuntu Snappy Coreと呼ばれる仕組みの登場は,Robot App Storeの開設に大きく貢献するのではないかと思われます.

Snappy + ROS, https://www.crowdsupply.com/krtkl/snickerdoodle/updates/1890

今後,数回に分けて,Ubuntu Snappy CoreとROSについて書いていきたいと思います.

Ubuntuの事情

ROSがメインのベース・オペレーティング・システムとしているUbuntuは,年に2回のRegularリリースがあり,そのサポート期間は9ヶ月です.また,2年おきにLTS(Long Term Support)と呼ばれるリリースがあり,サポート期間は5年です.実用を求める人は安定なLTSを使いつつ,最新技術の取り入れや新規開発はRegularリリースを使う,というサイクルが続いています.

しかし,Ubuntuが対象とするデバイスは,デスクトップPCやサーバだけでなく,IoTやルータなどのエッジデバイスにも広がりつつあります.残念ながらUbuntu Phoneはついに陽の目を見ないことになるようですが…

これらのデバイスでは,セキュリティの観点から,Ubuntuのような同期的なものではなく,もっと不定期かつ細かい間隔の継続的なアップデートが欠かせません.また,耐障害性,たとえば不具合を含むソフトウェアが配信された際にロールバックする,などの機能が必要になります.

Snappy Ubuntu Core

これらの要求に対して,Ubuntuでは,IoTやエッジデバイス向けに,(Snappy) Ubuntu Coreと呼ばれる仕組みが開発されています.

これは,OSとデバイスドライバの分離,またカーネルとアプリケーションを分離して,それぞれを独立に,細かい周期でアップデートできるような仕組みにしよう,というものです.

ROSの事情

ロボットもまたIoTやエッジデバイスの一種と見ることができるため,今後ROSでも,このSnappyなパッケージシステムが主流になる可能性があります.また,ROSのリリースシステムも,ほころびが目立つようになってきています.

これまでROSはUbuntuと同様に,同期的なリリースを行ってきました.しかし,1年に1回のリリースでは,日進月歩の技術を取り入れるのに遅れが大きすぎる気もします.一方で,ROSを業務に使用する場合には,動作させることが優先され,頻繁にアップデートしない(できない)ようになってしまいがちです.

また,ROSのパッケージは,たくさんの外部ライブラリに依存しています.外部ライブラリのAPIが変更になるたびに,ROSのパッケージもそれに対応させる必要があります.仕様が変わる場合には,パッケージを対応させた上に動作確認も必要です.

そのため,リリースされるたびに,リリースから外れていくパッケージが多くなってきました.必要だしよく使われるパッケージであるにもかかわらず,リリースのために修正が必要だけど修正作業を行うメンテナがいない,という理由でリリースされなかったり,リリースが遅れたりするケースもあります.

もしROSを搭載したロボット製品を販売しようと考えた場合,UbuntuやROSが更新されたタイミングで,どのような仕様変更や不具合が混入するかわからず,それに対応するには膨大なリソースが必要であることが予想されます.

以上のようなことから,今後はSnappyなROSシステムが主流になるのではないかと,勝手ながら予想しています.

Canonicalにお勤めのロボットエンジニアの方(Kyle Fazzari氏)が精力的に情報発信をしているのも頼もしいです.4月に公開された以下の一連のブログと動画も必見です.