ライセンスフリー無線情報 >> 無線ブログ集 >> シズオカAR96/JR2GUI

無線ブログ集

リンク 単体表示 UTF-8 形式


link シズオカAR96/JR2GUI シズオカAR96/JR2GUI (2026/9/2 13:05:05)

feed グランドウェーブ444km達成!自己ベストダブル更新のSV2026 (2026/7/28 22:56:00)
ライセンスフリー無線の一斉移動イベント、SV。このイベントでは毎年自分に課しているミッションが2つあります。1つは山岳移動局との超高所間QSO。富士山やアルプスへ移動されるおなじみの各局さんとつながったときには「苦労して登ってきてよかった!」という喜びや「良かった、無事だった!」という生存確認(笑)を分かち合うのが日曜朝の恒例。

そしてもう1つ、遥か彼方の5エリアからグランドウェーブによる交信を狙って運用されるフクオカAB182局を捉えること。過去には縞枯山、竜頭山、編笠山などから狙ったもののかすりもせず。5月の鬼キャンプでAB182局の運用スタイルを見せていただいたことで大いに刺激を受け、今年こそは!と例年以上に気合いが入りました。

さて、運用地をどこにするか。数年前に計画したものの天候不良で断念した 木曽駒ヶ岳 か。あそこならロープウェイでワープできるのでポータブル機と三脚、運用台もなんとか担ぎ上げられそう。しかし山小屋は予約いっぱいで断念。(後日談ですが、SVの前週の3連休は あまりの混雑で日帰りのロープウェイ乗車はお断り になったとか・・・)

木曽駒がダメなら 神津島 もアリか?コロナ前までは毎年遊びに行っていた大好きな島。5エリアまでは大部分が海上伝搬だし、島の中央にある天上山(572m)は西向きに抜群のロケーション。おまけにどうやらとうきょうSS44局が 八丈島 に移動されるとのことで、これは 離島間QSO が楽しめるかもしれない!よし、久しぶりに行くか!と調べたらなんと熱海発のジェット船航路がなくなっている!ジェット船なら2時間かからずに行けたのに。。。だいぶ遠くなってしまうけど、下田からのフェリーで行くしかない。フェリーとキャンプ場を予約し、来る日に向けて運用台を製作しました。

20260728.png

担ぎ上げ用にt=1mmのアルミ板を使った超軽量仕様です。薄すぎて頼りない感じは否めませんが、今回のSVのみ持てばOKの割り切り版。

さぁこれであとはSVを待つのみ!


・・・だったはずなのですが、どうにも天気予報が芳しくない。週間予報は日に日に悪化していきます。雨だけではなく風速も8m/sを超える予報。天上山の山頂は雨風を凌げるような場所は無いため、海抜0mから2時間かけて登って風雨にさらされるのはキツい。なにより大切なCB ONE Jr. Mk2を濡らしたくない。ギリギリまで悩んだ末、せっかく取れた予約を泣く泣くキャンセルすることになりました。

SVを数日後に控えてまたしても振り出しに戻ってしまった候補地選び。地形図とにらめっこして伊豆半島のとある場所にも目を付けてはいたのですが、結局今回はローカル各局といつもの竜頭山に行くことに。ただし、いつもは山頂付近の1100m地点で宴会しながらの運用ですが、今回は日曜早朝のDXタイムに山頂まで徒歩で登って運用することにします。

IMG_4080.jpg

いつものポイント。タープで日差しをしのぎ、超大型アブの猛攻に耐えながらの運用です。標高1100mなので下界よりは6〜7℃涼しいはずなのですがそれでも暑い。Esのコンディションが良く全国各地の局が入れ替わり立ち替わり聞こえていました。日が傾き少し暑さが和らいだころに単身、山頂へ下見に。ベースキャンプ各局はポールの上に特小を上げて臨時レピータを設置していたので色々とリグを変えて交信実験。直線距離は目と鼻の先なのですが、間にピークを1つ挟むのでアクセスはギリギリ。

