宇宙機でのROSアプリケーション活用
斎藤達彦1
加藤裕基1, 平野大地1, 岩渕甲誠2, 川口仁2
1 宇宙航空研究開発機構 (JAXA)，2 株式会社セック

目次• イントロダクション– 宇宙ロボットソフトウェア– 宇宙機用ソフトウェア（CFS）• ROSアプリケーション移植環境• 動作検証• まとめ• 今後の展望×(flight software framework)

あなたの宇宙ロボット開発参入を実現！
2

ロボットを用いた宇宙ミッション
今後の宇宙ミッション• 大型宇宙構造物建設（宇宙太陽光発電 等）• 人工衛星の保守・修理• 月・惑星探査• スペースデブリ除去➡ 自律ロボットの大規模ソフトウェアを駆使➡ 宇宙ロボットソフトウェアプラットフォームが必要✓既存のロボット技術を容易に統合可能✓アプリケーション開発が容易➡ ROSエコシステムを活用
3

ROSを利用した宇宙ロボティクス研究©JAXA Hirano©JAXA• 空気浮上ロボット制御• 接触シミュレータ• 捕獲シミュレータ
©JAXA

©JAXA

4

宇宙でのROS利用状況• ISS船内ロボット– Robonaut2– Astrobee (2019年打ち上げ予定)• ISS船外での利用実績なし• 宇宙機利用➡ ROSを宇宙機組込み仕様に改修必要➡ コスト大既存の宇宙機システムにROSを組み込めないか？

Astronaut2 ©NASA

Astrobee ©NASA

5

Core Flight System(CFS)• CFS: オープンソースの宇宙機制御ソフトウェア (©GSFC/NASA)– OSコネクション層（Linux, RTOS対応）– ミドルウェアコア（タスク・データ管理、通信制御、時刻管理、等）– 自律化支援アプリケーション（ログチェック、アプリ生存監視、等）• 豊富な搭載実績：高信頼性
自律化支援
アプリ
MX-1 Lander©Moon Express

LRO ©NASAMorpheus
Lander©NASA

ミッションアプリ

ミドルウェアコア(cFE)
Pi-SAT ©NASA

OSコネクション層 (OSAL)
Linux, RTOS
6

CFSへのROS適用方法• CFSではミッションアプリは独自開発が必要✓ マニピュレータ制御✓ 自己位置推定✓ 経路計画……

• 我々のアプローチ：

既存のロボットで利用されているROSアプリ（ノード）を宇宙機（CFS）のミッションアプリとして移植する

ROSアプリ

自律化支援アプリ

ミッションアプリ

ミドルウェアコア(cFE)OSコネクション層 (OSAL)
Linux, RTOS
7

ROSアプリケーション移植ステップ① 移植したいROSコードを用意。
（サポート・互換性を確認）② ROSコード変換プログラム ROSコード変換
プログラムを実行。コードを自動変換。
③ 自動変換されたコードを移植
用ROS APIライブラリ、CFS
コードと共にビルド。
④ 実行。
（Linux上でも動作可能）

ROS
ソース

ROS
ヘッダ
移植用ROS API
ライブラリ

変換後
ROS
ソース

ROS
ヘッダ・
メッセージ
ヘッダ

+CFS
ライブラリ

ビルド

8

ROSアプリケーションの移植環境開発• 開発コンセプト：ROSアプリのコードをほぼそのまま利用する。
（移植の際のユーザのコストを最小化する）
移植用ROS API
ライブラリ(ROS/cFE Interface
Library)
ROSコード変換プログラム(CFS convertor)【動作環境】• ROS: Kinetic Kame
• ROS client: roscpp（C++コードアプリ）9

移植用ROS API ライブラリ
移植用ROS APIライブラリ(ROS/cFE InterfaceLibrary)• 移植ROSアプリケーションが利用（ビルド時に追加する）• CFSでのROS関数の機能を提供• 現在は✓ ノード間のトピック通信✓ 周期動作（コールバック）に必要な機能をサポート

利用可能なROS関数一覧
クラス
関数名initTime
now().toSec()
ok()
Rate
sleep()
Durationsleep()
spinOnce()spin()
NodeHandle subscribe
advertise
Publisher
publish10

ROSコード変換プログラム
利用可能なROSメッセージ一覧
ROSコード変換プログラム(CFS convertor)• ROSコードをCFSとビルド可能な形式に自動変換• ROSメッセージ定義ファ
イルを自動付加• ROSパッケージヘッダを自動付加

メッセージクラス
std msgs

geometry msgs

nav msgs
sensor msgs

メッセージタイプ
headerFloat64MultiArray
MultiArrayLayout
MultiArrayDimension
Wrench / WrenchStamped
Pose / PoseStamped
PoseWithCovarianceStamped
Point
Twist / TwistWithCovarianceVector3
Odometry
JointState
11

ROSコード変換プログラム
利用可能なROSパッケージヘッダファイル
ROSコード変換プログラム(CFS convertor)• ROSコードをCFSとビルド可能な形式に自動変換• ROSメッセージ定義ファ
イルを自動付加• ROSパッケージヘッダを自動付加

パッケージ

ヘッダファイルクラス

tf

Matrix3x3.h

Matrix3x3

MinMax.h-

QuadWord.h

QuadWord

Quaternion.h

Quaternion

Scalar.h-StampedTransform StampedTra.hnsformTransform.hTransform

Vector3.h

Vector3

現在はTFパッケージの一部のみサポート（今後サポート拡大予定）
12

ROSコード変換プログラム

13

ROSアプリケーション移植ステップ
新規ROSアプリ

ROS
ソース

既存
ROSアプリROS
ヘッダ

移植用ROS API
ライブラリ

ROSコード変換
プログラム

変換後ROS
ソース

ROS
ヘッダ・
メッセージ
ヘッダ

+

CFS
ライブラリ

ビルド

宇宙ロボットアプリ
開発が容易に実施可能
14

まとめ• ROSアプリケーションの宇宙機システム（CFS）上での移植・動作環境を構築• ROS開発ツール、ライブラリを利用してミッションアプリケーション
開発効率を向上させる環境・手法を提案

×(flight software framework)15

今後の展望
移植用ROS API ライブラリがサポートするROS機能一覧
No

ROS 機能サポート状況

1.

Publish✓2.

Subscribe✓

3.

Service(将来対応)

4.

Param(将来対応)

5.

Bag(将来対応)• 現時点で未サポートのrosservice, rosparam, rosbagについて対応。
• サポート可能なメッセージクラス、ROSパッケージの拡充。
• ROS、CFSのネットワークブリッジ機能開発。
• フライト検証を計画中。
16

今後の展望本開発成果は、今後オープンソースプロジェクトとして公開予定。

ROSユーザの皆様のご意見・ご要望をお待ちしております17