位置情報精度対決!
AH-K3001V v.s. AH-J3002V!

お詫びと訂正

1.はじめに

位置情報。携帯電話端末で情報サービスを利用するとき、一番役にたつ基本機能です。そんなわけないと言われようが、私はそう主張します。だって、それ以外の情報って、基本的に全部インターネットで手に入るんですもん。電話機でのWEBでしか手に入れられない情報って言うと、もう位置情報くらいしか無いです。何てったって、位置情報ってのは「自分の位置」ですから、身につけている物でしか知る術がないわけですしね。
ってことで、そんな重要な位置情報。これが、もし機種によって精度に差があったらどうでしょう?。とても困った物ですよね。でも、実験しちゃいます。AirH”Phone、AH-K3001Vと、AH-J3002V。比べちゃいます。

2.予想

いや、いきなり「予想」ってのもあんまりですが、取りあえず実験前の予想を掲げてみます。つまり、どっちが精度がいいか。まず、AH-K3001V、普段使いで実感できるほど、J3002Vより感度が良いです。つまり、普通に接続したとき、やたらと遠くの基地局にも繋がるってこと。逆に言えば、近くの基地局と遠くの基地局の差があまりないってことです。ってことは、当然、位置情報の精度が落ちてくるのでは、と思うのです。しかし一方、J3002Vは、感度が悪い、と言うことは、少ない数の基地局しか掴めないと言うことです。と言うことは、基地局密度の薄い場所に行くと、位置情報の計算に必要な三つの基地局の情報が十分に取りきれないのではないか、そういう気がするんです。つまり、「基地局密度の高いところではJ3002Vが有利」「密度の薄いところではK3001Vが有利」、そういう気がするわけです。と言うことで、実験しましょう。

3.方法

方法は簡単です。同じ場所で位置情報を測定して、近い方が勝ち!と言う感じで。取りあえず、予想の件もあるので、今回は、「基地局密度の濃い場所」と「薄い場所」を候補地に上げ、適当に測定してみます。と言っても、実はどちらも私の生活圏(と言うか通勤路だったり)。歩きながら適当な場所で測定する、と言うのを繰り返しています。まずは、測定地の地図から。

測定地地図
測定地地図

上が「基地局密度の薄い場所」、下が「濃い場所」の地図です。下の地図の謎の点線は「線路」だと思ってください(苦笑)。赤い十字印は、基地局位置です。えーと、なぜ知っているかというと・・・そりゃもうねぇ、2年近くも通っている通勤路ですから(廃)。ちなみにこの地図は、元の地図から縮尺と方位だけを変えてデフォルメしたものです。ちなみに、下の地図の方が少しだけ縮尺が小さいです。大体ですが、上の地図は横幅が大体600mくらい、下の地図は横幅が大体300mくらいです。下の地図の場所の方がかなりの高密度であることが分かるかと思います。この二つの測定地で、それぞれ四回の位置測定を行います。

位置測定場所
位置測定場所

さっきの地図に、謎の丸が増えました。この丸が、測定を行う地点です。後で出てきますが、緑の測定位置での結果は緑の矢印、青は青の、黄色は黄色の、紫は紫の、とそれぞれ対応させて結果を示すことにします。
なお、それぞれの測定は、必ず接続を切った状態から、32kパケットを再接続し、そこから他の操作を一切せずに位置情報で地図を表示させるものとします。

4.結果

と言うことで、何はともあれ、結果を見てみましょう。まずは、AH-J3002Vの結果。

AH-J3002Vの結果
AH-J3002Vの結果

まずは、密度の薄い場所から。青の地点では、左端の基地局と中央下の基地局の中間当たりに結果が出ています。近づきすぎても余り良くないと言うことでしょうか。緑では、ほとんど変わらない感じ。上辺にある遠くの基地局の影響がまるっきり取れていないのは、やはり感度が足りないから、と言う感じがします。一方、黄色の測定では、ものすごくいい結果が出ました。ちょっと偶然くさいですが、上辺の基地局もここからならうまく見えたのかも知れません。最後の紫も、多分上辺の基地局が見えたために位置がそちらに少し引きずられたような形になったのでしょう。全体的に割かしいい感じの結果が出ています。意外です(失礼な)。

次に、密度の濃い場所。青はまぁ、当然かな、と言う位置に出ていますが、駅(あの四角は駅なんです)をちょっと離れたところで見ても駅の中にいることになっています。どうも、駅の中や周辺の基地局が多すぎるため、左下の局が全く計算のうちに入っていないようです。次に、ほとんど位置を変えずに測定した黄色と紫。これも、ほとんど駅前にいることになっています。どうも、基地局が密集している方へ位置が引きずられるようです。まぁこれは前から感じていましたが。