下見を終えてベースキャンプに戻ってからはしゃべってばかりでロクに運用しませんでした(笑。「こんな山奥までなにしに上がってきたんだ!」とお互い突っ込むのは毎回のお約束。ローカル各局と集まると楽しくていっつもしゃべりっぱなしなんですよね。

あたりが真っ暗になり冷え込んできたころ、突如背後の茂みでガサガサっと音が!この場所は数えきれないほど来ていますが初めての事態です。まさか熊か!?と肝を冷やしましたが正体は鹿でした。安堵したものの、熊だとしても不思議ではない場所。分かってはいたものの、緊張感が高まりました。夜も更けた頃、自分以外の各局は下山してしまい1人で車中泊。時折聞こえる物音にビビりちらかしてほとんど眠れませんでした。





夜明け前、暗闇の中行動開始。早速山頂へ・・・のつもりでしたが腹痛に見舞われタイムロス。だいぶ遅れて明るくなり出してから登り始めました。

IMG_4084.jpg

登山口の駐車場には車は1台も無く、昨夜から通った車もいない。いま この広い山域にいるのはおそらく自分1人だけ であり心細さ半端ないです。加えてあたりは濃いガスに包まれ不気味な雰囲気。熊鈴をガシャガシャ鳴らし、特大の咳払いをして周囲を威嚇しながら熊スプレー片手に展望台を目指します。

IMG_4086.jpg

5:00ごろ山頂に到着。どこのチャンネルでやっているかなーとXをチェックしていると、なんとほんの数分前に 富士山頂移動のサイタマKM117局が笹ヶ峰移動のフクオカAB182局と交信に成功 しているではないか!こうしてはいられない!慌ててリグを準備するといきなりフクオカAB182局のCQが聞こえてきました。これまで微かに聞こえることさえなかった遥か彼方5エリアからの電波がこんなにも明瞭に!震える手でPTTを押し呼んでみると1発でコールバックが!思わず「よっしゃぁぁぁ!」と叫んでしまいました。10分ほどの交信中は興奮しすぎて自分でも何をしゃべっているのか良く分からない状態でしたが、とにかく繋がってよかった、嬉しいと繰り返していたように思います。 これまでの自己ベスト335kmを100km以上も上回る444kmのグランドウェーブの交信 でした。

20260728−2
香川から徳島のあたりと大阪のあたりでちょうど谷間を抜け、鈴鹿山脈もかわせるルートなのが良かったのではないかと思っています。地形図を見ていてこれならいけるかも?と期待していました。

交信終了後、「くろさん、2ch!」と聞こえたのでQSYするとサイタマKM117局からお祝いの言葉をいただきました。そしてここからが凄かった!フクオカAB182局との交信は各局さんが聞かれていたようで、 ブレイクに次ぐブレイクの嵐! お祝いの言葉をいただいたり「こちらではまだ聞こえない」との戦況報告だったり、 海を超えて愛を伝えるラブラブ交信 だったり 三角関係 だったり!?古くから交流のある各局だからこそのブレイク祭り、ラウンドQSOで凄いことになりました。もう誰に回して良いやらてんやわんやで上手くマイクコントロールできずすみませんでした(^^; 八丈島、那智勝浦、車山、富士山、三ヶ根山、そして竜頭山と場所は遠く離れているのに当たり前のようにラウンドQSOしてしまう各局さん、飛ばし屋ですね!

その後もフクオカAB182局の声はずっと聞こえており、7:00過ぎに徐々に弱くなっていくと共に上がり始めたEsの中に埋もれていきました。フクオカAB182局が仰っていた「地球等価半径の係数が変わる現象は気象条件の整う早朝が有利」という言葉を深く実感した現象でした。

市民ラジオでCQや呼び回りを楽しんだあとは8:00からの山岳ロールコール@八丈島!正直、特小はキツいだろうなと思っていたのですが・・・いけちゃった! 本土からは唯一のチェックイン だったようです。記事を書いていて気付きましたが、なんとこちらもこれまでの記録を3km上回る 276km 特小の自己ベスト更新 でした!

IMG_4098.jpg


移動先に色々と悩み、予約が取れなかったり航路が無くなっていたり天候に振り回されたりと色々あったSVでしたが、終わってみれば 市民ラジオと特小のダブル自己ベスト更新 という記憶にも記録にも残る運用になりました。交信いただきました各局さん、ありがとうございました!

<運用ログ>
2026.07.25 (SAT) 市民ラジオ ICB-870T
1329 サガSH48局 54/56
1331 サガHI39局 55/57
1430 トチギAH46局 53/55
1433 サイタマAB960局 52/?? 急落でレポート取れず
1720 ハママツHA320局 52/55

2026.07.26 (SUN) 市民ラジオ CB ONE Jr. Mk2
0519 フクオカAB182局 54/52 愛媛県西条市笹ヶ峰  GW444km 記録更新!
0530〜0550 ブレイク祭りラウンドQSO
 サイタマKM117局 富士山頂
 とうきょうSS44局 八丈島八丈富士  GW276km
 トウキョウMH160局 八丈島八丈富士  GW276km  
 ナガノAA601局 長野県茅野市車山
 イワテB73局 和歌山県那智勝浦
 アイチHZ76局 愛知県三ヶ根山
0554 アイチAE126局 56/59 岐阜県揖斐郡池田山
0556 ヒコネA130局 56/56 三重県いなべ市石榑峠
0559 ながのAF45局 58/57 長野県飯田市
0601 ナラUG24局 53/52 奈良県山添村神野山
0603 ハチオウジRS248局 57/57 富士山富士宮口五合目
0607 ギフAC102局 58/59 愛知県田原市蔵王山
0617 タカラヅカJ31局 54/53 兵庫県多賀町千ヶ峰  GW273km
0631 ナゴヤYK221局 57/56 長野県飯田市尾池山
0637 アイチAC556局 56/55 愛知県半田市半田港
0703 ミエDA829局 58/59 三重県御在所岳
07?? ハママツHM21局 59+/59+ 天竜スーパー林道
0741 ヒョウゴTF246局 58/57 三重県青山高原

2026.07.26 (SUN) 特定小電力無線 DJ-R20D
0801 とうきょうSS44局 M5/M5 八丈島八丈富士  276km 記録更新!



feed SV2025 北八ヶ岳 縞枯山移動 (2025/7/28 11:38:00)

7月最終の土日はライセンスフリー無線の運用イベント、SV(Summer Vacation)!自分はいつもどこかしらの山に登って運用するのが恒例になっています。昨年は木曽駒ヶ岳にテント泊で行く予定だったのですが悪天候のためおなじみ浜松市の竜頭山からに切り替え。今年はリベンジだ!・・・と思っていたのですが、SVが近づいてきてもどうにもテンションが上がらない。理由は、頂上山荘のテント場は早いもの勝ちらしいので、確実にテントの場所を確保するには朝イチのとてつもない大行列に並んでバスとロープウェイを乗り継がないといけないこと、それに加えて以前痛めてしまった膝に不安が残ることなど。


膝痛の回避は山に登って膝回りの筋肉を鍛えるしかないらしいので、普段からウェイトを背負って近場の山を歩いています。加えて日々の筋トレでもダンベル抱えてブルガリアンスクワットやワイドスクワットをやってますが、なかなか改善が見られない。そこで、急遽日帰りで行けるところに変更となりました。石鎚山も狙えて混雑回避できるところということで今回は北八ヶ岳の縞枯山に決定!


前日は松本市で友人(無線関係ではない)と会ったあと、炭水化物を目一杯詰め込んで登山口へ。松本市内では突然の雷と土砂降りに見舞われましたが間一髪車に乗ったあとで濡れずに済みました。34℃ほどあった気温が雨とともにみるみる下がり25℃に。気化熱ってすごい。




3:30起床、身支度をしながら夜明けを待ち、空がわずかに白み始めた4:20に登山開始。気温は12℃。さすがにこんな時間から登る人はおらず一番乗りです。


IMG_2506.jpg


誰もいない真っ暗な山道を歩くのは本当に怖い。大石峠のあたりで「ワァァァァァン」というものすごい羽音が聞こえてきたときにはハチの大群でも襲ってきたのかと肝を冷やしました。どうやらあたり一帯でアブかなにかが飛んでいるようですが、あまりの音量と範囲の広さにドキドキでした。高山に行くと必ずと言っていいほど遭遇するのが大きなハエくらいのサイズのアブみたいな虫。顔の前や身体の周りでずーーーっとホバリングしてますが、アイツはいったい何がしたいんだろうか?


1時間ほどで茶臼山の山頂へ到着。見事な雲海が広がっていました。 2025-07-27_05-19-05_664.jpeg


市民ラジオで御嶽山移動のマツモトTK304局と交信。富士山頂でオールナイト運用されているとうきょうSS44局にもご挨拶すべく富士山レピータにアクセスを試みるがNG。残念ながら赤岳に阻まれているようです。



茶臼山から見た縞枯山。文字通り縞状に木が立ち枯れているのが分かるでしょうか?

2025-07-27_05-31-41_011.jpeg



茶臼山を早々に後にし、登り返して縞枯山へ。

2025-07-27_05-42-22_085.jpeg



登山口から1時間50分ほどで縞枯山山頂に到着しました。山頂はほんとにここ?ってくらい何もない。ただの獣道です。

2025-07-27_08-42-50_713.jpeg


2025-07-27_08-42-56_762.jpeg



あとから他の人に教わって初めてテープの表示に気づきました。 2025-07-27_08-42-33_426.jpeg



天気は快晴、全くの完全無風という最高の無線日和!

八ヶ岳の主峰、赤岳から南ア、中ア、御嶽山、そして北アまで雲海に浮かんでいます。

2025-07-27_06-57-27_454.jpeg


市民ラジオは違法の被りがなく、運用中はEsも発生しなかったようで存分にグランドウェーブの交信が楽しめました。ただ、時折ロシア局(?)が強烈に被ってくるのはまいった。スタンバイピーがピョロピョロ鳴ってました。そのせいで遠方から呼んでくださったのにどうしても聞き取りきれずロストしてしまった方が多数。。。耳悪くて申し訳ありません。



CQが落ち着いてチャンネルを回すとZX9局がフクオカAB182局と100mWチャレンジしている!残念ながらこちらではAB182局の声は聞こえず。コンディションが下がったのか、場所が悪いのか、リグが悪いのか。100mWチャレンジの前はもっと強く聞こえていたそうなので、その時にこちらでも聞ければよかったのだけどタイミング悪かったなぁ。石鎚山狙うならやはりポータブル機担いでアルプスか富士山行かないと厳しいかな。八ヶ岳も谷間を縫っていけそうな気がするんですが。


8:00からロープウェイが動き始めるので混雑する前に下山。苔が生えた岩が濡れていて超スリッピーで疲れました。

2025-07-27_08-58-48_441.jpeg



1時間半ほどで駐車場着。気温は25℃。涼しくて快適です。下界におりたくないなー。日帰り装備、しかも無線機はハンディ機と特小各1台という超軽量装備、加えてZAMSTのサポーターを装着しているにも関わらず下山では膝痛が。。。もうテント泊は厳しいかなぁ。



温泉で汗を流したあとはテンホウに行くかそれとも蕎麦を食べるか迷いましたが、天ぷら蕎麦が食べたくて蕎麦屋へ。ところが行く先行く先全て駐車場が満車。5〜6件回った末、もう諦めてコインパーキングに入れて徒歩で蕎麦屋へ。ところがタッチの差で天ぷら売り切れ。。。仕方なく肉そばにしたら肉よりはるかにネギがモリモリで大ダメージをくらいながらの帰宅となりました。


2025-07-28_10-33-15_000.jpg





<交信ログ> 間違い等ありましたらお知らせください

市民ラジオ ICB-870T 茶臼山から

0524 マツモトTK304局 57/59 御嶽山


市民ラジオ ICB-870T 縞枯山から

0611  カナガワZX9局 58/58 南アルプス仙丈ヶ岳

0615 ながのCW47局 52/53 群馬県渋峠

0622 カナガワCU64局 52/52 山梨県南都留郡鳴沢村

0626 みやぎFS43局 53/52 茨城県筑波山子授け地蔵

0627 すわOL38局 55/55 長野県高ボッチ

0629 ナガノAA601局 57/57 長野県高ボッチ

0634 サイタマST165局 55/55 茨城県筑波山子授け地蔵

0636 ニイガタAZ21局 53/55 長野県飯山市大神楽展望台

0639 トチギAA997局 58/58 山梨県山梨市北奥千丈岳

0641 ツバメTK113局 51/51

0645 アイチAC556局 51/51 愛知県知多郡南知多町

0647 ぐんま5424局 59/59 物見岩(岐阜県恵那市?)

0648 トチギTH927局 53/55 栃木県大田原市

0649 イバラキAB399局 53/55 茨城県常陸太田市

0651 サカイYU927局 53/53 三重県伊勢市大湊

0705 ニイガタAA462局 51/52 新潟県佐渡市ドンデン山

0718 フクシマSP302局 52/52 立山連峰

0806 ナガノNP159局 56/57 長野県駒ヶ根市

0809 ナガノBN6局 55/59 長野県伊那市鳩吹公園

0811 グンマTK429局 55/54 群馬県みどり市

0813 ニイガタMS763局 51/51 新潟県佐渡市白雲台

0816 ニイガタYS112局 41/53

0820 つくばKB927局 58/59 茨城県筑波山

0825 グンマCB17局 59/59 長野県佐久穂町麦草峠

0827 おおさと59局 58/59 群馬県赤城山

0830 ツクバA3局 56/56 茨城県つくば市宝篋山

0833 ニイガタHR660局 54/55 群馬県横手山

0835 イバラキVX7局 51/53 栃木県栃木市渡良瀬遊水地


特定小電力無線 ALINCO DJ-P221L 縞枯山から

0736 マツモトTK304局 M5/M5 御嶽山

0744 ナガノAA601局 M5/M5 長野県高ボッチ

0749 すわOL38局 M5/M5 長野県高ボッチ

0753 カナガワZX9 M5/M5 南アルプス仙丈ヶ岳

0803  ナガノ KH314 局  M5/M5  長野県高ボッチ


feed 460kmの彼方を狙え!SV2024 (2024/7/31 21:00:49)
今年もライセンスフリー無線の一斉移動イベント、Summer Vacationがやってきました!例年、自分は3000m級の山に登って超高所間QSOをするのが恒例になっていました。今年は愛媛県の石鎚山に移動されるフクオカAB182局を狙ってみよう!ということで地形図と散々にらめっこした末に、中央アルプスの木曽駒ヶ岳を選定。ロープウェイでお手軽に標高が稼げるのでポータブル機の担ぎ上げもなんとかなりそう&テント場から山頂までも近いので早朝運用に適しているだろうという目論見です。

そしてなにより大切な伝搬ルートも地形図を見る限りなかなかに良好。500kmオーバーこそなりませんが、480kmとかなりの距離。自分の市民ラジオ最長交信記録は341kmですので、成功すれば大幅に記録更新です。

・・・が、天気が悪い。。。

週間予報を何万回リロードしたことだろうか。コロコロ変わるものの雨マークが消えることはなく、山岳移動は断念。さてどうすっぺかな〜と何気なく竜頭山(いつもゴールデンウィークにローカル各局と合同運用する浜松市天竜区の山。正確には竜頭山山頂ではなくその手前の標高1100m地点。通称天竜スーパー林道。)と石鎚山のパスを調べてみると、あらまぁなんと良好だこと!

20240731.png

もっとも地球の半径を考慮すれば地平線の向こう側ではあるのでしょうけど、うまいこと高い山をかわしていくルートなので期待が高まります。天気予報も良さそうなので急遽ローカル局に声をかけて竜頭山に移動することにしました。

ArduinoとGPS、OLEDを使った目的地までの距離表示計、ゴールデンウィークのときは上手く動作しませんでしたが、距離計算式の変更により今度はバッチリ動きました。20m程度の誤差はご愛嬌。

IMG_1048.jpg

前述の通り、ゴールデンウィークには毎年来ているこの移動地ですが、夏に来ないのには理由があります。それは巨大なアブが大量にいるということ。以前撮影した動画でもアブのパイルアップを受けている様子が写っています。



今回はおにやんまくん×3匹と蚊取り線香を配備。相変わらずブンブン飛んではくるものの、すぐにどこかへ行ってしまうような?身体に止まったり刺されるようなことはありませんでした。おにやんまくん効果かな?たぶん。


今年は異常とも言えるほどコンディションが悪く、このときもほとんど上がらず。かろうじて2交信できたのみでした。21:00のスタートとともに聞こえてきたのは八丈島移動のとうきょうCT73局!一番槍いただきました。どうやらこの夜に八丈島と交信できたのは竜頭山組のみだったようです。

その後、伊豆市達磨山移動のコウベSL39局と交信できたのみで他は静かなもの。本当にイベントデーなのだろうか??みんな家の中からデジ簡とかデジコミやってるのかなぁ。



翌朝はまだ真っ暗な4:00に起床。寝ぼけ眼でロッドアンテナを伸ばす。むむっ、この時間にしてはノイズが結構あるぞ。強風に耐えながらひたすら5エリアからの飛来を待ち続ける。

IMG_1050.jpg

静寂を破ったのは御嶽山移動局の声だった。フクオカAB182局を呼んでいる!苦労されながらもついに交信成功していました。しかしこちらでは微かになにか聞こえるような聞こえないような・・・ほとんど幻聴に近いくらいでした。

残念ながら石鎚山とは交信ならずでしたが、その後山岳移動の各局さんとも交信でき満足。Esが出始めて各チャンネルが騒がしくなってきたのと、日が上り暑くなってきたため8:00ごろには帰途につきました。各局さん交信ありがとうございました!

<ログ>
7/27(SAT)
市民ラジオ イシマルトランシーバー CB ONE Jr. Mk.2
1515 クマモトHR787局 51/54
1635 シズオカNH781局 52/52
1637 コウベSL39局 53/54 伊豆市達磨山
1640 アイチDX45局 51/52
1930 ながおかHR420局 51/51 沖縄県
2100 とうきょうCT73局 51/51 東京都八丈島
2142 コウベSL39局 56/54 伊豆市達磨山

特定小電力 ALINCO DJ-P221L
2156 コウベSL39局 M5/M5 伊豆市達磨山

7/28(SUN)
市民ラジオ イシマルトランシーバー CB ONE Jr. Mk.2
0531 とうきょうCT73局 52/52 東京都八丈島
0552 カナガワZX9局 52/52 南アルプス仙丈ヶ岳
0605 サイタマKM117局 54/54 宝永山
0613 カナガワCB124局 55/55 西伊豆町仁科峠
0645 ハママツHM21局 58/58 竜頭山
0712 ナゴヤYK221局 51/52 東京都八丈島

feed 目的地までの直線距離表示アイテム その後 (2024/6/11 22:14:35)

前回の記事 をXにポストしたところ、多くの方々からアドバイスをいただきました。ありがとうございます。


おかげさまで目的地に近づくと直線距離表示がバグるのはArduinoの計算桁数が不足しているために値が丸められてしまっているのが原因っぽいということが分かりました。たしかに目的地までの距離が近くなるとacos(x)のxの値が限りなく1に近づくので相当な小数点以下の桁数が必要になります。double型にしておけば良いというわけでもないんですね。(Arduinoの場合、double型にしても計算精度はfloatと変わらないそうです)




ハードウェアを計算能力の高いラズパイpicoWに



さて、じゃあどうする?ということでラズパイpico Wを入手。これなら計算能力は充分ある上、Arduino IDEでスケッチをそのまま書き込んで使えるらしい。

IMG_0915.jpg


初期設定を済ませ、早速書き込み!さあどうだ!?


・・・


・・・・・・


・・・・・・・・・


待てど暮らせどOLEDには一向に距離表示が出てこない。いったんGPSはおいといてOLED単独で動作確認 → 問題なし。GPS単独で通信確認 → 衛星から情報を受信しているものの、一部しか受信(復調?)できておらず、NMEAセンテンスとして成り立っていない。。。シリアル通信は一応できているし、モジュールの受信状態を示すLEDも点滅しているのになんでじゃー




Arduinoに戻る



いったんは心が折れかけたものの、どうしても諦めきれずに調べていると、地球上の2点間の距離を計算する方法が他にもいくつか見つかりました。


1)ハーバーサインの公式

計算式だけでなくC言語のコード例もあったので実装してみましたがうまく動作せず。自分には勉強不足で理解できないところも多々あったので断念。


2)geographicLibというC言語のライブラリ

