terminal衛星追跡アプリのtrackerに衛星を追加

ターミナル上で動作する衛星追跡，軌道予測ソフトウェアのtrackerが楽しくて色々な衛星の軌道を見たりして楽しんでいます．

terminal衛星追跡アプリのtracker – matoken’s blog

しかし設定された衛星しか見ることができません．
任意の衛星を登録してみました．

sourceを眺めると衛星はsource内にハードコードされていて，それを元にCelesTrakから軌道データを取得しているようです．
衛星のタイプは2種類の方法で登録してあり，ISSなどは任意のYYYY-NNNAAA形式の(例えば1994-029AAB)国際識別子で個別の衛星を設定，若しくはCelesTrakでGROUPで検索できるgroup名でそのグループの衛星群(例えばWeatherで様々な気象衛星)が登録してあります．

個別の衛星を追加

時別の衛星を登録してみます．

まず対象の衛星の国際識別子を調べます．
先ずはCelesTrakの以下のページで衛星を検索します．

CelesTrak: Search Satellite Catalog

検索結果から「International Designator」をメモします．

例えば「あらせ」を登録したい場合，「ARASE」で検索，検索結果を見ると国際識別子は「2016-080A」なのでこれをメモしておきます．

次にtrackerのsourceを編集します．
衛星の情報は src/satellite_group.rs に書かれているのでこれを編集します．
pub enum SatelliteGroup { の適当な場所に衛星名を登録します．
fn cospar_id(&self) → Option<&str> { の中に国際識別子を登録します．

今回は以下のようにしました．

$ git diff
diff --git a/src/satellite_group.rs b/src/satellite_group.rs
index 88bbce8..b895b54 100644
--- a/src/satellite_group.rs
+++ b/src/satellite_group.rs
@@ -51,6 +51,7 @@ pub enum SatelliteGroup {
#[strum(to_string = "Radar calibration")]
RadarCalibration,
CubeSats,
+ Arase,
}

impl SatelliteGroup {
@@ -124,6 +125,7 @@ impl SatelliteGroup {
Self::Iss => Some("1998-067A"),
Self::Css => Some("2021-035A"),
Self::Dfh1 => Some("1970-034A"),
+ Self::Arase => Some("2016-080A"),
_ => None,
}
}

buildして実行して動作確認をします．

$ cargo build
$ target/debug/tracker

あらせの楕円軌道が表示できるようになりました :)

衛星グループを登録

一つ一つ衛星を登録してくのは面倒です．CelesTrakの以下のページから好みのグループを探したり，

CelesTrak: Current GP Element Sets

以下のページから該当の衛星のCatalog Numberから検索します．groupに存在する場合表示されます．

CelesTrak: Master GP Index

group名がわかったらsourceをいじります．
今回は最近第1弾の衛星群の打ち上げのあったAmazonの低軌道通信衛星サービスのProject Kuiperだと思われるkuiperで試してみます．

わかりやすいように一旦元に戻します．

$ git reset --hard

今夏も src/satellite_group.rs を編集します．

$ git diff src/satellite_group.rs
diff --git a/src/satellite_group.rs b/src/satellite_group.rs
index 88bbce8..33c5d0b 100644
--- a/src/satellite_group.rs
+++ b/src/satellite_group.rs
@@ -37,6 +37,9 @@ pub enum SatelliteGroup {
Galileo,
Beidou,

+ // Communications Satellites
+ Kuiper,
+
// Scientific satellites
#[strum(to_string = "Space & Earth Science")]
SpaceEarthScience,
@@ -141,6 +144,7 @@ impl SatelliteGroup {
Self::Glonass => Some("glo-ops"),
Self::Galileo => Some("galileo"),
Self::Beidou => Some("beidou"),
+ Self::Kuiper => Some("kuiper"),
Self::SpaceEarthScience => Some("science"),
Self::Geodetic => Some("geodetic"),
Self::Engineering => Some("engineering"),

buildして実行して動作確認をします．

$ cargo build
$ target/debug/tracker

まだ1回の打ち上げしか無いので1つの軌道しかなさそうです．

Note

Project Kuiperの次の打ち上げ予定日は6/13．その後今年だけで48回予定がされていそうで追い上げがすごいですね．FCCとの兼ね合いなんでしょうが．
https://nextspaceflight.com/launches/?search=kuiper

Note

ちなみにStarlinkも試したところ7500機以上あるので極以外の地図が埋もれてしまいました……．

Post by @matoken

View on Mastodon

後はCelesTrakのgroupに無い自分で選んだ衛星群(みちびき群とか)も登録できるといいなと思うのですが少しロジックをいじらないといけなそうです．