こんにちは
ここしばらく 1週間以上TouchRTKStationのプログラムを眺めていました。
なぜかといいますと、TouchRTKStationの機能は大変すばらしいのですが、Base との間の距離などが表示できません。 せっかく部屋から持ち出すので、せめて距離くらいは欲しいと思ったからです。
プログラムの追加
PyMap3d
ネットで色々調べてみたところ、追加すれば使えそうなプログラムが見つかりました。
緯度経度、ECEF系、方位角・仰角などの座標変換に便利なプログラムPyMap3d
非常に少しの追加で変換できそうです。
インストールは python2系ならば
sudo pip install pymap3d
python3系ならば
sudo pip3 install pymap3d
で簡単にインストールできました。
使い方は非常に簡単のようです。(10行程度)
なおデータはfloatに変換する必要があります。
というかBaseのデータをどうやって受けているのかプログラムを理解していなくて。
ということで測定したBaseのデータを直接読み込ませることに。でもこれはcharacterなのでfloatに変換する必要がありました。
az,el,range = pm.geodetic2aer( lat_rover, lon_rover, alt_rover, lat_base, lon_base, alt_base)
非常に簡単に変換できるようです。
print文をプログラムに追加しておいて
LCD画面をStopさせ Alt+F4で終わらせてから、端末を走らせておきます。
pythonのプログラムは、この端末から走らせることにします。
こうしておくとprint文の結果が端末上に表示され非常に便利なので。
これを使ってデバックにだいぶ時間がかかりました。
pythonのプログラムの修正は Tera Termなどで別端末として立ち上げておけば
nano TouchRTKStatio.py でいつでも修正が出来てその結果を確認できますし。
さて、どこに変換したデータを表示させるか ですが、画面の下側にStreamのデータが表示されているので、これを変更して出力させることにしました。
追加(追加した部分)
self.main_w.lLat.setText(sols[1]) self.main_w.lLon.setText(sols[2]) self.main_w.lAlt.setText(sols[3])
の下に以下のように追加しました。
resolt = re.findall(r'\d*\.\d*', rawsol) #print(rawsol) #print(resolt[1]) //デバッグ用です
baseのデータを取り入れたいのですがまだプログラムをまだよく理解していなので仕方なく直接baseのデータをいれています。これがネックですね。
base_lat = float(xx.xxxxxxxxxx) // 文字列をfloatに変換 base_lon = float(xxx.xxxxxxx) base_hgt = float(85.32205) lat_resolt=float(resolt[1]) lon_resolt=float(resolt[2]) alt_resolt=float(resolt[3])
az,el,range = pm.geodetic2aer(lat_resolt, lon_resolt, atl_resolt, base_lat, base_lon, base_hgt)
表示するために少し加工しました。
az1 = str(“{:.2f}”.format(az)) // 小数点以下2桁 el1 = str(“{:.2f}”.format(el)) range = str(“{:.3f}”.format(range)
streamのデータを表示している部分をコメントアウトにして
#self.main_w.status_rov.setText(statstr)
以下のプログラムを追加しました。
str1="" str1=str1+" AZ= "+az1+" EL= "+el1+" Range= "+range1 self.main_w.status_rov.setText(str1)
あとデータとしてalt が違うので
raspi の中のTouchRTKStation/conf で
kinematic.confとstatic.confのデータを下のように変更しました。
out-height =ellipsoidal # (0:ellipsoidal,1:geodetic)
モニターでの表示
2つのモニターを使ってデバックをしました。
液晶モニター
画面の下のほうにAZ, EL, Rangeが表示されています。
そのためStartを押してもしばらく動いているかの確認はできません。
LCDモニター
rtknaveでの結果と多少の違いはあるようですが、ほぼ同じとして良しとしました。
これで現場とベース間の距離が現場で確認できるようになりました。
なおこの部分の記録は取っていません。というか全体のプログラムをまだ理解していないのでしばらくはこのまま使うことになるかと思います。
あとはLCDモニターの日よけの傘が必要かな。
pythonのプログラムは奥が深くて!
コメント