ナノメートルオーダーという凄まじい計算精度を持つらしい。これがライブラリにあるなんてありがたい!と実装しようとしたのですが、コンパイルが上手くいかず断念。


3)Hubenyの公式

三角関数(sin、cosのみ)を用いた公式なのでやりやすい。式を見る限り、日本国内の緯度経度なら桁数が少なくても計算が破綻するようなことはなさそう。そしてこの手法は無線家にはお馴染み、あの カシミール3D でも使われている手法らしい。ということでコレを実装してみました。




Hubenyの公式を実装



指数の計算等、慣れていないところでミスらないよう回りくどい書き方をしているので非常にダサいと思いますが、以下のように書いてみました。


    double Rx = 6378.137;          // km

    double Ry = 6356.752314;   // km

    double x1 = gps.location.lng() * (M_PI/180);  // 現在地の経度

    double y1 = gps.location.lat() * (M_PI/180);   // 現在地の緯度

    double x2 = 135.00000 * (M_PI/180);             // 目的地の経度

    double y2 = 35.00000   * (M_PI/180);             // 目的地の緯度

    double E = sqrt(((Rx * Rx)-(Ry * Ry))/(Rx * Rx));

    double Dx = x1 - x2;

    double Dy = y1 - y2;

    double P = (y1 + y2)/2;

    double W = sqrt(1-((E * E)*sin(P*(M_PI/180)) * sin(P*(M_PI/180))));

    double N = Rx / W;

    double M = Rx * ((1 - (E * E)) / (pow(W,3)));

    double kyori = sqrt(((Dy*M)*(Dy*M))+(Dx*N*cos(P*(M_PI/180)))*(Dx*N*cos(P*(M_PI/180))));  // 目的地までの直線距離


