FC2ブログ

天体観測ブーム来る?

天城高原に天体撮影に行っていました。

土曜日18時半頃現地着でしたが、駐車場(下)はすでに天文屋の人達で8割がた埋まっている状態でした。ほどなくして空きスペースは無くなり、その後に来た人は空きを探して場内をうろうろ。私は何度も天城高原には来ていますが、このような状態になったのは初めて目撃しました。

確実な事は言えませんが、最近になってこういう趣味を始めた人が増えているような気がします。また、大学等の天文サークルの活動も活発になってきている気がします。

考えてみれば、エントリーレベルの天文機材もかなり低価格化してきており、また、デジタル撮影機器も高機能・低価格化していて、一昔前に比べればはるかに入門しやすい状況なんだと思います。しかし、状況だけ揃ってもそれだけでこういう事を志す人が増えるとも思えません。ちょっと前には「宙ガール」なんて言葉もありましたが、金環食とかパンスターズ、アイソン彗星とか、あるいははやぶさの帰還とか、諸々の要因が重なっているんでしょうね。天文人口が増えるのは喜ばしい反面、観測地が使用禁止になるとかの悪影響にも心配しています。

天城高原と言えばなんと言っても南天の暗さがピカイチの場所です。茨城や福島の空が暗い所に行っても、南だけはどうしても東京の影響を受けてしまいます。こういう場所に来たらやっぱり南の天体を狙いたくなりますね。というわけでIC2177です。

IC2177_20141123.jpg

いつものように翌朝まで車中泊して、起きて車外に出てみてまたビックリ。天文マニアに変わって登山者の車がびっちり。駐車区画外の空きスペースまで車が駐車しています。今年最後の連休という事で人出が多かったのでしょうかねー。

日曜は20時頃まで天城高原に居て、天気が思わしくないので下山して温泉に入って帰宅しました。
スポンサーサイト



line

RTKをやってみる

NS-RAWというGPSユニットを使ってRTKをやってみています。RTKとはReal Time Kinematicの略で、GPS(とか他の航法衛星)を使ってリアルタイムに高精度(cmオーダー)な位置を求める一手法です。

GPSは今や携帯やスマホにも当たり前のように搭載されるようになりました。私はGPSの受信機が出回り始めた頃からこの方面に首を突っ込んでいましたが、当時はハンディタイプの受信機でも最低10万以上していたと思います。

GPSで位置を出すのは、1台の受信機で位置が出せるダイレクト測位(普通GPSと言えばこの方法)と、位置がわかっている基準点に置いたGPS受信機との相対位置を正確に出すスタティック測位があります。携帯・スマホのGPSと言えば前者の手法、測量の世界では後者の方法で行っています。スタティックではcmオーダーの精度で未知の点の座標が求められますが、それに使用する受信機は大変高価で、1台数百万はします。私が最初に接したものはTrimbleの4000SSEという黄色い受信機で、確か1台1千万以上したように記憶しています。しかも基準点と未知点の2か所に同時に設置しなければならないので最低2台必要でした。ところが、GPSの受信装置が小型化していき、大量に生産されるようになってきて、非常に安価なGPS受信機でもcmオーダーの精度で位置を求めることも不可能ではなくなってきました。また、最近ではGPSの他にもロシアのGLONASS、ヨーロッパのガリレオ、中国の北斗、日本のQZSSなど様々な測位システムが利用できるようになってきて、GNSS(Global Navigation Satelite System)なんて言うようになってきました。

ところで、先ほどの2つの方法は何が違うかと言うと、前者は衛星から発射される電波が受信機に届くまでの時間を推定して未知点の座標を求めるものですが、後者の方は既知の点と未知の点で同時に衛星からの電波を受信して、その位相差から衛星から各々の点までの距離の差を求めるという手法です。後者の場合、前者の方法で位置を求めるための信号を乗せている搬送波そのものを使って位相差を求めていますので、求める時間差は非常に高精度に求まります。しかし、一つ大きな問題があります。それは、位相差が波の一周期の中でしか求まらない事です。例えば、位相差が0.2波長だったとします。でもこれは1.2波長ずれているのかも知れないし、100.2波長のずれかも知れません。このように波長の整数倍の不確定要素があります。これを整数値バイアス(Integer Ambiguity)と呼んでいます。この手法の核心部分は、如何にして整数値バイアスを推定できるかにかかっていると言えます。

