PlantUMLを使った宇宙服のモデリング

#はじめに

　趣味で宇宙開発を行う団体「[リーマンサット・プロジェクト](https://www.rymansat.com)」がお送りする
　[新春アドベントカレンダー](https://qiita.com/rsp-dgkz/items/497225739b88c817a90c)です。


　リーマンサット・プロジェクトは「普通の人が集まって宇宙開発しよう」を
　合言葉に活動をしている民間団体です。
　他では経験できない「宇宙開発プロジェクト」に誰もが携わることができます。
　興味を持たれた方は https://www.rymansat.com/join からお気軽にどうぞ。


　RSP02でシステム電源開発とSpaceSuitsサークルでパーツのモデリングをさせていただいています。
　やりたいことがあれば、**"できる"** **"できない"**に関わらず試すことができるのが趣味ならではでないでしょうか。
　
　今回、PlantUMLを使ってPLSS(生命維持装置)をモデリングしようと思います。
　実際にはSysMLを使いモデリングする方がいいらしいです。
　PlantUMLの使い方については下記リンクを参考にしました。
　https://plantuml.com/ja/

#条件設定と参照資料
　簡易的に宇宙服を宇宙服アセンブリ(胴体服、冷却服、ヘルメット)と
　PLSS(生命維持装置)に分けPLSSについて考えてみます。
　また下記リンク資料を元にPLSSについて車輪の再発明で
　50年前の機能要件を満たすようにモデリングしました。
　https://en.wikipedia.org/wiki/Space_suit
　https://www.hq.nasa.gov/alsj/ALSJ-FlightPLSS.pdf
　https://fanfun.jaxa.jp/faq/detail/205.html
　http://iss.jaxa.jp/iss/jaxa_exp/hoshide/library/presskit/press_kit.pdf
　https://fanfun.jaxa.jp/faq/detail/81.html

　宇宙環境については下記を参照させていただきました。
　http://spaceinfo.jaxa.jp/ja/space_environment.html
　http://iss.jaxa.jp/shuttle/flight/sts99/earthkam_02.html

　システム全体を記述するにあたって下記のプロセスに従い記述します。
<img width="318" alt="テンプレート.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/e0380ac4-f7f8-9343-c4ab-7be79127c870.png">



#モデリング
　資料の図からオブジェクトを抽出
<img width="262" alt="PLSS.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/33087972-e247-c2dc-ab41-302230252234.png">

##1. システムの要求分析
　機能要件を決める：システムに何をしてほしいのかを定義する。
　システムがどう動くのかをユーザー視点で明らかにする。
　ユースケースで関係性を明らかにし個別に詳細化する。
　ユースケース記述については下記コースに分け、補足として記載します。
　基本コース(通常)
　代替コース(例外)
![ユースケース.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/f0b23ba2-17be-2740-af8d-30b1222e7632.png)




##2. システムの概念設計
　下記点を検討しつつモデルを使い詳細化していきます。
　・システムの機能を明らかにする。
　・システムのスコープを決める。
　・システムを分析する。

　始めにユースケースや資料からオブジェクトを作成し、
　オブジェクト図を元に関係やフローをまとめます。
　
##2.1 オブジェクト図
　現実の"モノ"や"データ"、それらの関係を整理する。
　オブジェクト図の基本ルールとして下記フローに従い記載します。
　一部例外あり。
![テンプレート2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/82a157ec-0920-7a2d-b3aa-ca87621f1442.png)




　参考資料を元に、パーツや制御やデータの流れを抜き出します。
![PLSS　オブジェクト図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/e1ed62c9-c1f1-dfbb-8bb1-2ab25bd2aa46.png)

##2.2 シーケンス図
　オブジェクト間の相互作用を時系列に記述する。
　今回は省略。

##2.3 クラス図
　オブジェクト図を整理し抽象化する。
　作成したオブジェクト図のコントロールを[操作]に、エンティティを[属性]に、
　バウンダリや機能に見えるコントロールを[クラス]に変更していきます。
![クラス図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/94d4eef2-da4c-9244-e1d2-45a5f085505c.png)


雑ですがコードも張り付けてみました、改造して遊んでみてください。

```plantuml:クラス図.pu
@startuml

酸素供給回路--*センサ類
圧力調整回路--*センサ類
電力管理回路--*センサ類
温度調整回路--*センサ類

PLSS<|--酸素供給回路
酸素供給回路<|--酸素圧力トランスデューサ
酸素供給回路<|--酸素再充填コネクタ
酸素供給回路<|--ベントコネクタ
酸素供給回路<|--ベントバルブ
酸素供給回路<|--ベントフローセンサ
酸素供給回路<|--CCC

PLSS<|--温度調整回路
温度調整回路<|--ファンモータアセンブリ
温度調整回路<|--サブリメータ
温度調整回路<|--ポンプモータアセンブリ
温度調整回路<|--給水回路
給水回路<|--給水リザーバ
給水回路<|--給水充填コネクタ
給水回路<|--給水タンク
給水回路<|--給水ドレインコネクタ

酸素供給回路<|--圧力調整回路
圧力調整回路<|--圧力衣服アセンブリ
酸素供給回路<|--ファンモータアセンブリ
圧力調整回路<|--ファンモータアセンブリ

PLSS<|--電力管理回路
電力管理回路--バッテリ

ファンモータアセンブリ<|--電力管理回路
通信及び情報処理モジュール<|--電力管理回路
PLSS<|--通信及び情報処理モジュール

@enduml
```

##2.4 状態遷移図
　●は状態開始点

![ステート図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/573272/b025c2db-bbf0-e887-86a8-24f3ae1a0f6c.png)








　状態遷移表も作っておくと検証時に確認を取りやすい。




#今後やりたいこと
　無重力空間での流体の流れやそれに伴う圧力/温度の変化などをOpenFOAMなどの
　シミュレーションを用いて検証したいなと考えています。

　また、以前は機械系の技術で制御されていたものが
　現代では電装系の技術に代替できる物もあるのではないかと考えています。
　これらをどう盛り込んでいくか非常に興味あります。

　さらに、過酷環境での体に与える負担は大きいものと思います。
　以前、富士山に登頂した経験ですが登り始めは大丈夫だと思っていたのに
　いつの間にか高山病になり大変でした。どこか無理していたのでしょうね。
　このようなことからリアルタイムで生体情報をとれるような機能を入れたほうが
　いいのではと思いました。最新の宇宙服の機能については情報は少ないですが
　キャッチアップを続けたいと思います。

#あとがき
　システム設計が十分なされていると、その後の検証作業においても
　構想時の資産を流用でき無駄がなくなると考えています。
　また、このようなモノづくりにおいてはエラーの発生やミスは許されないので
　手戻り防止などの観点から非常に有用ではないかと考えています。

　今回資料を元に再現したところ自分はこのようにモデリングしました。
　あまり資料を読み込めていないのですがキー要素を元に機能を考えていくと
　資料の宇宙服と同じような構成になるのではないかと思います。
　話は飛びますが人間の体のほとんどは水でできているらしいです。
　今回、温度湿度の調整や圧力との関係性や機能を考えていく中で
　色々調べていくと、人体とはうまくできているなと感じました。

　今回、必要な技術分野は多岐にわたり理解できないことが多くありました。
　そして**サークルでの開発は始まったばかりで人が足りてません。**
　SysMLや構造系のエンジニアをはじめとして
　特に医療や生物、化学系、惑星科学の知識を持った方がいません。
　突っ込みどころ満載だと思いますのでご指摘ついでに
　ぜひSpaceSuitsサークルに参加いただけると幸いです。





　「リーマンサット・プロジェクト」は「普通の人が集まって宇宙開発しよう」を
　合言葉に活動をしている民間団体です。
　他では経験できない「宇宙開発プロジェクト」に誰もが携わることができます。

　興味を持たれた方は https://www.rymansat.com/join からお気軽にどうぞ。

　新春アドベントカレンダー、次は　@KaitosLab  さんの
「エンジニアでない私が「技術広報」をたちあげてみたワケとアウトリーチ」です。
　お楽しみに！




##その他参考資料
　モデリング手法と統一モデリング言語UML
　トコトンやさしい配管の本
　トコトンやさしいボイラーの本