はじめに
今回、宇宙機・宇宙ロボット向けのROSであるSpace ROSに関する、QiitaのAdvent Calendar 2024を立ち上げてみましたので、本記事ではその趣旨と概要についてまとめていきます。
Space ROSとは
まず、Space ROSについて知らない方もいらっしゃると思うので、簡単に説明させていただきます。
Space ROSとは、宇宙機・宇宙ロボットでも使えるようにした「ROS (Robot Operating System)」です ![]()
![]()
ちょっとした背景
皆さん、ROSはご存じでしょうか。
ROS (Robot Operating System) は、ロボット開発のための豊富なライブラリやパッケージ群、開発ツール群、共通のフレームワークを提供するプラットフォームです。
また、世界中の開発者による活発なコミュニティも特徴で、ロボット開発の事実上の標準 (デファクトスタンダード) となっています。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 (Robot Operating System) Advent Calendar 2024
そして、Space ROS (Robot Operating System) Advent Calendar 2024は、宇宙ロボット向けのROSであるSpace ROSに関するQiitaのAdvent Calendarです!![]()
![]()
Space ROS Advent Calendar 2024では、大きく分けて、企画記事と自由記事の2つの記事投稿の場を用意させていただいております。
Space ROS Advent Calendar (企画記事)
1つは、宇宙開発のハードルを下げる希望の「Space ROS」を、広く皆さんに周知させていただくために、JAXAをはじめとする宇宙開発に携わるメンバーが、Space ROSの概要からチュートリアル、現在の開発状況、応用など、様々な記事を投稿する「企画記事」になります!
積極的にSpace ROSの開発を進めているメンバーを中心に、まとまった記事を投稿していこうと思っているので、楽しみにしていてください!(頑張ります![]()
)
Space ROS Advent Calendar (自由記事)
そして、もう1つが、Space ROSに関係する事でも、関係しないことでも、誰でも何でも自由に投稿ができる「自由記事」になります!
Space ROSは、まだあまり皆さんに知られていないということもあり、どれだけの方が記事を書いていただけるかわかりませんが、本当に些細なことでも構いませんので、投稿していただけると嬉しいです。
ぜひ、皆様の投稿をお待ちしております!!![]()
![]()
Space ROS Advent Calendar 2024:企画記事
こちらでは、Space ROS Advent Calendar 2024の「企画記事」の内容についてまとめていきます。Advent Calendar実施期間中も随時更新していきますので、Space ROS Advent Calendar 2024のまとめとして、本記事を確認していただけたらと思います。(最終更新 2025/01/22)
2024/12/01: Space ROS Advent Calendar 2024について
- 宇宙機・宇宙ロボット向けのROSであるSpace ROSのAdvent Calendar 2024についての趣旨と概要についてのまとめになります。
- 積極的にSpace ROSの開発を進めているメンバーによる「企画記事」と、どなたでも自由に投稿できる「自由記事」があります。
- Space ROSに関係する事でも、関係しないことでも良いので、皆さんの投稿をお待ちしております!!
2024/12/02:【概要#1】これまでの宇宙ロボット背景・経緯を概観してみる
- Space ROSのそもそもの背景として、宇宙ロボットとはどういったものを対象としているのか、その上で、これまでどのような宇宙ロボットが開発されてきたのか、宇宙開発におけるロボットの役割についてまとめています。
- また、現状の宇宙ロボットの課題を、宇宙環境に対応すること、重力の違いによるダイナミクスを検討が必要なこと、リハーサルが困難なことの3つにわけて解説しています。
- そして、これまでの研究開発で,宇宙ロボットに関するハードウェアの知見が培われ,宇宙開発におけるコストが下がる中,次の段階としてソフトウェア開発の発展が求められる、それこそがSpace ROSの役割だということを述べています。
2024/12/03:【概要#2】Space ROSの目的
- Space ROSを開発する目的として、ロボティクスのデファクトスタンダードであるROSを、宇宙品質で宇宙にも持っていくことについてまとめています。
- そして、この目的の中で生まれる「Space ROSを使っていれば自動的に宇宙品質が担保できるのか」という問いに対して、実際問題としてなかなか難しいといった考えを述べています。一方で、Space ROSが「自動的に」宇宙品質が担保できる世界を目指していくことは、究極的な目標として述べています。
- また、Space ROSを扱う上で「宇宙品質とは何を指すのか」という問いに対して、Space ROSはNASAのソフトウェア規格(NPR7150.2)のうちの、一番クリティカルな(高い)Class Aを目指すことを述べています。
2024/12/04:【概要#3】Space ROSとROS 2の違い
- ROS 2をベースとしたSpace ROSは、ROS 2よりも宇宙ミッションに特化したリアルタイム性と信頼性の強化を目指して設計されていることをまとめています。
- 特に、ROS 2と異なるSpace ROS独自の機能として、ビルドとインフラ、コード解析ツール、要件ツールとプロセス、宇宙特有の機能について、それぞれ詳しく説明しています。
- 現時点では、ROSを宇宙でも使えるようにするということを優先に、ROS 2に加えて、既にNASAやJAXAが開発してきた宇宙機向けのソフトウェアを取り込んでいるような構成になっています。実際の宇宙でROSを動かせるようになれば、この盛り上がりは更に加速しそうです!
2024/12/05:【概要#4】Space ROSのパッケージ構成
- Space ROSは、ROSとは異なるSpace ROS独自のGitHub Organization上で開発されおり、そこで公開されているリポジトリおよびパッケージの構成とその役割についてまとめています。
- 具体的には、公開されている全12個のリポジトリ (space-ros, demos, simulation, docker, docs, process_sarif, spaceros.org, requirements, dashboard, ikos, check-commit-message-action, github) がSpace ROSのどの機能を担っているのか簡単にまとめています。
- 詳細にパッケージの中身を見ていく中で、試せるものは色々出てきていることがわかります。NASAやJAXAなどの宇宙機関はこの実証機会に向けて、開発を進めているので、今後のSpace ROSのアップデートにも期待です!
2024/12/06:【概要#5】Space ROSのMars Roverデモ
- Space ROS のデモの1つとして、火星探査ローバーであるCuriosityのGazeboシミュレータ環境のセットアップと、簡単な動作手順についてまとめています。
- いまのところは、通常のROS 2と何ら変わりはありませんが、このMars Roverを使ってSpace ROSの一部機能のデモンストレーションをすることができたりします。
- みなさんもぜひCuriosityのGazeboシミュレータの環境を構築して、触ってみてください。
2024/12/07:【コア#1】 RTEMS(RTOS)概論
- WindowsやLinuxなどのOSと違い、タスクのスケジューリングや割り込み処理において高い精度と確定性をもつRTOS(Real Time Operating System)の概要についてまとめています。
- また、RTOSの中でも、組み込みシステムを対象としており、航空宇宙業界において広く利用されているRTEMS(Real-Time Executive for Multiprocessing Systems)の概要についてまとめています。
- Space ROSの構想では、このRTEMS上でROSを動作させることをサポートすることが記載されています。まだ、対応はしていないようなので、今後のSpace ROSのアップデートに期待したいところです!
2024/12/08:【コア#2】Space ROSはRealTimeOSでなきゃいけないの?
- ROS 2が登場し、ROSの組み込みシステム対応が謳われましたが、そもそも「なぜROS 2使用のロボットで組み込み系やRTOSに手を出すのか」という問いに対して、リアルタイム性に焦点を当てて説明しています。
- そして、上記の問いに対しては、ロボットの制御系において、時間的な期待を外れて処理されても問題ない場合は、非リアルタイム系のUbuntuやWindowsを使うので良いが、その要求が厳しくなればしっかりとしたリアルタイム系を使う必要があるという風にまとめています。
- 宇宙ロボットにおいても同じで、宇宙ではRTOSを使うことがほとんどですが、宇宙だからと言って何でもかんでも組み込み系やRTOSを使う訳ではなく、適宜選択することが求められます。既にSpace ROSの構想は上がっていますが、こうした背景をもとに、ROS 2との棲み分けについては考え続けたいところです。
2024/12/09:【コア#3】Zenohって最近聞きますけど?
- ROS 2 Jazzyから、RMWサポートの通信プロトコルとしてZenohが導入され、注目されています。特に、多くノード間でのやり取りや、クラウドを介すような比較的大きなロボットシステムで、Zenohは効力を発揮することをまとめています。
- その上で、現状の宇宙ロボットやSpace ROSにおいて、Zenohを扱うのはどうだろうかという問いについて、考察を述べています。
- 上記に対しては、宇宙機は、セキュリティ的に閉じたシステムになることが多く、現状ではDDSで問題ないというのが回答になっています。ただし、宇宙ステーションのような機械まみれの居住空間では、スマートホーム化が適しているということもあり、宇宙でもZenohの効果を発揮するケースが増えてくる可能性はあります。
2024/12/10:【コア#4】 IKOS(基本編)
- NASAが開発したC/C++向けの静的解析ツールIKOS(Inference Kernel for Open Static Analyzers)の概要と、Space ROSとの関係についてまとめています。IKOSはSpace ROSに標準装備される予定で、ビルドやテスト時に自動的に静的解析を実行できる仕組みになっています。
- IKOSの理論的基盤であるAbstract Interpretation(抽象解釈)について解説しており、IKOSが「sound」(バグを見逃さない)な解析を行う仕組みを説明しています。
- バッファオーバーフロー、ゼロ除算、ヌルポインタ、未初期化変数など多数の解析項目があり、各コードに対してsafe/error/unreachable/warningの判定を下します。宇宙品質のソフトウェアを支える重要なツールです!
2024/12/11:【コア#5】 IKOS(実践編)
- 基本編に続き、IKOSを実際にインストールして使ってみる実践的な内容をまとめています。公式手順ではインストールがうまくいかないケースがあり、試行錯誤を経たソースからのビルド手順を紹介しています。
- APRONなどの依存ライブラリのインストール手順や、IKOSを実際のコードに適用した際の画面イメージも掲載されています。
- また、Space ROSのDocker環境でIKOSを使う方法についても触れており、Space ROSへの統合状況についても言及しています。実際に手を動かしてIKOSを体験したい方におすすめの記事です!
2024/12/12:【ライブラリ#1】 Nav2
- ROS 2の自律移動パッケージであるNavigation2(Nav2)の概要とパッケージ構成について、ROS 1のNavigation Stackとの比較を交えつつ紹介しています。
- Nav2の大きな特徴として、BehaviorTree CPPを使ったビヘイビアツリー機能の標準搭載、パッケージ追加によるアルゴリズム選択肢の拡充、ROS 2移行による各ノードのライフサイクル管理などを解説しています。
- 将来的にNav2をSpace ROSに特化したナビゲーションパッケージ(SpaceNav)として実現できないか、という構想の前編にあたる記事です。宇宙ロボットへの応用を見据えた内容になっています!
2024/12/13:【ライブラリ#2】 SpaceNav構想
- 前日のNav2の記事を踏まえ、宇宙用のナビゲーションパッケージ「SpaceNav」を実現するとしたらどのようなものになるかの構想をまとめています。
- 地上ロボットと宇宙業界で「ナビゲーション」の意味が異なる点(地上ではPlanning & Control、宇宙では航法=Localization/Perception)に触れ、用語の違いを整理しています。
- Nav2の設計思想を宇宙環境に適用する際の課題や、宇宙特有の要件(微小重力、通信遅延など)を考慮したSpaceNavの設計方針について考察しています。宇宙ロボットのナビゲーションの未来を考える上で興味深い記事です!
2024/12/14:【ライブラリ#3】 宇宙用マニピュレーションソフトについて書いてみるvol.1
- Coming Soon.
2024/12/15:【ライブラリ#4】Moveit Pro Spaceについて書いてみる
- Coming Soon.
2024/12/16:【ライブラリ#5】Behavior Tree
- Space ROSで採用されているロボットの意思決定フレームワークであるBehavior Tree(行動木)について、その概要と宇宙ロボットでの活用方法に焦点を当てて解説しています。
- 宇宙機器開発特有の要件として、通信遅延への対応(自律的な判断ロジックの階層的整理)、リソース制約、フォールトトレランスとの親和性の3点を挙げ、Behavior Treeがこれらの課題への解決策になりうることを述べています。
- Nav2でもBehavior Treeが標準搭載されていることとの関連にも触れており、宇宙ロボットの意思決定における実践的な知見が共有されています!
2024/12/17:【ツール#1】みなさんご存知のcFSについて書いてみる
- Coming Soon.
2024/12/18: 【ツール#2】RACS2 (ROS2 and cFS System)
- JAXAが開発したROS 2とcFS(Core Flight System)をつなぐツールであるRACS2について解説しています。RACS2 bridgeはcFSとROS 2をアプリケーション層でブリッジし、双方のユーザアプリケーション間でトピック/メッセージのやり取りを可能にします。
- RACS2 bridgeのソフトウェアアーキテクチャや要求仕様について紹介しており、cFSとROS 2のどちらのユーザにとっても既存ソフトウェアを改変せずに再利用できる設計思想を説明しています。
- Space ROSがROS 2全体を宇宙仕様化する長期目標を持つ一方、RACS2は既存のcFSと連携して短期的にROS 2を宇宙で使えるようにするアプローチであり、両者は補完関係にあることを述べています。RACS2がSpace ROSに取り込まれる動きも進んでいます!
2024/12/19:【ツール#3】RACS2デモ (Example、MarsRoverデモ)
- Coming Soon.
2024/12/20:【ツール#4】RACS2とBRASHの比較
- JAXAが開発したRACS2と、米国のtraclabs社が開発したBRASHの2つのROS 2⇔cFSブリッジツールを比較した記事です。両者はどちらもROS 2トピックとcFSメッセージをブリッジする機能を持っています。
- RACS2はコーディング時にcFSのmessage IDとデータサイズを指定するだけで簡単に使える一方、BRASHはコード上でAPIを呼び出す必要がない代わりにYAML設定ファイルの準備が必要、といった使い方の違いを解説しています。
- 優劣を論じるものではなく、両ツールの設計思想や使い勝手の違いを整理しており、ROS 2と宇宙フライトソフトウェアの連携に興味がある方に参考になる記事です!
2024/12/21:【ツール#5】Space ROSを用いたTurtleBotのデモ
- Coming Soon.
2024/12/22:【関連記事#1】物理シミュレータ・センサエミュレータ/SILS/HILS
- Coming Soon.
2024/12/23:【関連記事#2】宇宙機の姿勢制御パッケージ
- Space ROSに関連して現在取り組んでいる、宇宙機(主に軌道上)の姿勢制御パッケージのコンセプトと活動内容を紹介しています。「宇宙機用のROS 2パッケージを作ってみたら面白いのでは」というモチベーションで活動をスタートしたとのことです。
- 姿勢制御に必要な各機能を抽象化したモジュールとして定義し、ROSの強みであるノードの付け替えにより、異なるセンサやアクチュエータでも一貫した動作を実現するコンセプトを説明しています。
- ミッション固有の機能に対しても拡張性を持たせることができる設計になっており、宇宙機ソフトウェアの再利用性向上を目指した取り組みです。Space ROSが掲げる開発期間短縮・再利用性向上のビジョンとも合致する、実践的な活動です!
2024/12/24: 【関連記事#3】ROSCon JP 2024でのSpace ROSに関する発表をしてきました!
- ROSCon JP 2024で「JAXAにおける宇宙機開発へのROS活用とSpace ROS開発」というタイトルで発表した内容をまとめています。発表資料と動画も公開されています。
- JAXAでROSを活用している宇宙ロボットの開発事例(RACS2によるcFSとROS 2のブリッジなど)の紹介と、Space ROSの現状と今後の展望について発表した内容を解説しています。
- デモとして、Mars RoverのGazeboシミュレータとTurtleBot3の実機でRACS2を動作させ、cFSからROS 2への操作コマンド送信によるロボット制御を実現した様子も紹介されています。Space ROSの日本からの発信として大きな意義のある発表です!
2024/12/25: おわりに
- Coming Soon.
Space ROS Advent Calendar 2024:自由記事
こちらでは、Space ROS Advent Calendar 2024の「自由記事」の内容についてまとめていきます。Advent Calendar実施期間中も随時更新していきますので、Space ROS Advent Calendar 2024のまとめとして、本記事を確認していただけたらと思います。(最終更新 2024/12/25)
2024/12/19:【Space ROS】NASA開発コンペに出て、生成AIでローバーを動かしてみた
- NASAが2024年7〜9月に開催したSpace ROS Sim Summer Sprint Challengeに参加した体験記です。ROS 2は初めてだったがチュートリアルから勉強し、締め切り3週間前から取り組んだとのことです。
- 開発環境構築(ローカルLinux PC、M1 Mac、AWS EC2、AWS WorkSpaces)での試行錯誤を経て、最終的にAWS WorkSpacesで環境を整えた経緯が詳しく記載されています。
- ChatGPT APIを使って自然言語の指示(「10秒前進してから右に進んで」など)でGazebo上のローバーを制御するデモを作成し、生成AIを活用した宇宙ロボット操作の可能性を示しています!
最後に
Space ROSは宇宙開発のみならず、地上でも宇宙機並みの品質が求められるシステムに適用できると考えています![]()
宇宙開発に関係する方々も、宇宙開発に関係しない方々も、Space ROSに興味を持っていただけると嬉しいです。ぜひ一緒にSpace ROSを盛り上げていきましょう!!
Space ROS Advent Calendar 2024の投稿・購読もお願いします!!