さて結果は如何に?


IMG_0913.jpg


おぉぉぉぉ!距離が近くても破綻せずちゃんと表示してる!


試しに近所に目的地を設定してクルマで走ってみると、ちゃんと近づいていく様子が分かる。最後、 数メートル単位まで減っていった ときはシビれました。


よっしゃこれで完成!・・・と思ったのですが、目的地を日本各地に設定してみると場所によっては18%もの誤差。これはいくらなんでも大きすぎる。


Hubeny.png


目的地までの距離と誤差をプロットしてみるとこんな感じ。この他にも緯度・経度と誤差とか、現在地の座標に対し目的地がプラス側なのかマイナス側なのかとか、いろんな見方をしてみましたが規則性は見出せませんでした。この誤差も桁数まるめの影響なのかなぁ。




三平方の定理



ダメもとで三平方の定理も試してみることにしました。本来は地球の曲率も考慮した距離にしないといけないのですが無視します。地球内部を突っ切って最短で2点間を結ぶ直線の距離になります。地表をなぞった場合と地中を突っ切った場合とで誤差は出ますが、前述のHubenyの公式で発生した 18%の誤差よりはマシ なんじゃないだろうかということで。


三平方の定理を使うにはもう一つ課題があります。それは 緯度経度が直交座標ではない ということ。地球は球体(正確には楕円体)なので、経度1度あたりの距離が北にいくほど短くなります。例えば北海道(北緯45度)では経度1度あたりの距離はおよそ79km、沖縄(北緯24度)ではおよそ102kmです。これを直交座標として扱ってしまうと誤差がかなり大きくなります。


