お気楽天体観測

肩ひじ張らずに天文を楽しむ記録です。メイン機材はSpaceCat51、CelestronC5、SkyMemoS、CRUX140Traveler、AZ-GTi。カメラはPentaxKP、K70とZWOASI533MCP

シリーズ:電子ファインダーを整えてみたい(1) ASTAPのCLIを試してみる

突然ですが、双眼鏡を経緯台で運用する際に、電子ファインダーがあると便利かも、ということで、これからうじゃうじゃいろいろ試してみたいなと思っています。 試行錯誤の過程をシリーズ化して残そうと、今時点では思っていますが、推進されるかは不明です。 また、基本は自分の備忘目的でのメモであり、内容も正しくない可能性のあるものを、ついでに公開している駄文のような物ですので、その点ご承知おきいただき、読む場合は読んでいただければと思います。

なお、何か知見をお持ちの方はぜひコメントでアドバイスをいただければと思います。

電子ファインダーの方向性

コンセプトとしては、以下2つを考えています。

  1. 余っている機材を活用したい
  2. 軽量で運用したい

そこで、活用できそうなあまり機材を見てみると

  • 天体カメラ
    • ASI224MC
    • ASI294MC
    • NeptuneCII
  • Cマウントレンズ
    • 10-60mmズームレンズ(安物)
    • 50mm短焦点レンズ(安物)
  • 使ってないスマホ
  • 使ってないラズパイ4(4Gモデル)
  • 予備のアルカスイスプレートとかマウントとか

と、結構あまり機材があります。 これらをうまく活用しつつ、軽量で使いやすい電子ファインダーをなんか作ってみたいですね。

一番最初に思いつくやつ

ZWOのカメラが余っているようであれば、ASICAPでいいんじゃね?ってのが一番最初に思いつくことでした。 ASICAPは試してみましたが、ZWOのカメラをスマホカメラみたいに使う、ためのソフトで、電子ファインダーとしての機能は、当たり前ですが、無いです。

電子ファインダーで実現されたいこと

改めて、電子ファインダーで実現さ入れたいことを整理してい見ます。

  1. 経緯台(双眼鏡とか望遠鏡)の現在位置がわかりたい

これにつきますねw

これをどうやって実現するか、ですね。

実装の方向性

さて、久しぶりにプログラミングでもしてみるか、という個人的な機運の高まりもあり、Androidのアプリ実装を前提として、手段を考えてみています。 ※Androidアプリの実装の勉強も兼ねて。今後の人生に必要になるかは全く不明ですが。 ※当方のプログラミングスキルとしては、Webのフロントもサーバサイドも経験あり、スマホアプリも画像処理系も全く未経験、という感じです。

そんなこともあり、どうやったら実現できそうか、主要な必要機能を考えてみました。

  • カメラ制御機能
    • ZWO
      • ZWOからはAndroidドライバーが配布されているため、プログラミング可能な可能性あり。
      • 最悪、カメラ制御はZWOのASICAPを使って、撮影された画像を自動で読み込みなんか処理をする、という処理方式も実現可能かも
    • PlayerOne
      • ぱっと探したところ、Android用のDriverは見当たらず。まあ、ニーズもないですよねw
  • プレートソルビング機能
    • 画像をプレートソルブして、現在位置を特定する機能ですね。
    • Androidで動作しそうなものとして、ASTAPのCLIなるものがあることを発見!これが使えればAndroid内でもプレートソルブができそう
  • 現在位置の表示機能
    • 撮影した画像にリアルタイムでアノテーション表示、できたらいいですね
      • 自分のプログラミング能力的にはかなり難しそう
    • 撮影した画像の解析情報をASCOMかINDIのサーバ機能を疑似って実装して、現在位置情報を公開し、SkySafari上で見えるようにする
      • なんか、自分のプログラミングスキルでもなんとかなりそう(少なくとも実装イメージはわく)

というわけで、まず

  • 画像撮影:ASICAP
  • 画像解析:独自AndroidアプリでASTAP CLIを使って実現?
  • 結果表示:独自AndroidアプリにIndiサーバorASCOMサーバを疑似ったサーバ機能の最低限を実装し、SkySafariに情報を伝えて、SkySafariで表示