先ほど述べたように近年はGPSの受信モジュールも小型化が進み、また低価格化も進んできました。先ほどの高精度の測量方法にも使えるGPSモジュールも個人でも手の届くような安価な価格で売られています。そんな訳で私も安くなってきたGPSモジュールを使って実験をしてみました。必要なのはRAWデータの出力が出来るGPSモジュールと処理ソフトウェア。GPSモジュールで良く使われているようなのはubloxのLEA-4Tなど。LEA-4Tはすでに製造中止になっていて入手は難しそう。新しいものは割と価格が高め。SkyTrackのVenus8を使用しているNS-RAWという受信機がNavSparkというところで$80程で入手できます。GPSのみの受信でRAWデータしか出力できないのが難ですが、他に比べて入手が簡単そうだったので購入してみました。
それと処理ソフトウェアですが、rtklibというオープンソフトウェアがあります(Takasu and Yasuda, 2009)。有難いですね。

_DSC5028.jpg
こちらがNS-RAWの本体。とても小さいです。これをPCのUSBポートに繋ぐと、シリアルUSBコンバータとして働き、COMポートの先にVenus8が繋がって見えます。・・・の筈なのですが、繋いでみたものの全くこのGPSユニットを認識しません。UARTのTXDがコンタクトポートに出ているので手持ちのシリアル-USB変換機に繋いでみましたがおもわしくありません。オシロで見るとちゃんと信号が出ていますが、電圧が3.3Vなのでダメなようです。TTL⇔RS-232Cの変換機をかまさないとならないようです。まぁ後々こういうのがあっても便利かもしれないと思って秋月でポチった後に、「もしやケーブルが悪いのでは?」と思ってUSBケーブルを取り換えてみました。するとPCに刺した瞬間に例の「バブッ」(こういう音を表現するの難しい)という音と共に認識されました。ダメだったケーブルは確か充電用に購入したものだったので、信号線が繋がっていなかったのかも知れません。

RTK(Real Time Kinematic)測位をするには、既知の点に置いてあるGPSからの信号を受信する必要があります。文字通りのリアルタイムで測位をするには、モデムやネットなどで情報をリアルタイムに受信する必要がありますが、後処理で良ければファイルに落としたデータから計算することも可能です。その場合、既知点を自分で用意しなくても、国土地理院から電子基準点の観測データをダウンロードしてきて使う事が可能です。ユーザー登録が必要ですが、このページで近くの電子基準点のデータをダウンロードすることが出来ます。RTKの場合、基準点までの距離があまり遠いと計算が出来ません。2周波を使う受信機なら20km位まではいけそうですが、私の購入したNS-RAWは1周波なので、5~6kmが良い所ではないでしょうか。

まずはrtklibの性能評価の為に、2地点の電子基準点のデータをダウンロードして、片方の点を未知点として座標値を計算してみます。電子基準点「つくば3」と「八郷」の2点のデータをダウンロードしました。八郷を既知点としてつくば3の座標を求めてみたいと思います。
YST-TSK3-FIX.png
使えるデータはすべて使えという事で、GPSの他にもGLONASSとQZSSを使用しています。グリッドの間隔は5mm(!)です。つくば3の座標値を◎で示しています。rtklibは概ね良さそうな感じですね。ソフトは良いとして、国が沢山のお金をつぎ込んで構築した観測網のデータですから、これくらいのことが出来なければ困ります(笑)。

それではと、家のベランダにアンテナを設置してNS-RAWによる測位を試してみることにしました。NTPの受信用に設置しているGPS記録を見てみると、常時8~12衛星が受信できています。しかし建物の壁際なので、当然ながら上空は半分ほどしか開けていません。こういう実験をやるにはあまり良い環境ではないと思ってはいましたが…

