ターミナル上で動作する衛星追跡,軌道予測ソフトウェアのtrackerが楽しくて色々な衛星の軌道を見たりして楽しんでいます.
しかし設定された衛星しか見ることができません.
任意の衛星を登録してみました.
sourceを眺めると衛星はsource内にハードコードされていて,それを元にCelesTrakから軌道データを取得しているようです.
衛星のタイプは2種類の方法で登録してあり,ISSなどは任意のYYYY-NNNAAA形式の(例えば1994-029AAB)国際識別子で個別の衛星を設定,若しくはCelesTrakでGROUPで検索できるgroup名でそのグループの衛星群(例えばWeatherで様々な気象衛星)が登録してあります.
個別の衛星を追加
時別の衛星を登録してみます.
まず対象の衛星の国際識別子を調べます.
先ずはCelesTrakの以下のページで衛星を検索します.
検索結果から「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の以下のページから好みのグループを探したり,
以下のページから該当の衛星のCatalog Numberから検索します.groupに存在する場合表示されます.
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との兼ね合いなんでしょうが. | 
| Note | ちなみにStarlinkも試したところ7500機以上あるので極以外の地図が埋もれてしまいました……. 
 | 
後はCelesTrakのgroupに無い自分で選んだ衛星群(みちびき群とか)も登録できるといいなと思うのですが少しロジックをいじらないといけなそうです.