という実現の方向性で進めていこうかなと、今時点で思っています。

最初は、勉強しながらということもあり、実装量は最小でシンプルに実装することを心掛けながら進めていこうかなと思っています。

本題:ASTAPのCLIを試してみる

さて、前置きが非常に長くなりましたが、今回の記事では、ASTAPのCLIを試してみました。 今回は、Androidで試す前にまずWindowsで試しています。

プログラム、資材のダウンロード

ASTAPのサイトから、CLIプログラムとデータベースをダウンロードします。

www.hnsky.org

CLIプログラム、データベースのダウンロードはこちらから。

データベースはH18とV17をダウンロードしてみました。 H18は展開したら985MB、V17は692MB、と両方とも巨大です。

プログラムの配置

適当にフォルダを作って、DLしたZIPを展開し、中身を配置します。

ASTAP CLIを動作させるためには、どうやらASTAPCLIの実行ファイルとデータベースを同じディレクトリに配置すればよいようです。

データベースごとに、それぞれ - astapcli_h18 - astapcli_v17 というフォルダを作って、astap_cli.exeと展開したデータベースファイルを配置します。

すると、こんな感じになります。

また、同じディレクトリに、こちらの画像を配置しました。以前、SpaceCat51+ASI533MCPで撮影した、アンテナ銀河です。 これをプレートソルブテスト対象とします。

続いて、配置したディレクトリをコマンドプロンプトかPowerShellで開きます。

ASTAP CLIを実行してみる(V17データベース)

まず、astap_cliの説明はこちらにあります。

https://www.hnsky.org/astap.htm#astap_command_line

astap_cli.exe -h

でも表示できます。