そこで、赤道直下(北緯0度)における経度1度あたりの距離:111.321kmに cos(緯度)を掛けることで緯度に応じた距離を算出する補正 をしてみました。赤道直下ならcos(0°)=1なので111.321km、北極点ならcos(90°)=1なので0kmという具合です。


    double x1 = gps.location.lng();  // 現在地の経度

    double y1 = gps.location.lat();   // 現在地の緯度

    double x2 = 135.00000;             // 目的地の経度

    double y2 = 35.00000;              // 目的地の緯度

    double Dx = x1 - x2;                   //経度の差分(度)

    double Dxkyori = Dx * 110;         //経度の差分(km)

    double Dy = y1 - y2;                   //緯度の差分(度)

    double Dykyori = Dy * cos(((y1 + y2) / 2) * M_PI / 180) * 111.321;  //緯度の差分(km)

    double kyori = sqrt((Dxkyori * Dxkyori) + (Dykyori * Dykyori));      //目的地までの距離


Dykyoriの項で補正を行なっています。目的地と現在地の2地点の緯度の平均値を用いて補正しているので、2点の距離が離れるほど誤差は大きくなります。


さあどうだ!?


Pythagoras.png

Hubenyより誤差が大きい。。。


こちらも誤差の大小に規則性は見出せませんでした。シンプルな計算なので桁数少なくてもなんとかなるかと思ったのですが。