TSK1-HOME-ALL.png
基準点となる電子基準点は「つくば1」という「つくば3」のすぐ隣にある電子基準点(たぶんどちらも国土地理院の構内)を使用しました。グリッド間隔は5mです(先ほどの1000倍)。赤の点は整数値バイアスが求まっておらず単独測位になっているもので、黄色の点はフロート解といって不完全ながらも整数値バイアスが求まっている状態です。完全に整数値バイアスが求まった状態をFIXと呼んでいますが、この時1時間ほど測定した中では、FIX解は1点しか求まりませんでした。多分それも間違った解(偶然FIXしたように見えただけ)だと思われます。想像はしていましたが、あまりにも残念な結果です。

では、ちゃんと上空が開けたところでNS-RAWを使うとどうなるでしょうか。ここつくば市周辺では上空の開けたところはいくらでもあるのですが、ちゃんとしたデータを取る為には1時間くらいはかけて取りたいところです。車の屋根にGPSアンテナを付けて測定しようと思いますが、さすがに1時間もボーっとしているのは退屈です。そこで一計を案じ、電子基準点からそれ程遠くない日帰り温泉の駐車場で計測し、その間風呂に入って飯でも食っていれば1時間半ほどは潰せます。調べてみると、やさと温泉ゆりの郷が先ほどの電子基準点「八郷」から割と近い事がわかりました。土日は料金が高いのでいつもは敬遠していますが、背に腹は代えられません。

車を駐車場の隅の方に停めて計測開始。そして施設に入ろうとすると入り口に係員が立っていて、「本日は水道配管が故障したため、入館をお断りしています」と言われてしまいました。なんという運の悪さ。結局車の中でボーっとして30分ほどで計測を切り上げ帰路に着きます。食事もできなかったのでつくば市内で晩飯を済ませた後、電子基準点の近傍で測ってみようと、国土地理院の正門前にあるコンビニの駐車場でも測定してみました。

まずはゆりの郷での測定の結果です。
YST-YURI-ALL.png
一見するとFLOAT解ばかりでFIXしていないように見えるのですが、良く見るとFIXしている点もあります。

YST-YURI-FIX.png
この図の原点付近でかなりのFIX解が求まっています。他の飛んだところにある2点は間違った解だと思います。このように時々間違った解が出てくるので長時間観測をしたい訳です。

この原点付近のFIX解を拡大してみます。
YST-YURI-FIX-P.png
点が少ないように見えますが同じ点に重なっているためです。

YST-YURI-POS.png
ポジション推定の時間推移です。なかなか良い結果ではないでしょうか?

お次は国土地理院の真ん前にあるセブンイレブンの駐車場にて。
TSK3-7EV-FLOAT.png
ん? FLOAT解ばっかり?と思いましたが、ちゃんとFIXに至っています。
TSK3-7EV-FIX.png

TSK3-7EV-POS.png
15分ほどの計測なのですが、全体の22%程のデータがFIXしています。

今後は測位結果の再現性やBeagle Bone Blackで計測する実験、2台目の受信機を入手して基地局を設定する実験などもやってみたいと思っています。
line

Beagle Bone Blackで遊ぶ

気圧計に続き気温の観測もしようと思い立ち、センサーその他を買いに秋葉原に出かけました。

秋月電子の店頭で見かけたBeagle Bone Black。つい買ってしまいました。
DSC5027.jpg
Beagle Bone Black(以下BBB)はRaspberry Piと同じようなシングルボードコンピュータです。Piよりは若干性能が上との事。値段もPiよりは高めです。秋月では6500円で販売していました。米国では$55で売られているようですから、割とまともな値段設定なんじゃないでしょうか。

DSC5022.jpg
これがBBBのボードです。見てわかるように、Piに比べるとIOピンの数が大幅に増えています。Piにはなかったアナログ入力(A/D)も備わっているようです。

