メインコンテンツまでスキップ

コード例

Satcat Launchとのインタラクションは、Satcat SDKまたはCLIツールを用いて自動化することができます。このページでは、Satcat Launchをお使いのプラットフォームにスムーズに組み込めるように、Satcat SDKおよびCLIツール上での打ち上げスクリーニングの作成、設定、実行する方法をご紹介します。


スクリーニングジョブの設定方法

このセクションでは、プライマリRSOの打ち上げ時の軌道暦、打ち上げウィンドウ、およびセカンダリRSOのカタログを用いて打ち上げスクリーニングを作成および設定する際のコード例を紹介します。

コード例 - スクリーニングジョブの設定方法
# 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,
)

セカンダリデータ

カタログの追加

カタログをセカンダリとして使用すると、Satcat Launchは, プライマリ物体をそのカタログ内のすべての軌道暦と照合してスクリーニングを行います。Satcat Launchには、スクリーニングに適したカタログを選ぶ際の参考となる、2つのインジケータがあります。:

  • Latest   特定のカタログタイプで最も新しく作成されたカタログ
  • Best   ユーザーの組織で利用可能な最適なカタログタイプの最新カタログ(通常はSP)
コード例 - 最新カタログの取得
catalog = client.screening.get_latest_catalog()
コード例 - "Best Catalog"を使用する場合
screening = client.screening.create_screening(
...
add_best_secondary_catalog=True,
)

軌道暦の追加

カタログの代わりに、軌道暦をひとつ以上アップロードすると、直接セカンダリとして使用することができます。

コード例 - 軌道暦のアップロード
ephemeris = client.screening.create_ephemeris(
"23_Launch_Payload_Caliper.txt",
file_format="caliper",
hbr_m=15.0
)
コード例 - 特定のNORAD IDの軌道暦をセカンダリとして使用する
# 例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]
)

しきい値半径(Threshold Radius)の値の変更

しきい値半径は、宇宙領域内の2つの物体が接近したと見なされる距離です。Satcat Launchでは、異なるカテゴリのセカンダリ物体に対して、異なるしきい値半径の値を設定することもできます。

コード例 - しきい値半径の設定
configuration = kayhan.ScreeningConfiguration(
...,
threshold_radius_km = 15.0
)
screening = client.screening.create_screening(
config=configuration,
...
)

コード例 - セカンダリ物体のカテゴリごとにしきい値半径を設定する
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,
...
)

Strict Coverage

プライマリのカバレッジとは、プライマリ物体の軌道暦がセカンダリの軌道暦と時間的に重なっている範囲を指します。Satcat Launchでは、オプションとして「Strict Coverage」という設定パラメータを設けており、デフォルトでオンになっています。これをオフにすると、PARTIALカバレッジ(部分的に重複している場合)の場合でも、スクリーニングを実行することができます。カバレッジについての詳細はこちら

コード例 - Strict Coverageを無効にする
screening = client.screening.create_screening(
...
strict_coverage=False # Strict Coverageを手動でオフにする
)

スクリーニングの提出

スクリーニングを作成し、設定を終えたら、Satcat Launchへ送信していただきます。

コード例 - スクリーニングの作成と同時に提出
screening = client.screening.create_screening(
...
submit=True # スクリーニングを作成すると自動的に送信される
)
コード例 - 手動で送信
client.screening.submit_screening(screening)

結果を待つ

Satcat Launchのスクリーニングは非同期で実行され、Kayhan Spaceのサーバー上でキュー処理されます。提出したスクリーニングの結果を待つ間、Satcat Launch上でスクリーニングのステータスを確認したり、サーバーに自動的にポーリングして待つことができます。

コード例 - スクリーニングの完了を待つ
# スクリーニングオブジェクトを更新し、ステータスを確認する
screening = client.screening.get_screening(screening.id)
print(screening.status)

# 逐次ステータスを確認せずに、スクリーニング完了まで自動的に待機する
screening = client.screening.await_screening_completion(screening)

スクリーニングの結果

スクリーニングが完了すると、スクリーニング中に特定された接近事象を確認できます。

コード例 - 特定された接近事象の一覧表示
conjunctions = client.list_conjunctions(screening)
ヒント

filterssort_fieldsort_directioncountフィルタやソート条件を指定して、接近事象のリストを取得することもできます。例えば、衝突確率(Probability of Collision)が高い順に接近事象リストを並び替えるには、次のようにします:

conjunctions = client.list_conjunctions(
screening,
sort_field="collision_probability",
sort_direction="desc"
)