コード例
Satcat Launchとのインタラクションは、Satcat SDKまたはCLIツールを用いて自動化することができます。このページでは、Satcat Launchをお使いのプラットフォームにスムーズに組み込めるように、Satcat SDKおよびCLIツール上での打ち上げスクリーニングの作成、設定、実行する方法をご紹介します。
スクリーニングジョブの設定方法
このセクションでは、プライマリRSOの打ち上げ時の軌道暦、打ち上げウィンドウ、およびセカンダリRSOのカタログを用いて打ち上げスクリーニングを作成および設定する際のコード例を紹介します。
コード例 - スクリーニングジョブの設定方法
- SDK (Python)
- CLI
# O/O軌道暦のアップロード
ephemeris = client.screening.create_ephemeris(
"23_Launch_Payload_Caliper.txt",
file_format="caliper",
hbr_m=15.0
)
# 打ち上げスクリーニングの設定
configuration = kayhan.ScreeningConfiguration(
screening_type="LAUNCH",
launch_window_start=kayhan.utc("2023-01-01T00:00:00.000Z"),
launch_window_end=kayhan.utc("2023-01-01T01:00:00.000Z"),
launch_window_cadence_s=1,
)
# スクリーニングの作成
screening = client.screening.create_screening(
config=configuration,
primaries=[ephemeris],
add_best_secondary_catalog=True,
)
作成したスクリーニングのid
フィールドの値は、スクリーニング結果を取得するために使うので、メモをとってください。
$ kayhan create screening \
--type launch \
--launch-window-start='2023-01-01T00:00:00.000Z' \
--launch-window-end='2023-01-01T01:00:00.000Z' \
--launch-window-cadence-s=1 \
--pef 23_Launch_Payload_Caliper.txt \
--pfmt caliper
セカンダリデータ
カタログの追加
カタログをセカンダリとして使用すると、Satcat Launchは, プライマリ物体をそのカタログ内のすべての軌道暦と照合してスクリーニングを行います。Satcat Launchには、スクリーニングに適したカタログを選ぶ際の参考となる、2つのインジケータがあります。:
Latest
特定のカタログタイプで最も新しく作成されたカタログBest
ユーザーの組織で利用可能な最適なカタログタイプの最新カタログ(通常はSP)
コード例 - 最新カタログの取得
- SDK (Python)
- CLI
catalog = client.screening.get_latest_catalog()
$ kayhan list catalogs --latest
コード例 - "Best Catalog"を使用する場合
- SDK (Python)
- CLI
screening = client.screening.create_screening(
...
add_best_secondary_catalog=True,
)
$ kayhan create screening \
--use-best-catalog \
...
軌道暦の追加
カタログの代わりに、軌道暦をひとつ以上アップロードすると、直接セカンダリとして使用することができます。
コード例 - 軌道暦のアップロード
- SDK (Python)
- CLI
ephemeris = client.screening.create_ephemeris(
"23_Launch_Payload_Caliper.txt",
file_format="caliper",
hbr_m=15.0
)
$ kayhan create ephemeris 23_Launch_Payload_Caliper.txt caliper --hbr_m=15.0
コード例 - 特定のNORAD IDの軌道暦をセカンダリとして使用する
- SDK (Python)
- CLI
# 例1: ID(ephemeris_id)で特定の軌道暦を取得
ephemeris = client.screening.get_ephemeris(ephemeris_id)
# 例2: カタログ(catalog_idによる)から特定のRSOの軌道暦を、Norad Catalog ID(例:25544)で取得
ephemeris = client.screening.list_catalog_ephemerides(catalog_id, filters=[{"field": "norad_cat_id", "value": 25544}])[0]
# 例3: セカンダリとして使用する軌道暦をアップロードする
ephemeris = client.screening.create_ephemeris("MEME_12345_OEM_20230301.txt", file_format="OEM", comments="Custom Ephemeris for Object 12345")
screening = client.screening.create_screening(
...
secondaries=[ephemeris]
)
例:IDを入力して特定の軌道暦を使用する
$ kayhan create screening \
--secondary-ephemeris-ids adbf0394-973f-4db4-a4b9-24abed33a1a5
しきい値半径(Threshold Radius)の値の変更
しきい値半径は、宇宙領域内の2つの物体が接近したと見なされる距離です。Satcat Launchでは、異なるカテゴリのセカンダリ物体に対して、異なるしきい値半径の値を設定することもできます。
コード例 - しきい値半径の設定
- SDK (Python)
- CLI
configuration = kayhan.ScreeningConfiguration(
...,
threshold_radius_km = 15.0
)
screening = client.screening.create_screening(
config=configuration,
...
)
$ kayhan create screening \
--threshold-radius-km=15.0
コード例 - セカンダリ物体のカテゴリごとにしきい値半径を設定する
- SDK (Python)
- CLI
configuration = kayhan.ScreeningConfiguration(
...,
threshold_radius_manned_km = 200.0,
threshold_radius_active_km = 25.0,
threshold_radius_debris_km = 2.5
)
screening = client.screening.create_screening(
config=configuration,
...
)
$ kayhan create screening \
--threshold-radius-manned-km=200.0 \
--threshold-radius-active-km=25.0 \
--threshold-radius-other-km=2.5 \
...
Strict Coverage
プライマリのカバレッジとは、プライマリ物体の軌道暦がセカンダリの軌道暦と時間的に重なっている範囲を指します。Satcat Launchでは、オプションとして「Strict Coverage」という設定パラメータを設けており、デフォルトでオンになっています。これをオフにすると、PARTIAL
カバレッジ(部分的に重複している場合)の場合でも、スクリーニングを実行することができます。カバレッジについての詳細はこちら
コード例 - Strict Coverageを無効にする
- SDK (Python)
- CLI
screening = client.screening.create_screening(
...
strict_coverage=False # Strict Coverageを手動でオフにする
)
$ kayhan create screening \
...
--no-strict-coverage # Strict Coverageを手動でオフにする
スクリーニングの提出
スクリーニングを作成し、設定を終えたら、Satcat Launchへ送信していただきます。
コード例 - スクリーニングの作成と同時に提出
- SDK (Python)
- CLI
screening = client.screening.create_screening(
...
submit=True # スクリーニングを作成すると自動的に送信される
)
$ kayhan create screening \
...
--submit # automatically submit the Screening
コード例 - 手動で送信
- SDK (Python)
- CLI
client.screening.submit_screening(screening)
$ kayhan submit screening [screening id]
結果を待つ
Satcat Launchのスクリーニングは非同期で実行され、Kayhan Spaceのサーバー上でキュー処理されます。提出したスクリーニングの結果を待つ間、Satcat Launch上でスクリーニングのステータスを確認したり、サーバーに自動的にポーリングして待つことができます。
コード例 - スクリーニングの完了を待つ
- SDK (Python)
- CLI
# スクリーニングオブジェクトを更新し、ステータスを確認する
screening = client.screening.get_screening(screening.id)
print(screening.status)
# 逐次ステータスを確認せずに、スクリーニング完了まで自動的に待機する
screening = client.screening.await_screening_completion(screening)
# Retrieve the screening and check its status
$ kayhan get screening [screening id]
$ kayhan await screening [screening id]
kayhan create screening
コマンドで--wait
フラグを使用して、スクリーニングの提出と待機の両方を自動的に行うこともできます。
スクリーニングの結果
スクリーニングが完了すると、スクリーニング中に特定された接近事象を確認できます。
コード例 - 特定された接近事象の一覧表示
- SDK (Python)
- CLI
conjunctions = client.list_conjunctions(screening)
filters
、sort_field
、sort_direction
、count
フィルタやソート条件を指定して、接近事象のリストを取得することもできます。例えば、衝突確率(Probability of Collision)が高い順に接近事象リストを並び替えるには、次のようにします:
conjunctions = client.list_conjunctions(
screening,
sort_field="collision_probability",
sort_direction="desc"
)
$ kayhan list conjunctions [screening id]
--count
フラグを使用して、接近事象の数を制限することもできます。