はじめに
こんにちは、池田です。私は、宇宙ロボットに関するお仕事をしていたりします。
ROS 2 Advent Calendar 2024の7日目として、ROS 2をベースにした宇宙機・宇宙ロボット向けのROSであるSpace ROSについてお話していきたいと思います。
Space ROSとは
まず、Space ROSについて、簡単に説明させていただきます。
Space ROSとは、宇宙機・宇宙ロボットでも使えるようにした「ROS (Robot Operating System)」です
ちょっとした背景
皆さんに改めて言うまでもないと思うのですが、ROSはロボット開発のための豊富なライブラリやパッケージ群、開発ツール群、共通のフレームワークを提供する非常に強力なプラットフォームになっています。
また、世界中の開発者による活発なコミュニティも特徴で、ロボット開発の事実上の標準 (デファクトスタンダード) となっています。このROSの登場により、地上ロボット技術は進歩したと言っても過言ではないのではないでしょうか。
ただ、宇宙ロボットの分野では、宇宙環境で動作するために高い信頼性と安全性が求められることから、未だに完全オーダーメイドの組み込み開発が主流であり、世界的にROSの導入が進んでいないのが現状です。
また、ROSが使用されたとしても、ISS (国際宇宙ステーション) のような人が居住できる比較的地上に近い環境や、研究段階のプロジェクトに限られています。
正直なところ、ここまで普及し、便利な機能や地上で培われた豊富なリソースを持つROSが、宇宙に限って活用されないのは非常にもったいないことです。
Space ROSの誕生
そこで、ROSの仕組みを宇宙環境に適応させ、開発のハードルを下げたり、地上のリソースを宇宙に適用することで、宇宙ロボット技術のさらなる発展を目指す取り組みが「Space ROS」になります。Space ROSの開発は、ROSの母体であるOpen RoboticsやNASAを中心に進められています。
ROSを使ったことのある方なら、宇宙ロボットがROSで動いていると知れば「自分でも宇宙ロボットが作れるかもしれない」と感じられるかもしれません。これが宇宙ロボット開発のハードルを下げることになると考えています。
たとえば、$ rostopic pub
or $ ros2 topic pub
(ROSにおけるTopicをPublishするコマンド) で cmd_vel
(よくある速度指令のTopic) を送信し、宇宙空間のロボットを動かせる。そんな世界線を築いていきたいと考えています。
Space ROSとROS 2の違い
ROS 2をベースとしたSpace ROSは、ROS 2よりも宇宙ミッションに特化したリアルタイム性と信頼性の強化を目指して設計されています。
特に、宇宙空間という厳しい環境での使用を想定し、ハードウェアやソフトウェアの障害に耐えうる設計や、リアルタイムなデータ処理、堅牢性の高い通信プロトコルなどを強化しています。
ROSも、ROS 1からROS 2になり、地上ロボットでも高い信頼性と安全性を確保するような組み込み系のROSの開発が進むようになったかと思います。ROS 2の組み込み系の開発があって、このSpace ROSの構想も進んでいるようなところもあります。
Space ROSとROS 2の主な違い
Space ROSとROS 2の違いは、航空宇宙業界の品質に沿っているかという点が大きいかと思います。具体的には、Space ROSとROS 2では、大きく分けて、ビルドとインフラ、コード解析ツール、要件ツールとプロセス、宇宙特有の機能の4点が異なります。主な違いを下の表にまとめてみました。
まずは、実際の宇宙機・宇宙ロボットでの動作が目標
特に、実際の宇宙機・宇宙ロボットで動作することを考えると、RTOS上での動作や、実績のあるフライトソフトウェアであるcFSとの連携、IKOSなどの静的解析による信頼性と安全性の高いミドルウェアを提供できるかが焦点となってきます。
そのため、Space ROSという名前の割に、宇宙のロボット技術よりも、現段階では信頼性と安全性に関する機能が、特に多い感じになっています。
将来的には、無重力空間でのマニピュレーション、姿勢制御、軌道設計(経路計画)、スラスタ制御や、月面や火星などでの特徴点が少ない環境下でのナビゲーション技術などの宇宙独自のロボットっぽい技術パッケージとかも増えていったら面白いですね。
Space ROSの課題と今後
現時点では、まずはROSを宇宙でも使えるようにするということを優先に、ROS 2に加えて、既にNASAやJAXAが開発してきた宇宙機向けのソフトウェアを取り込んでROSと組み合わせているような構成になっています。
少しずつではありますが、実際にSpace ROSの機能を試せるデモが色々出てきています。ただ、未だ実際の宇宙機・宇宙ロボットで使用できるソフトウェアというものは存在していないというのが課題でもあります。
そういった背景の中で、今一番、実際の宇宙機・宇宙ロボット上で動かせるソフトウェアに近いのではないか言われているのが、JAXAが開発するRACS2(ROS 2 and cFS System)です。
RACS2は下の画像のように、高い信頼性と安全性が求められる箇所に関してはフライト実績のあるNASAのOSSのソフトウェアフレームワークであるcFS(core Flight System)を使い、そこまで高い信頼性と安全性が求められないようなロボティクス技術の部分はROSを使うような、ソフトウェアアーキテクチャになっています。
RACS2のソフトウェア自体は、既にJAXAの公式GitHub上で公開されています。
こちらは、Space ROSの一部として機能するよう開発を進めている状況です。まだ、宇宙で動いた実績も、実際の宇宙機・宇宙ロボットで使用できるソフトウェアはありませんが、NASAやJAXAなどの宇宙機関は、この実証機会に向けて開発を進めているので、今後のSpace ROSのアップデートにも期待したいところです!
ROS 2を含め、日本からのコントリビュートは少ない中ですが、Space ROSのコアパッケージとなりそうなものを日本のJAXAからコントリビュートがありそうというのは良い流れかなと思います!!JAXAのソフトウェアで、実際の宇宙でROSを動かせるようになれば、この盛り上がりは更に加速しそうです!
Space ROSの地上での利用
上記で述べてきた、宇宙機・宇宙ロボットで求められる信頼性と安全性は、本質的には、自動車、航空機、産業用ロボット、災害救助ロボット、医療ロボット、サービスロボットなど、地上の技術にも求められるものでは無いかと考えています。
そのため、Space ROSは宇宙開発のみならず、地上でも宇宙機並みの品質が求められるシステムに適用できると考えています。
ROS 2で取り組んでいる組み込み系への対応などが、この信頼性と安全性に当たると思います。ただ、地上ロボット向けのROS 2の方でも、まだ組み込み系への対応は開発段階かと思います。特に、ROS 2のアプリケーションに対して、リアルタイム性をどう確保するという課題が大きそうです。
これは、Space ROSも全く同じで、RACS2のような考えであれば一旦は信頼性と安全性を別のソフトウェア(cFS等)で確保することができますが、やはり将来的にはROS自体が航空宇宙品質の信頼性と安全性を確保するという形に持っていきたいところではあります。
このように共通する課題も多々あると思うので、地上ロボット向けのROS 2と宇宙ロボット向けののSpace ROSの双方で、お互いで得られた知見や開発したリソースを利活用できたら良いのではないかと思います。
地上でも宇宙機並みの品質が求められるシステムも考えられますので、地上ロボットの皆さんも、ぜひSpace ROSの利用と開発をご検討ください。
最後に
宣伝にはなりますが、Space ROSに関するQiitaのAdvent Calendar 2024を立ち上げています!
本記事を通して、少しでもSpace ROSに興味を持っていただけた方は、こちらも見てみてください。シリーズ1(25個以上)の記事を上げる予定なので、ここでの話しよりも詳しい情報が得られるかと思います。同じROSコミュニティとして、一緒にSpace ROSも盛り上げていけたら嬉しいです!!
Space ROS Advent Calendar 2024の投稿・購読もお願いします!!