と言うことで、取りあえずJ3002Vの結果はここまでにして、次に、K3001Vの結果を見てみましょう。

AH-K3001Vの結果
AH-K3001Vの結果

もう大体、余り説明はいらないと思います。見ての通りです。

AH-K3001V、基地局そのものの位置しか出ません

密度の薄い場所では、青はすぐ近くの局に張り付いているのは分かりますが、緑、感度が良すぎるのが災い(?)して、遠くの基地局の場所にいることになっています。黄色は、なぜか中央右側。紫も同じ位置。いや、この二つが、一度再接続したにも関わらず、緯度・経度の小数点以下3桁まで全く同じなんです。完全に基地局位置しか出なくなっています。

密度の濃い場所も似たようなもの。青では駅構内の基地局。緑・紫では、駅裏の高感度局。黄色ではなんとか目の前の局に、と言う感じです。

もう、優劣は言うまでもありませんね。K3001V、ヘボヘボです

5.がっくり

と言うことで、とてもがっくりな結果。しかし、これがなぜなのかを考えてみましょう。

DDIポケットの位置情報の仕組みは、まず周辺基地局の電界強度を測定し、それを位置情報サーバに送ることで計算結果の緯度・経度を得ることが出来る、と言うものです。その基地局情報は、概ね次のような形であろうと思われます。

1234567890ab, 45
基地局ID, 電界強度

これを、周囲を測定して最大三つを送信するわけです。

1234567890ab, 45
1234567890ac, 40
1234567890ad, 35

これを受け取った位置情報サーバは、各基地局の位置とその電界強度(=距離の指標)から、位置を決定します。でんそくんでやってるようなもんです(でんそくんよりまともなのは確かですが;爆)。

で。AH-J3002Vは、きちんと電界測定をし、三つの基地局を取っています。と思われます。ATコマンドでAT@K3と打ったのと同じです。

しかし、AH-K3001Vは、おそらく1局しか測定していません。つまり、AT@K1です。

なぜわざわざスペックダウンさせるのか。理由は簡単です。と言うのも、この位置情報の測定、実は、位置情報取得を指示するときに測定しているのではなく、接続するとき(多分ハンドオーバの時も)に測定しています。AH-J300xVをお持ちの方は試してみると良いのですが、32kパケットを接続し、まず位置情報を出します。その後、移動せずにその他のサイトをふらふらと見てから、もう一度位置情報サイトに行って測定すると、小数点以下まで全く同じの情報が出てくるんです。つまり、一度接続し直すまでは測定し直すことは無いんです。逆に言えば、位置情報を使おうが使うまいが、最初の接続の時には必ず一度、位置測定をしています。これがなんのためかと言うと、PHSの仕組みに関係があって、位置測定をするためには「制御キャリア」と言う特殊な周波数の電波を測定する必要があるのですが、通信中は「通信用キャリア」と言う周波数で通信しているため、周波数が違う制御キャリアを見に行くことが出来ません。なので、仕方無しに接続開始時に取りあえず見に行くわけです。ですが、たくさんの基地局を測定しようとすると時間がかかります。と、ここまで書けば、大体、K3001Vがなぜ精度が悪いのか、の理由が分かってきますね。そう、K3001Vでは、「接続時間を短くすること」を最優先して1局しか測定しない仕様となっている、と言うことなんです。

言われてみれば、同じ32kパケットなのに、K3001Vは、J3002Vよりも接続完了までが早いです。もちろん別の理由で認証処理が早くなっているのも理由の一つですが、やはり、電界測定を1局分しかやらない、と言う部分で早くなっているのではないかとも思うのです。

せっかくのK3001V。でも、位置情報に関してはちょっと「?」と言う感じなのでした。

ところで、PS−C2も実はこんな感じでした。京セラの伝統なのかな?

6.結論

と言うことで結論。

・位置情報をより高精度で使いたいならAH-J300xVを使うべし

・AH-K3001Vでは基地局位置しか出てこないので、特に密度の薄い地域ではひどい目にあう。J300xVの用に徒歩のナビには余り向かないかも

・京セラさん、位置情報の設定、ON/OFFだけじゃなくて、高精度/通常精度/OFFくらいに出来ませんかお願いしますこのとおりです(土下座)

なんか結論じゃなくてお願いも混じっていましたが、今回の実験ここまで。
お詫びと訂正

nyaonoraさんより情報を頂きました。K3001Vでは、「回線接続と位置情報取得を同時に行う時に限り高い精度(3基地局測定)の位置情報を利用できる」が正しいようです。以下、2004年5月24日の「今日の一言」を転記します。


