# 位置追跡 ![このレッスンの概要をスケッチノートで表した画像](../../../../../translated_images/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.ja.jpg) > スケッチノート作成者:[Nitya Narasimhan](https://github.com/nitya)。画像をクリックすると拡大表示されます。 ## 講義前のクイズ [講義前のクイズ](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/21) ## はじめに 農家から消費者へ食品を届ける主なプロセスは、農産物を箱詰めしてトラック、船、飛行機、その他の商業輸送車両に積み込み、食品をどこかに届けることです。直接顧客に届ける場合もあれば、中央ハブや倉庫に運んで処理する場合もあります。この農場から消費者までの一連のプロセスは、*サプライチェーン*と呼ばれます。以下の動画は、アリゾナ州立大学のW. P. Carey School of Businessが提供するもので、サプライチェーンの概念とその管理方法について詳しく説明しています。 [![サプライチェーン管理とは?アリゾナ州立大学W. P. Carey School of Businessの動画](https://img.youtube.com/vi/Mi1QBxVjZAw/0.jpg)](https://www.youtube.com/watch?v=Mi1QBxVjZAw) > 🎥 上の画像をクリックして動画を視聴してください IoTデバイスを追加することで、サプライチェーンを大幅に改善し、アイテムの所在を管理し、輸送や商品の取り扱いを計画しやすくし、問題に迅速に対応することが可能になります。 トラックなどの車両群を管理する際には、特定の時点で各車両がどこにいるかを知ることが役立ちます。車両にはGPSセンサーを搭載し、その位置情報をIoTシステムに送信することで、所有者は車両の位置を特定し、通ったルートを確認し、目的地に到着する時間を把握できます。ほとんどの車両はWiFiの範囲外で運行しているため、このようなデータはセルラー通信網を使用して送信されます。GPSセンサーは、電子ログブックのような複雑なIoTデバイスに組み込まれていることもあります。これらのデバイスは、トラックが運行している時間を追跡し、運転手が労働時間に関する現地法を遵守していることを確認します。 このレッスンでは、GPSセンサーを使用して車両の位置を追跡する方法を学びます。 このレッスンで学ぶ内容は以下の通りです: * [接続された車両](../../../../../3-transport/lessons/1-location-tracking) * [地理空間座標](../../../../../3-transport/lessons/1-location-tracking) * [全地球測位システム (GPS)](../../../../../3-transport/lessons/1-location-tracking) * [GPSセンサーのデータを読み取る](../../../../../3-transport/lessons/1-location-tracking) * [NMEA GPSデータ](../../../../../3-transport/lessons/1-location-tracking) * [GPSセンサーのデータをデコードする](../../../../../3-transport/lessons/1-location-tracking) ## 接続された車両 IoTは、*接続された車両*の車両群を作り出すことで、物資の輸送方法を変革しています。これらの車両は、位置情報やその他のセンサーデータを中央ITシステムに報告します。接続された車両群を持つことには多くの利点があります: * 位置追跡 - 車両がいつでもどこにいるかを特定できるため、以下のことが可能になります: * 車両が目的地に到着する直前に通知を受け取り、荷降ろしの準備をする * 盗難車両の位置を特定する * 位置とルートデータを交通問題と組み合わせて、旅の途中で車両を再ルート設定する * 税金の遵守。いくつかの国では、公共道路で走行した距離に応じて車両に課税されます(例:[ニュージーランドのRUC](https://www.nzta.govt.nz/vehicles/licensing-rego/road-user-charges/))。そのため、車両が公共道路上にいるか私有道路上にいるかを知ることで、課税額を計算しやすくなります。 * 故障時に整備チームを送るべき場所を把握する * 運転手のテレメトリー - 運転手が速度制限を守り、適切な速度で曲がり、早めに効率的にブレーキをかけ、安全に運転していることを確認する。接続された車両には、事故を記録するためのカメラを搭載することもできます。これを保険とリンクさせることで、優良運転手に割引料金を提供できます。 * 運転時間の遵守 - エンジンのオン・オフ時間に基づいて、運転手が法的に許可された運転時間内でのみ運転していることを確認する。 これらの利点は組み合わせることができます。例えば、運転時間の遵守と位置追跡を組み合わせて、運転手が許可された運転時間内に目的地に到達できない場合に再ルート設定を行うことができます。また、温度管理されたトラックの温度データなど、車両固有のテレメトリーと組み合わせることで、現在のルートでは商品を適切な温度で保管できない場合に車両を再ルート設定することが可能です。 > 🎓 ロジスティクスとは、農場からスーパーマーケットまで、1つ以上の倉庫を経由して物資を輸送するプロセスのことです。農家はトマトの箱をトラックに積み込み、中央倉庫に届け、異なる種類の農産物が混載された2台目のトラックに積み替えられ、最終的にスーパーマーケットに届けられます。 車両追跡の中心的な要素はGPSです。GPSセンサーは地球上のどこでもその位置を特定することができます。このレッスンでは、GPSセンサーの使用方法を学び、まず地球上の位置を定義する方法について学びます。 ## 地理空間座標 地理空間座標は、地球の表面上の点を定義するために使用されます。これは、コンピュータ画面上のピクセルに描画したり、クロスステッチで縫い目を配置したりする際に座標を使用するのと似ています。単一の点には座標のペアがあります。例えば、アメリカ・ワシントン州レドモンドにあるマイクロソフトキャンパスは、47.6423109, -122.1390293に位置しています。 ### 緯度と経度 地球は球体、つまり三次元の円です。このため、点は360度に分割して定義されます。これは円の幾何学と同じです。緯度は北から南の度数を測定し、経度は東から西の度数を測定します。 > 💁 円が360度に分割される理由は正確には分かっていません。[Wikipediaの「角度 (度)」のページ](https://wikipedia.org/wiki/Degree_(angle))では、いくつかの可能性について説明されています。 ![北極で90°、北極と赤道の中間で45°、赤道で0°、赤道と南極の中間で-45°、南極で-90°の緯度線](../../../../../translated_images/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.ja.png) 緯度は、地球を赤道に平行に走る線で分割し、北半球と南半球をそれぞれ90°に分割して測定します。赤道は0°、北極は90°(90°北とも呼ばれる)、南極は-90°(90°南とも呼ばれる)です。 経度は、東西の度数を測定します。経度の0°の起点は*本初子午線*と呼ばれ、1884年にイギリス・グリニッジの[王立天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)を通る北極から南極への線として定義されました。 ![本初子午線の西側で-180°から0°、本初子午線で0°、本初子午線の東側で180°までの経度線](../../../../../translated_images/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.ja.png) > 🎓 子午線とは、北極から南極までの直線で、半円を形成する仮想の線です。 ある点の経度を測定するには、本初子午線からその点を通る子午線まで赤道を回る度数を測定します。経度は-180°(180°西)から0°(本初子午線)、180°(180°東)までの範囲です。180°と-180°は同じ点を指し、反子午線または180度子午線と呼ばれます。これは本初子午線の反対側にある子午線です。 > 💁 反子午線は、ほぼ同じ位置にあるものの、直線ではなく地政学的な境界に合わせて変化する国際日付変更線とは異なります。 ✅ 調査してみましょう:現在地の緯度と経度を調べてみてください。 ### 度、分、秒と10進数度 伝統的に、緯度と経度の測定は60進法(セクサゲシマル)を使用して行われていました。これは、古代バビロニア人が最初に時間と距離の測定と記録を行った際に使用した数値体系です。日常生活で無意識に60進法を使用しているかもしれません。例えば、1時間を60分に分割し、1分を60秒に分割することです。 緯度と経度は度、分、秒で測定されます。1分は1度の1/60、1秒は1分の1/60です。 例えば、赤道では: * 緯度1°は**111.3キロメートル** * 緯度1分は111.3/60 = **1.855キロメートル** * 緯度1秒は1.855/60 = **0.031キロメートル** 分の記号はシングルクオート、秒の記号はダブルクオートです。例えば、2度17分43秒は2°17'43"と書かれます。秒の部分は小数で表されることがあります。例えば、0.5秒は0°0'0.5"です。 コンピュータは60進法では動作しないため、これらの座標はGPSデータを使用する際にはほとんどの場合10進数度で表されます。例えば、2°17'43"は2.295277です。度の記号は通常省略されます。 点の座標は常に`緯度, 経度`の形式で与えられます。先ほどの例であるマイクロソフトキャンパスの座標47.6423109,-122.117198では: * 緯度は47.6423109(赤道から北に47.6423109度) * 経度は-122.1390293(本初子午線から西に122.1390293度) ![マイクロソフトキャンパスの位置:47.6423109,-122.117198](../../../../../translated_images/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.ja.png) ## 全地球測位システム (GPS) GPSシステムは、地球を周回する複数の衛星を使用して位置を特定します。Apple MapsやGoogle Mapsなどのスマートフォンの地図アプリで位置を確認したり、UberやLyftなどの配車アプリで車両の位置を確認したり、車の衛星ナビゲーション(カーナビ)を使用したりする際に、知らず知らずのうちにGPSシステムを使用しているかもしれません。 > 🎓 「衛星ナビゲーション」の衛星はGPS衛星です! GPSシステムは、複数の衛星が現在の位置と正確なタイムスタンプを含む信号を送信することで機能します。これらの信号は電波で送信され、GPSセンサー内のアンテナによって検出されます。GPSセンサーはこれらの信号を検出し、現在の時刻を使用して信号が衛星からセンサーに到達するまでにかかった時間を測定します。電波の速度は一定であるため、GPSセンサーは送信されたタイムスタンプを使用してセンサーが衛星からどれだけ離れているかを計算できます。少なくとも3つの衛星から送信されたデータを位置情報と組み合わせることで、GPSセンサーは地球上の位置を特定することができます。 > 💁 GPSセンサーは電波を検出するためにアンテナが必要です。車両やトラックに搭載されたオンボードGPSのアンテナは、通常、フロントガラスや屋根に設置され、良好な信号を受信できるようになっています。スマートフォンやIoTデバイスなどの外部GPSシステムを使用する場合は、GPSシステムやスマートフォンに内蔵されたアンテナが空を見渡せる位置にあることを確認する必要があります。例えば、フロントガラスに取り付けるなどです。 ![センサーから複数の衛星までの距離を知ることで位置を計算する](../../../../../translated_images/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.ja.png) GPS衛星は地球を周回しており、センサーの真上に固定されているわけではないため、位置データには緯度と経度だけでなく海抜高度も含まれます。 GPSはかつて米軍によって精度に制限が設けられており、約5メートルの精度に制限されていました。この制限は2000年に解除され、30センチメートルの精度が可能になりました。ただし、この精度を得ることが常に可能であるわけではなく、信号の干渉によって制限されることがあります。 ✅ スマートフォンをお持ちの場合は、地図アプリを起動して現在地の精度を確認してみてください。複数の衛星を検出してより正確な位置を取得するまでに少し時間がかかる場合があります。 💁 衛星には非常に正確な原子時計が搭載されていますが、アインシュタインの特殊相対性理論と一般相対性理論が予測するように、速度が増すにつれて時間が遅くなるため、地球上の原子時計と比較して1日あたり38マイクロ秒(0.0000038秒)ずれることがあります。衛星は地球の自転よりも速く移動しているためです。このずれは、特殊相対性理論と一般相対性理論の予測を証明するために利用されており、GPSシステムの設計において調整が必要です。文字通り、GPS衛星上では時間が遅く進んでいます。 GPSシステムは、アメリカ、ロシア、日本、インド、EU、中国など、複数の国や政治連合によって開発・展開されています。現代のGPSセンサーは、これらのシステムのほとんどに接続でき、より迅速かつ正確な位置情報を取得することが可能です。 > 🎓 各展開における衛星群は「コンステレーション」と呼ばれます。 ## GPSセンサーのデータを読み取る ほとんどのGPSセンサーは、UARTを介してGPSデータを送信します。 > ⚠️ UARTについては[プロジェクト2、レッスン2](../../../2-farm/lessons/2-detect-soil-moisture/README.md#universal-asynchronous-receiver-transmitter-uart)で説明されています。必要に応じてそのレッスンを参照してください。 IoTデバイスにGPSセンサーを接続してGPSデータを取得することができます。 ### タスク - GPSセンサーを接続してGPSデータを読み取る 以下のガイドを参考にして、IoTデバイスを使用してGPSデータを読み取ってください: * [Arduino - Wio Terminal](wio-terminal-gps-sensor.md) * [シングルボードコンピュータ - Raspberry Pi](pi-gps-sensor.md) * [シングルボードコンピュータ - 仮想デバイス](virtual-device-gps-sensor.md) ## NMEA GPSデータ コードを実行すると、出力に意味不明な文字列が表示されるかもしれません。実際にはこれが標準的なGPSデータであり、それぞれに意味があります。 GPSセンサーは、NMEAメッセージを使用してデータを出力します。このメッセージはNMEA 0183標準に基づいています。NMEAは、[National Marine Electronics Association](https://www.nmea.org)(米国の海洋電子機器協会)の略称で、海洋電子機器間の通信標準を設定する貿易団体です。 > 💁 この標準は有料で、最低でも2,000米ドルかかりますが、公開されている情報が十分にあるため、標準のほとんどが逆解析され、オープンソースや非商業的なコードで使用することができます。 これらのメッセージはテキストベースです。各メッセージは、`$`文字で始まり、メッセージの送信元を示す2文字(例:米国GPSシステムの場合はGP、ロシアのGLONASSの場合はGN)、メッセージの種類を示す3文字が続きます。メッセージの残りはカンマで区切られたフィールドで構成され、最後に改行文字が付きます。 受信可能なメッセージの種類には以下のものがあります: | 種類 | 説明 | | ---- | ----------- | | GGA | GPS位置データ。GPSセンサーの緯度、経度、高度、位置情報を計算するために使用される衛星の数が含まれます。 | | ZDA | 現在の日付と時刻(ローカルタイムゾーンを含む) | | GSV | 見えている衛星の詳細 - GPSセンサーが信号を検出できる衛星 | > 💁 GPSデータにはタイムスタンプが含まれているため、IoTデバイスはGPSセンサーから時刻を取得することができ、NTPサーバーや内部リアルタイムクロックに依存する必要がありません。 GGAメッセージには、`(dd)dmm.mmmm`形式で現在の位置情報が含まれています。また、方向を示す1文字が付加されます。この形式の`d`は度、`m`は分で、秒は分の小数として表されます。例えば、2°17'43"は217.716666667 - 2度、17.716666667分となります。 方向を示す文字は、緯度の場合は`N`(北)または`S`(南)、経度の場合は`E`(東)または`W`(西)です。例えば、緯度が2°17'43"の場合、方向文字は`N`、-2°17'43"の場合は`S`となります。 例 - NMEA文 `$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67` * 緯度部分は`4738.538654,N`で、10進法では47.6423109に変換されます。`4738.538654`は47.6423109で、方向は`N`(北)なので正の緯度です。 * 経度部分は`12208.341758,W`で、10進法では-122.1390293に変換されます。`12208.341758`は122.1390293°で、方向は`W`(西)なので負の経度です。 ## GPSセンサーデータをデコードする 生のNMEAデータを使用するのではなく、より有用な形式にデコードする方が良いです。生のNMEAメッセージから有用なデータを抽出するためのオープンソースライブラリが複数存在します。 ### タスク - GPSセンサーデータをデコードする 以下のガイドを参考にして、IoTデバイスを使用してGPSセンサーデータをデコードしてください: * [Arduino - Wio Terminal](wio-terminal-gps-decode.md) * [シングルボードコンピュータ - Raspberry Pi/仮想IoTデバイス](single-board-computer-gps-decode.md) --- ## 🚀 チャレンジ 独自のNMEAデコーダーを作成してみましょう!サードパーティのライブラリに頼らず、NMEA文から緯度と経度を抽出する独自のデコーダーを作成できますか? ## 講義後のクイズ [講義後のクイズ](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/22) ## 復習と自己学習 * Wikipediaの[地理座標系のページ](https://wikipedia.org/wiki/Geographic_coordinate_system)で地理座標についてさらに学びましょう。 * Wikipediaの[本初子午線のページ](https://wikipedia.org/wiki/Prime_meridian#Prime_meridian_on_other_planetary_bodies)で地球以外の天体における本初子午線について調べてみましょう。 * EU、日本、ロシア、インド、アメリカなど、各国政府や政治連合によるさまざまなGPSシステムについて調査してみましょう。 ## 課題 [他のGPSデータを調査する](assignment.md) **免責事項**: この文書は、AI翻訳サービス [Co-op Translator](https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された原文が公式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。