Advent Calendar 2024の企画として、Space ROS (Robot Operating System)について集中的に解説/紹介していきます。今日は関係する周辺プロジェクト(ツール)の1つということでRACS2 (ROS 2 and cFS System)についてです。
RACS2 (ROS 2 and cFS System) とはなんですか?
RACS2とは、JAXAが開発したROS 2 と cFS (Core Flight System)をつなぐツールで、GitHubで公開されています:
ROS 2はご存知のROS 2で、cFSは別記事で紹介されている通り、NASAが開発した宇宙コミュニティで先行して使われてきていたROSのPlumbing(接着)分の機能を有するミドルウェアであり、宇宙分野でのソフトウェアのモジュラー化、再利用を促すために作られました。
つまり、平たく言うと、RACS2とは、類似のPlumbing(接着)の機能を持つROS 2とcFSを接続し、宇宙でもROS 2が使えるようにするツールとなります。ROS 2が地上のロボティクスの分野のデファクトスタンダードではあるものの、さすがにROS 2をそのまま宇宙に飛ばすには安全性信頼性の観点で心配です。そのため、宇宙分野で支持を得ていて高信頼性を誇るcFSと、ROS 2をくっつけて、宇宙でもロボット化を進めることがその目的となります。
RACS2 bridge
RACS2 bridgeを用いたソフトウェアシステムのアーキテクチャ
以下にあるようにRACS2 bridgeはcFSとROS 2をアプリケーション層でブリッジする機能を有しています *1。これにより、cFSのユーザアプリケーションとROS 2のユーザアプリケーションのトピック/メッセージのやり取りができるため、ROS 2ユーザはcFSのアプリケーションを使用することができるし、同様にcFSユーザがROS 2のライブラリやツールにもアクセスができるようになります。
RACS2 bridgeのソフトウェア要求仕様
ここのPage28以降にソフトウェア要求仕様の記載があります *2。 かなリ内容が細かいので詳細は割愛しますが、思想としては、cFSとROS2のどちらのユーザにとってももともとのソフトウェアをRACS2専用に改変することなく再利用できるようになっていると読めます。また、現状は計算機(ホスト)ごとにROS 2およびcFSと分離するトポロジーも、1つの計算機に共存できるトポロジーも対応可能となっていますが、ROS 2を投入しようとするような(従来の宇宙アプリケーションの中では)比較的ソフトウェアヘビーなプロジェクトでの使用になってくると思うため、ROS 2およびcFSは計算機ごとに分離されるスキームが優勢になっていくと考えられます。
Space ROSとRACS2 bridge
RACS2 bridgeとSpace ROSのアーキテクチャの比較は以下 の通りです *1。Space ROSは基本的にはROS 2を宇宙向けにする思想に対し、RACS2はROS 2を宇宙へ飛ばすのに既存のcFSと連携し、プログラム自体は最小限に抑えられています。
ROS 2がまるまる宇宙仕様化したSpace ROSが使えるのは世界観としては当然ど真ん中の目標になると思いますが、いずれにせよROS 2プロジェクトをまるまる宇宙化するのはそれなりの時間がかかるし、しかも維持を続けるのはそれなりの労力になっていくと考えられます。したがって、少なくとも当面はRACS2のようにcFSも活用しながらROS 2を宇宙に打ち上げるという世界観は自然の流れだと考えられ、RACS2がSpace ROSに取り込まれようとする動きが進んでいます →12/18現在。更新します。 。
RACS2 extended-DDS
RACS2 bridgeの他にRACS2 extended-DDSが準備されています。こちらもGithubに公開済です。
アーキテクチャは以下 の通りで直接ROS 2が使用しているDDS層でcFSも含めて通信を行うスキームです *1。