すごいことを発見した方がいらっしゃいました。って、何の話かというと、先日公開した「位置情報精度対決!」のなかで、「K3001Vは基地局位置しか出てこない」と書いた件について。「K301Vでちゃんと位置情報で精度が出る方法があります」とのことなのです。それは、「位置情報を取得する寸前に一度接続を切る」というもの。その状態で、位置情報リンクをクリックすることにより32kパケットを再接続させると、ちゃんとJ300xV相当の精度で表示されるというのです。えぇ〜、と思いつつ、確かに仕組み上、そういうことが起こってもおかしくない(でもわざわざそういう仕様にする意図は理解出来ない)なぁ、と思って試してみたら。出来ました。えぇ。ちゃんと、J3001V並の精度で位置測定が出来ました。びっくり。そうなんですね、「位置情報取得リンク」をクリックしたときに、32kパケットが接続されていなければ、その状態で周囲を電界測定し、で、それが終わってから32kパケットを接続してその結果を送信する、というようになっているみたいなんです。どうも、京セラの仕様として「位置情報取得リンクをクリックした瞬間の位置情報を取得・送信する」ということになっているようで、普通に32kパケットが繋がったままの状態では、「クリックした瞬間の位置情報」といわれると「現在通信中の基地局」としか答えられない、というのが真相のようで。つまり、京セラとしては、「接続前に取得しておいてもその後移動したら当然ずれるから意味ないよね」と言うことなのだろうと思われるわけです。しかしまぁ、回線の接続と同時に位置計測する場合に限りちゃんと3局ほど計測する、なんてのは、ソフトの作り込みという面で見れば妙にややこしい仕様だと思うのですが、まぁ、京セラソフト開発陣にもマニアックな人がいるってことで(笑)。ということで、まぁ、天気予報とかなんとかなら今まで通りでもいいですが、地図サイトを使った徒歩ナビに使う場合は、取得リンク(http://location.request/dummy.cgi?my=〜のアドレス)を直接ブックマークに入れておいて、位置情報取得と32kパケット接続を同時に行うようにすればよい、ということです。ということで京セラさん、やっぱり位置情報に「高精度モード」を作って、その時は、位置情報測定時に一度32kパケットを切って(論理接続はそのままで無線部だけ切る=ネットワーク側からは「圏外ドーマント状態」に見える、という方法でも良いけど)、で、ささっと周囲を測定して32kパケットを復帰、位置情報送信、なんていう仕様にできないでしょうかこのとおりですおねがいします。ってことで、「京セラでは精度の高い測位はできません」というのは間違いでした、とお詫びして訂正いたします。情報提供下さったnyaonoraさん、どうもありがとうございました。


このような感じで、京セラ製AirH”Phone、AH-K3001Vにも高精度の位置情報を利用可能な状態が存在していることが判明しました。以下、私がこの高精度の位置情報を利用できた手順を紹介します。

手順1:ブックマークを利用した方法
1.位置情報を取得するためのリンク(http://location.request/dummy.cgi?my=〜というリンク)が含まれたページから、そのリンクを切り出してブックマークに登録します。これはK3001V単体では不可能ですので、ページを保存してPCに送りリンクを切り出してK3001Vに書き込み(メール送信)するか、PCを使ってリンク切り出しブックマークレットをK3001Vに登録しておき、そのブックマークレットを使ってリンク先を保存する必要があります。※位置情報取得後のページをブックマーク保存してもダメです。
2.回線が切断された状態でそのブックマークを指定して開きます。
3.「位置情報を取得しますか」のダイアログに「はい」と答えると、位置情報を取得してから32kパケットの接続を開始します。
4.位置情報が取得されます。

手順2:お手軽に(おすすめ)
1.通常通りにネットに接続し、位置情報を利用するページまで行きます。
2.位置情報を取得するためのリンクをクリックする寸前で、切断ボタンを押し、32kパケット接続を一時終了します。どのタイミングで位置情報を取得するかがよく分からない場合は、取りあえずどんどんクリックして、「位置情報を取得しますか」のダイアログが出たらそこで一旦「いいえ」を選んでキャンセルしてから、接続を切断しても大丈夫です。
3.回線が切断されたのを確認してから、位置情報を取得するためのリンクをクリックし、ダイアログに「はい」と答えると、位置情報を取得してから32kパケットの接続を開始します。
4.位置情報が取得されます。

ただ、問題は、どちらの方法でも、IPアドレスと関連づけられたセッションキーを使うセキュアな位置情報サービスでは使えないと言う部分です(一旦切断するとIPアドレスは変わります)。この点については、京セラさんが、一旦(PPPセッションを維持したまま=IPアドレスを保持したまま)回線を擬似的に切断し(つまり平たく言えばドーマント状態にし)、その間に位置情報を取得してドーマント解除→位置情報送信、と言うような「技」を使ってくれない限り解決はしません。これに関してだけは、もうほんと、「京セラ様お願いします」と言うしかないのです。ほんと、お願いします。

補足:

このような仕様である一番の原因は、京セラとしての端末の使い方と位置情報に対する考え方にあるのではないかと考えられます。京セラとしては、移動無線端末は「当然」移動しながら使うことを想定していて、また、位置情報は「当然」取得要求を出したまさにそのときの情報である必要がある、と考えているであろうと考えられます。

このように考えたとき、現状の京セラの仕様は実に自然です。

しかし、私としてはちょっと不思議なのは、なぜ、「接続中は接続先基地局を現在位置とする」「接続と同時に取得する場合のみ真面目に計測」と言う仕様なのかが逆によく分かりません。位置情報の取得に、全く異なる二つのシーケンスが用いられていることになるからです。これは、素人的に考えても、プログラム容量を圧迫しそうな気がします。特に、「接続と同時に取得」はかなり特殊な条件です。通常はこのような使い方はほとんどあり得ません。なぜこのような特別な状態のために、別系統のシーケンスを用意したのでしょうか。

これには、私なりの一つの答えがあります。それは、ぴぴっとフォンで導入され、PS−C2にも搭載されていた、「ネットワークからの要求により自動的に位置測定を行い送信する機能」です。これが、K3001Vにも搭載されています(位置情報をONにすると出てくる設定画面の、アレです)。この測定モードは、明らかに「接続と同時に測位」と言うモードです。つまり、こういう動作が主体である使い方が存在する(ぴぴっとフォンのここだよナビ)と言うことです。こういう動作専用のシーケンスを用意してあるのは、実はこの流れなのではないかと思うわけです。

閑話休題。

この動作を、出来たら、設定で意識的に利用できるように出来ないか、と言う問題。これについては、上でも書きましたが、「一時的にドーマント状態に落として測定し、ドーマント解除してから位置情報送信」という方法で、同じことがセッションを維持したまま出来ます。しかし、どうしてこんな反則くさい方法が必要なのか、それは、J3001Vとの対決記事でも触れたように、「通信中は位置測定のための周波数を見に行けない」と言うことが原因です。しかし、一時的にドーマントに落とし、PPPセッションは維持したまま無線部を解放し、解放された無線部を位置測定用周波数(制御キャリア)に合わせてからそこで測定し、また無線部を起動し直して通信を再開する(実際はハンドオーバに近いシーケンスが走る)、と言う形にすることで可能と言うことです。

この辺、「よくわからん」という意見を良く聞きますので、ちょっと今回はかみ砕いて説明することにしましょう。PHSには、大きく分けて二つの種類の周波数、「通信用キャリア」と「制御用キャリア」があります。この「キャリア」というのは、たとえて言えば、テレビやラジオのチャンネルと同じです。つまり、「合わせたチャンネルしか見たり聞いたり出来ない」と言うことです。通信中は通信用キャリアに「チャンネルを合わせた」状態なので、「裏番組」である制御用キャリアは見に行けないし、逆も然り、と言うわけです。しかし、ドーマント状態というのは、言うなれば、「今何チャンネルを見ていたかを覚えておいてテレビを消す」と言う状態に相当します。この状態では、テレビは完全にフリーですので、別に他のチャンネルを見ていても良い訳です。たとえばあるチャンネルのドラマを見ていたと言うことを覚えて置いて裏番組の野球中継をちょこっとチェックする、と言うことをやったことのある方は多いかと思います。これが、「ドーマント中にこっそり制御キャリアを見に行って位置測定する」という動作に相当するわけです。

と言うことで、こういう機能が実装されてくれないかなぁ、とこっそり思っていたりするわけですが、先ほどプログラム容量がどうとか言っていたとおり、こういう処理こそ、やたらと容量を食う改変になりかねないわけで、まぁ、ちょっと期待薄かなぁ、なんて思っていたりします。と言うことで、当分は「位置取得直前に一度回線を切る」と言う方法で私はやっていこうと思っていたりします。そんなに面倒な作業じゃないですしね。後は、IPアドレスに関連づけられたセッションIDを使う便利な位置情報サービスが出てこないことを祈る限りです(がびーん)。



Special Thanks:
      日本無線
      京セラ

戻る