暫定仕様



とりあえず 目的地に近づくと表示がバグる という最大の欠点は解消できたので一応は使えそうです。誤差が残っているのが気持ち悪いですが、そもそもルートの残距離ではなく直線距離を表示という時点で実用性は無い遊びアイテムなので、暫定仕様としてあちこち遠出するときに使ってみようと思います。気が向いたら誤差改善やラズパイのリベンジをしたいと思います。


ゴールデンウィークに初めて作ってみてバグが発覚してから1ヶ月以上。だいぶ苦しみましたが、おかげでほんの少しだけスキルが上がったように思います。アドバイスをいただいた皆さん、ありがとうございました!


feed Arduinoで三角関数を計算してみたが・・・ (2024/5/15 21:39:00)
ArduinoとGPS(正確にはGNSS)受信モジュール、OLED(有機ELディスプレイ)を使って目的地までの直線距離を表示するアイテムを作ってみました。ところが 目的地に近づくと表示がおかしくなる 事象が発生。当初はきっと原因は桁数まるめの影響ですぐに解決するだろうとタカをくくっていたのですが、調べれば調べるほどに謎が深まっています。どうにも行き詰まりつつあるので詳しい方のお知恵をお借りしたく記事にすることにしました。

IMG_0770.jpg
テスト中の様子。シャッタースピードの関係で上部の文字が消えてしまっていますが、OLEDの最上段が目的地までの直線距離、中段が現在地の標高、下段が受信している衛星数のバーグラフ表示です。

