12

私は多くの位置認識コンピューティングを行っており、多くの場合 GPS を組み込んでいます。私は、特別なことは何もしない、小さな単純な NMEA パーサーを持っています。GPS 固有のセンテンスを使用可能な数字やフラグなどに変換するだけです。

ただし、GPSD や Gypsy などのプロジェクトでは多くの活発な開発が行われています。GPS が単純な問題であるとすれば、プロジェクトはずっと前に終了し、単にメンテナンス モードに入っていただろう。

  • 彼らは何を知っている/私が知らないことをしているので、私のコードは説明できませんか?
4

2 に答える 2

9

GPSD リーダーによる優れた記事から:

  • NMEA 標準では、エラー、ジオイド、磁気変動などを含む完全な TPV (時間、位置、速度) タプルは提供されません。
  • さまざまな値がさまざまな文にあり、定義された順序がないため、どの速度がどの位置レポートに対応するかを簡単に知ることはできません
  • 一部の値は完全には示されていません (つまり、より一般的で入手可能な文では、年は 2 桁です)。
  • ベンダー、モデル、ファームウェアを特定する標準化された方法がない
  • 設定を変更する標準化された方法がない (通信速度、報告される文章、1 秒あたりのサンプル数など)
  • 高度な使用法と迅速なレポート作成のための互換性のないバイナリ プロトコル
  • USB からシリアルへのブリッジと Bluetooth からシリアルへのブリッジの興味深い競合状態のため、速度の変更は非常に難しい問題です。

-アダム

于 2009-02-25T19:26:24.237 に答える
3

私は NMEA と協力してきました。私の経験は次のとおりです。

NMEA 形式は適切に設計されていません。GPS 受信機に直接アクセスするプロフェッショナル アプリケーションでは、NMEA を避ける必要があります。彼らは、GPS デバイスの特定のバイナリ形式を考慮する必要があります。

上記の Adam Davis が言及したトピックに加えて:

  • 無効な属性を処理する方法が定義されていません。たとえば、車両が静止している場合、特に GPS 受信機を起動してから移動していない場合、コース/進行方向の属性は無効です。ほとんどのレシーバーは、空の属性「,,」を出力します。しかし、これは未定義です。
  • 時間フィールド: 一部のベンダーは、秒の後に小数部分を使用します。それが許可されているかどうかは正確に指定されていません(?)。一部のデバイスはそれを行い、他のデバイスはそうしません。(さらに: GGA 文は秒の後に 2 桁を定義し、RMC 文は整数秒を使用します)
  • RMC、GSV などのセンテンスの順序は受信者によって異なります。これは、位置修正がいつ完了したかを知るという問題につながります。新しいタイムスタンプが到着したことを確認すると、位置が完了したことがわかりますが、リアルタイムの動作に関しては、1 秒遅れます。または、受信者を知っていて、修正の最後の文がどれかを知っています。または、「人工知能」を使って最初の 10 秒間の注文を分析し、最後がどれかを判断します。

SIRF およびUBLOX プロトコル仕様を調べて、NMEA プロトコルをどのように解釈するかを説明する膨大な章を参照してください。

Java または Objective-C で書かれた本当に優れた NMEA パーサー/ライターを誰かが知っている場合、それはオープン ソースであり、GPL ライセンスの下ではありません。私に知らせてください。

于 2012-03-18T11:59:24.150 に答える