PS C:\Users\hiroo\Documents\astapcli_V17> .\astap_cli.exe -h
ASTAP astrometric solver version CLI-2022.11.11
(C) 2018, 2022 by Han Kleijn. License MPL 2.0, Webpage: www.hnsky.org
Usage:
-f  filename  {fits, tiff, png, jpg files}
-r  radius_area_to_search[degrees]
-z  downsample_factor[0,1,2,3,4] {Downsample prior to solving. 0 is auto}
-fov diameter_field[degrees]
-ra  center_right ascension[hours]
-spd center_south_pole_distance[degrees]
-s  max_number_of_stars  {default 500, 0 is auto}
-t  tolerance  {default 0.007}
-m  minimum_star_size["]  {default 1.5}
-check apply[y/n] {Apply check pattern filter prior to solving. Use for raw OSC images only when binning is 1x1}
-speed mode[auto/slow] {Slow is forcing reading a larger area from the star database (more overlap) to improve detection}
-o  file {Name the output files with this base path & file name}
-d  path {specify a path to the star database}
-analyse snr_min {Analyse only and report median HFD and number of stars used}
-extract snr_min {As -analyse but additionally write a .csv file with the detected stars info}
-log   {Write the solver log to file}
-progress   {Log all progress steps and messages}
-update  {update the FITS header with the found solution. Jpeg, png, tiff will be written as fits}
-wcs  {Write a .wcs file  in similar format as Astrometry.net. Else text style.}
Preference will be given to the command line values.

先ほど配置したファイルを指定して実行してみます。

PS C:\Users\hiroo\Documents\astapcli_V17> .\astap_cli.exe -f .\20210316235039_original.jpg
Using star database V17
Trying FOV: 9.5
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 9.50 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
501 stars, 402 quads selected in the image. 501 database stars, 402 database quads required for the square search field of 9.5d. Search window at 100% based on the number of quads. Step size at 100% of image height
10d,21d,35d,49d,64d,82d,92d,103d,113d,122d,132d,142d,153d,167d,179d,Trying FOV: 6.3
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 6.33 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
501 stars, 402 quads selected in the image. 501 database stars, 402 database quads required for the square search field of 6.3d. Search window at 100% based on the number of quads. Step size at 100% of image height
6d,14d,23d,32d,42d,52d,62d,74d,81d,88d,95d,104d,111d,118d,124d,131d,139d,146d,155d,163d,171d,Trying FOV: 4.2
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 4.22 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
501 stars, 402 quads selected in the image. 501 database stars, 402 database quads required for the square search field of 4.2d. Search window at 100% based on the number of quads. Step size at 100% of image height
4d,9d,15d,21d,27d,34d,40d,47d,54d,61d,69d,73d,82d,90d,96d,101d,105d,109d,114d,118d,122d,126d,131d,135d,141d,146d,152d,156d,162d,168d,173d,178d,Trying FOV: 2.8
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 2.81 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
501 stars, 402 quads selected in the image. 501 database stars, 402 database quads required for the square search field of 2.8d. Search window at 100% based on the number of quads. Step size at 100% of image height
3d,6d,10d,14d,18d,22d,26d,30d,35d,39d,44d,48d,53d,58d,63d,68d,71d,76d,82d,88d,91d,95d,98d,101d,104d,107d,110d,112d,115d,118d,121d,124d,127d,129d,132d,135d,139d,142d,146d,149d,152d,156d,160d,
43 of 44 quads selected matching within 0.007 tolerance.
Solution["] x:=-3.121049*x+ -0.207879*y+ 5005.170057,  y:=0.208829*x+ -3.122799*y+ 4380.977043
Solution found: 12: 01  46.8 -18d 52  36
Solved in 14.8 sec offset was 161.1d.  Used stars down to magnitude: 13.0
Warning scale was inaccurate! Set FOV=2.62d, scale=3.1"

実行すると、処理経過のログが出力されつつ、最後のほうに処理結果が出力されます。 この部分が最終出力ですね

Solution["] x:=-3.121049*x+ -0.207879*y+ 5005.170057,  y:=0.208829*x+ -3.122799*y+ 4380.977043
Solution found: 12: 01  46.8 -18d 52  36
Solved in 14.8 sec offset was 161.1d.  Used stars down to magnitude: 13.0
Warning scale was inaccurate! Set FOV=2.62d, scale=3.1"

残念ながら、自分にはこれだけ見ても何がなんだかわかりませんので、astrometry.netでプレートソルブして、同じ情報が出ていないか確認します。

と、ちゃんと一致してましたw まあ、当たり前ですねw

あと、何もオプションをつけないと、処理に14.8秒かかっているみたいです。 こちらは、downsample_factorとかmax_number_of_stars を設定するとよさそうな雰囲気。

-z  downsample_factor[0,1,2,3,4] {Downsample prior to solving. 0 is auto}
-s  max_number_of_stars  {default 500, 0 is auto}

実行してみると

  • z:2 → 15.1秒
  • z:4 → 13.5秒
    • 以下の警告あり。
    • Warning, remaining image dimensions too low! Try to REDUCE OR REMOVE DOWNSAMPLING.
  • s:300 → 6.9秒
  • s:100 → 4秒

と、解析に使用する星の数を減らすと、処理速度は向上するようです。

なお、50で実行したところ解析に失敗したので、減らせばよい、というものではないということがわかりました。

PS C:\Users\hiroo\Documents\astapcli_V17> .\astap_cli.exe -f .\20210316235039_original.jpg -s 50
Using star database V17
Trying FOV: 9.5
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 9.50 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
50 stars, 35 quads selected in the image. 50 database stars, 35 database quads required for the square search field of 9.5d. Search window at 169% based on the number of quads. Step size at 100% of image height
10d,21d,35d,49d,64d,82d,92d,103d,113d,122d,132d,142d,153d,167d,179d,Trying FOV: 6.3
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 6.33 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
~~~中略~~~
Creating grayscale x 2 binning image for solving/star alignment.
ASTAP solver version CLI-2022.11.11
Search radius: 180 degrees,
Start position: 00: 00  00.0, +00d 00  00
Image height: 0.37 degrees
Binning: 2x2
Image dimensions: 3008x3008
Quad tolerance: 0.007
Minimum star size: 1.5"
Speed: normal
50 stars, 35 quads selected in the image. 50 database stars, 35 database quads required for the square search field of 0.4d. Search window at 169% based on the number of quads. Step size at 100% of image height
1d,1d,2d,2d,3d,3d,4d,4d,5d,5d,6d,6d,7d,7d,8d,8d,9d,9d,10d,11d,11d,12d,12d,13d,13d,14d,14d,15d,15d,16d,16d,17d,17d,18d,19d,19d,20d,20d,21d,21d,22d,22d,23d,23d,24d,24d,25d,26d,26d,27d,27d,28d,28d,29d,29d,30d,31d,31d,32d,32d,33d,33d,34d,35d,35d,36d,36d,37d,37d,38d,39d,39d,40d,40d,41d,42d,42d,43d,43d,44d,45d,45d,46d,46d,47d,48d,48d,49d,49d,50d,51d,51d,52d,53d,53d,54d,55d,55d,56d,57d,57d,58d,59d,59d,60d,61d,61d,62d,63d,63d,64d,65d,65d,66d,67d,68d,68d,69d,70d,71d,71d,72d,73d,74d,74d,75d,76d,77d,77d,78d,79d,80d,80d,81d,82d,83d,84d,85d,85d,86d,87d,88d,89d,89d,90d,90d,91d,91d,92d,92d,92d,93d,93d,93d,94d,94d,95d,95d,95d,96d,96d,96d,97d,97d,97d,98d,98d,99d,99d,99d,100d,100d,100d,101d,101d,102d,102d,102d,103d,103d,103d,104d,104d,105d,105d,105d,106d,106d,106d,107d,107d,107d,108d,108d,109d,109d,109d,110d,110d,110d,111d,111d,112d,112d,112d,113d,113d,113d,114d,114d,115d,115d,115d,116d,116d,116d,117d,117d,118d,118d,118d,119d,119d,119d,120d,120d,120d,121d,121d,122d,122d,122d,123d,123d,123d,124d,124d,125d,125d,125d,126d,126d,126d,127d,127d,128d,128d,128d,129d,129d,129d,130d,130d,130d,131d,131d,132d,132d,132d,133d,133d,133d,134d,134d,135d,135d,135d,136d,136d,137d,137d,137d,138d,138d,139d,139d,139d,140d,140d,141d,141d,141d,142d,142d,143d,143d,143d,144d,144d,145d,145d,145d,146d,146d,147d,147d,147d,148d,148d,149d,149d,149d,150d,150d,150d,151d,151d,152d,152d,153d,153d,153d,154d,154d,155d,155d,155d,156d,156d,156d,157d,157d,158d,158d,159d,159d,159d,160d,160d,161d,161d,161d,162d,162d,163d,163d,163d,164d,164d,165d,165d,165d,166d,166d,167d,167d,167d,168d,168d,169d,169d,169d,170d,170d,171d,171d,172d,172d,172d,173d,173d,174d,174d,175d,175d,175d,176d,176d,177d,177d,178d,178d,178d,179d,179d,180d,No solution found!  :(

ASTAP CLIの解析速度

-s 100の場合の速度が4秒と、一見高速に見えますが、これをAndroidで実行した場合の処理時間は気になりますねー ちなみに、私のパソコンは実は新調したてのSurfacePro9のCorei7モデルだったりするので、なおのことAndroidでの実行速度は気になるところです。

なお、今回使った画像は3008x3008≒9Mピクセルですが、実際に使うつもりなカメラはASI224MCで1304x976≒1.3Mピクセルと、処理対象のデータ量は約9分の1なので、この点は速度にもいい影響がありそうです。

今回のまとめ

ASTAP CLIでプレートソルブを実施し、画像の中心の座標を取得することができました。 ぶっちゃけ、この値を現在位置としてSkySafariにマウントの情報として渡すことができれば、一端のやり方での目標は達成されるわけなんですが、そこには長い道のりがありそうです。 ※そもそもAndroidのアプリ開発も初めてなので、勉強しながらです。

が、せっかく最近購入した双眼鏡(CometScan70x15)や望遠鏡(Kenko SE-AT100N)で眼視をもっと簡単に楽しむために、少しずつ進めていこうかなと思っています。

そして、次回は、Androidのエミュレータで動かしてみようと思います。