<事象>
1)目的地の5kmくらい手前まで近づくと距離表示がおかしくなる。
  (具体的には3.114km、2.202km、0.000kmをランダムに表示するようになる。)
2)目的地から大きく離れているときには正確な距離が表示される。
3)GPSから受信した位置情報(緯度経度)を元に手計算すると、目的地付近でもちゃんと距離が出る。
4)GPSから受信した位置情報のバラツキは大きくても20m程度。分解能は1.5m程度。
5)GPSからの受信の代わりに位置情報を手入力した値を用いた場合も、現在地と目的地が近いと表示がおかしくなる。

上記3)、4)、5)から、 GPSの位置精度のバラツキが原因ではない ことが分かりました。
手入力した固定値の位置情報でも表示がおかしい ことから、計算過程に何らかの問題があると思われます。計算式は下記のものを用いています。

直線距離 = 地球の半径 × Arccos(sin(y1) × sin(y2) + cos(y1) × cos(y2) × cos(x2-x1))
地球の半径:6378.137km
x1:現在地の経度
y1:現在地の緯度
x2:目的地の緯度
y2:目的地の経度

計算式や地球の半径の値はネットから引用しています。Google Mapで適当な2地点の緯度経度を調べて上記の式で計算してみると正確に距離が算出されるので、計算式は問題ないと思います・・・少なくとも手計算では。