Raspberry Piと大きく違う点は、PiがSDカードにOSを書き込む作業をしなければ起動できなかったものが、BBBの最新のRev.Cでは4GBのフラッシュメモリにDebian Linuxが起動可能な状態で書き込まれていること。電源を入れればすぐ起動するというのは大きいですね。

BBBを附属のUSBケーブルでPCに繋ぐと、BBBがUSBディスクとして認識されます。

share.png
このフォルダーを開くと

folder.png
こんな感じの中身になっております。この中のREADME.htmを開くと

readme1.png
こういうページが現れます。BBBの機能について書かれていますが、ちょっと説明書きが古いかも。このページの中に

driver.png
BBBの為のドライバソフトをインストールするためのリンクが出ています。ここから自分のPC用のドライバーをダウンロードしてインストールすると、BBBがUSBで繋がったネットワークインターフェイスとしてセットアップされ、192.168.7.2というIPアドレスでBBBにsshを使ってログインすることが出来るようになります。また、USBに変換されたシリアルポートとしてもアクセスでき、tera termなどでcomポートからもログインすることが出来ます。このように、Raspberry Piで割と敷居が高かった最初のインストール作業がBBBではほとんど必要ないというのは特筆すべきだと思います。

USBからネットワークで繋がっているhttp://192.168.7.2にブラウザでアクセスすると
bb101.png
こんなページが表示されます。BBBでは、Bone ScriptというJavascriptを使って、ブラウザからIOピンなどの入出力がコントロールできるようです。その為のスクリプトを打ち込む窓がこのページ内にあります。
bb101_2.png
この窓の中にはスクリプト例が予め表示されていますが、自分で書き換えることも可能です。初期表示のままrunを押すと、ネットワークポートの横に付いている4個の青のLEDが2秒間点きっぱなしになります。Bone Scriptは例えば

#!/usr/bin/node

var b = require('bonescript');
var led = "USR3";
var state = 0;

b.pinMode(led, 'out');
toggleLED = function() {
state = state ? 0 : 1;
b.digitalWrite(led, state);
};

timer = setInterval(toggleLED, 100);

stopTimer = function() {
clearInterval(timer);
};

setTimeout(stopTimer, 3000);

みたいなファイルを作成しLinuxのシェル環境からも実行可能です(これはDEMOで入っていたプログラムです)。Lチカだけでなく、A/D変換までこれで可能みたいです。

ちょっとBBBを気温測定専用機とするには勿体ないのですが、BBBの練習を兼ねて気温の観測装置を作ってみようと思います。

BBBはSDカードにOSを書き込んで使用することもできますが、フラッシュメモリーに入っているOSもそのままで十分使えるものです。今回はこれをそのまま使用することにします。

まずネットワークですが、無線LANのドングルを刺して使用することにします。私の家の無線LANの場合、/etc/network/interfacesに以下のように登録する必要がありました。

auto wlan0
iface wlan0 inet dhcp
wireless-essid SSID
wireless-key s:パスワード

また、DHCPで繋ぐたびにアドレスが変わるとログインするのに苦労するので、MACアドレスをDHCPサーバに登録して固定したIPアドレスが割り振られるように設定しました。

データの保管場所はフラッシュメモリーに書いてしまうとメモリーの寿命を早めたりデータの取り出しに苦労したりしますので、Raspberry Piで気圧のデータを格納している外付けディスクをNFSマウントして使用することにしました。サーバーの方のRaspberry PiでSambaを動かせばWindowsからでもデータの参照が可能になります。また、データの測定には時刻が非常に重要です。コンピュータに内蔵されている時計は誤差が大きいので、長期間使用していると時計のずれが無視できなくなってきます。なので、NTPを使用して常に時計を補正することにします。NTP serverにはもちろん以前作成した自前のstratum 1のサーバーを筆頭にしておきます。(注)

気温のセンサーは秋月電子でADT7414というI2Cで接続できる16bitのセンサーモジュールを買ってきました。
M-06675.jpg