ところがこれをArduinoに書き込んで計算させてみると、直線距離が近いときに手計算とアンマッチが生じてしまうのです。

式のどの部分でアンマッチが生じているかを検証したのが下のグラフです。
Graph1.png
横軸は式の中の各項、縦軸はArduinoと手計算との差異のパーセンテージです。直線距離0kmの場合から710kmの場合まで13パターンをプロットしています。これを見るとArccosのカッコの中までは差異が±0.00001%程度に収まっており問題ないように思えるのですが・・・

Graph2.png
その先、 Arccosを計算すると途端にブッ飛びます 。−100%になっているのは、Arduinoでは計算結果がゼロになってしまっているものです。
※横軸の”acos()”はArccos(sin(y1) × sin(y2) + cos(y1) × cos(y2) × cos(x2-x1))を、”kyori”は目的地までの直線距離を表しています。

ちなみにArduinoと手計算での直線距離の算出結果は以下の通りです。目的地までの直線距離が28kmでようやく差異50mとなります。せめてこのくらいの誤差で収まってほしいのですが・・・。目的地の5km以上手前からあてにならないのでは役に立ちません。まぁそもそも「直線距離を表示」って時点で実用性などほとんどなく、スマホやクルマのナビの方が便利なのは分かりきっていますが(笑。

table.png

<疑問点>
・Arccosの段階で途端に誤差が大きくなるのは何故か?
・手入力した固定値をそのままserial.printで表示させるとなぜか少し値がズレるのは何故か?
 たとえば135.001000,35.001000と入力 → 表示は135.001007080,35.000999451となる。
 ただし整数で入力したものはズレない(例:135.000000)。


以下に検証用のスケッチを記します。
これのx2,y2の値を色々と変えて各項の値や直線距離の計算値を吐き出させたのが上記グラフです。
疑問点についての解答やヒント、ここ確認してみたら?などアドバイスいただけると嬉しいです。


#include <stdio.h>
#include <math.h>
double EARTH_RAD = 6378.137;

void setup() {
 Serial.begin(57600);
 while (!Serial) {
 ;
 }

void loop() {
    double x1 = 135.000000 * (M_PI/180);  //現在地の経度
    double y1 = 35.000000 * (M_PI/180);   //現在地の緯度
    double x2 = 135.100000 * (M_PI/180);  //目的地の経度
    double y2 = 35.100000 * (M_PI/180);   //目的地の緯度
    double kyori = EARTH_RAD * acos(sin(y1) * sin(y2) + cos(y1) * cos(y2) * cos(x2 - x1));  //目的地までの直線距離
    
    Serial.print(kyori,3);
    }