BBBのピンアサインですが、下図のようになっています。
cape-headers.png
I2Cの信号線はP9の19、20ピンにそれぞれSCL, SDAが出ているようです。その他、GNDとVDDの3.3Vを引っ張り出すようにして作ったのがこれです。
DSC5024.jpg

ADT7414はアドレス決定のジャンパーをすべてオープンにしましたので、アドレスは0x48となります。BBBから見えるかどうかテストしてみます。

root@beagle1:~# i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ちゃんと0x48にセンサーが見えています。

ADT7414は連続的に測定できるモードも備えていますが、計測は1分おきくらいですので、ワンショットモードで計測することにしました。ワンショットモードでの計測開始と16bitモードで測定する設定にするためconfiguration register(0x03)に0xa0を書き込み、status register(0x02)の最上位ビットが0になるのを待ちます。0になっていれば計測が完了しています。計測結果は0x00にMSB、0x01にLSBが16bitの2の補数形で格納されています。

root@beagle1:~# i2cset -y 1 0x48 0x03 0xa0
root@beagle1:~# i2cget -y 1 0x48 0x02
0x00
root@beagle1:~# i2cget -y 1 0x48 0x00 w
0xd60b
root@beagle1:~# i2cget -y 1 0x48 0x02
0x80

リトルエンディアンなので得られた0xd60bをスワップした0x0bd6を10進に変換すると3030になります。これを128で割ると摂氏の温度になります。 この例の場合は 3030÷128=23 となり、23.0℃となります。因みに、status registerは測定結果を読み出すと最上位ビットが1に変化します(最後のi2cgetの例)。

とりあえず気温を計測してファイルに記録するプログラムを作ってcronで1分おきに起動することにしました。Linuxですから、例えば温度が閾値を越えて高かったり低かったりしたらメールを送るとかが簡単にできてしまいます。さしあたり「今日は寒いぞ」メールを携帯に送ってみるとかをやってみようかな。

2014.11.8追記:
気圧計のセンサーもBBBに移してきました。その為、今までは気圧の海面更正を後処理でやっていましたが、それが気圧の計測と同時に出来るようになりました。
20141107.png
気圧のグラフに重ねて気温のグラフも毎日自動で作成しています。

(注)
BBBにはRTCが内蔵されていないので、起動時には時刻がリセットされて2000年1月1日になってしまいます。ネットワークI/Fをアップする時にntpdateが自動的に走って時刻を合わせるようですが、その後に起動するntpがタイミングの関係でうまく動かないようで、起動スクリプトの中に30秒のsleepを入れなければなりませんでした。

2014.12.9追記
ADT7414での測定から、SHT21という湿度も測定できるものに変更しています。SHT21はローダブルモジュールが最初からDebian wheezyに含まれていますので、一々i2cgetを呼ばなくても温度・湿度を取得できます。

/etc/modulesに
sht21
という1行を追加して再起動すればOK。使用宣言として

# echo sht21 0x40 > /sys/class/i2c-adapter/i2c-1/new_device

とすれば、

# cat /sys/bus/i2c/drivers/sht21/1-0040/temp1_input

で気温読取、

# cat /sys/bus/i2c/drivers/sht21/1-0040/humidity1_input

で湿度読取です(共に1000倍された数値が帰ってきます)。

グラフの方は、今までの気圧のグラフに加えて、気温と露点温度(湿度と気温から計算)を重ねて描いています。
20141209.png
青が気圧、赤が気温、水色が露点温度です。本日18時頃に露点温度が急変しました。前線か何かが通過したのかな?これがちょっと珍しかったので追記をしてみました。
line
line

line
プロフィール

夜行虫

Author:夜行虫
夜行虫とは天体撮影等、夜に出歩くのが多いことから名づけました。夜光虫の誤変換ではありません。海に潜ったり温泉浸かったりも趣味です。

line
最近の記事
line
最近のコメント
line
最近のトラックバック
line
月別アーカイブ
line
カテゴリー
line
ブログ内検索
line
RSSフィード
line
リンク
line
ブロとも申請フォーム

この人とブロともになる

line
sub_line