問題タブ [gpsd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raspberry-pi2 - Raspberry Pi 2 GPSD が実行されていません
このチュートリアルに従って、 Adafruit の Ultimate GPS Breakout を Raspberry Pi 2 に接続しています。各ステップを注意深く読みました。
を実行するgpsmon /dev/ttyUSB0
と、位置、速度などの期待される出力が表示されます。cgps -s
しかし、実行すると、このメッセージが表示されますcgps: no gpsd running or network error: -4, can't create socket
。
本当に奇妙なことは、GPSD が故障しているように見えることです。ここで私はそれを開始しようとしています:
cgps
したがって、 GPSD がスターターではないため、失敗していることは明らかです。GPSD を機能させるための提案はありますか?
EDIT
を実行するsudo gpsd -N -D3 -F /var/run/gpsd.sock
と、次の出力が得られます。
c - gpsd クライアント (C) を実装して緯度、経度、高度を取得するにはどうすればよいですか?
GPS 対応の Raspberry Pi 用に、数値を計算するデータ ロギング C プログラムを作成しています。gpsdを入手したところ、そのサンプル アプリ cgps は GPS 情報を正しく表示します。libgpsを使用してデーモンとインターフェースし、アプリで便利な情報をすべて取得できるようにしたかったのですが、その API の複雑さにすぐに圧倒されてしまいました。
そのHOWTO ページのドキュメントでは、コードの例としてcgpsとgpxloggerを参照するように指示されていますが、あまりにも多くの結合があるため、すべてを説明することはできません。スペクトルの反対側では、libgpsページの C コードの例は、使用できないほど削ぎ落とされています。
これをわかりやすく説明する単一のクラス サンプルを誰か教えてもらえますか? getCoordinates()
おそらく機能を含むものでしょうか?
python - Python を使用した別のスレッドでの GPSd ポーリング
私は大気質ステーションを表す python クラスに取り組んでいます。各大気質ステーションには GPS が関連付けられているため、ステーションの緯度と経度の座標を特定できます。GpsPoller は別のスレッドで呼び出され、スレッドが終了するまで継続的に実行されます。GpsPoller は、常に最新の GPS データを取得するために使用する必要があります。
これまでに行ったことは次のとおりです。
このコードに関する 2 つの問題/質問があります。
AirStation クラスの初期化関数で緯度と経度の読み取りを確実にする最善の方法は何ですか? 初期化時に、緯度と経度の値が None になっています (GPS が衛星を修正するのに時間がかからなかったと思われます)。
GpsPoller が AirStation インスタンスと共に確実に終了されるようにする標準的な方法は何ですか? コマンドラインでこれをテストすると
exit()
、追加のスレッドがハングするため、コマンドがハングします。
以下を含むかなりの数の例とドキュメントを見てきました。
- https://docs.python.org/2/library/threading.html#thread-objects
- http://www.danmandle.com/blog/getting-gpsd-to-work-with-python/
- https://stackoverflow.com/a/6146351/3342427
追加のリソースや直接の回答をいただければ幸いです。
gps - RaspberryPi の GPS デーモン (gpsd) が修正なしと主張
USB アダプターを使用して、adafruit Ultimate gps v3 をラズベリー pi に接続しました。(gps ユニットの) LED が遅い速度で (10 秒ごとに) 点滅するため、gps ユニットは修正されているようです。そうすればsudo cat /dev/ttyUSB0
、場所を含むNMEAデータを取得できます。
しかし、gpsd をインストールすると、次のようになります。
デーモン (cgps -s) を実行すると、修正が見つからず、GPS がタイムアウトしたと表示されます。gpsd を強制終了して、再度実行しようとしました。
しかし、それは役に立ちませんでした。それがなぜなのか分かりますか?
python - ラズベリー パイで gps を使用しようとすると Python コード エラーが発生する
私はロボットを作ろうとしていて、オンラインで見つけたチュートリアルに従っています。GPS をセットアップするときは、すべて正しくセットアップし、GPS クライアントを実行しました。cgps -s 動作し、接続が見つかりました!
ただし、チュートリアルの残りの部分に従って、システムの起動時に gps デーモンを開始し、python gps を使用してログ ファイルを作成し、それを Google マップまたは地球にインポートできるようにする必要がありました。私はそれが言ったコードを使用しましたが、ここに私のエラーがあります。
プログラムで使用される私のpythonコードは次のとおりです。
そのプログラムを実行したときに表示されるエラーは次のとおりです。プログラムの名前は gps.py です。
c++ - 1PPS信号によるNTPD同期
C++ アプリケーションと連携する AHRS (姿勢見出し参照システム) があります。AHRS からイーサネット経由で 50Hz のメッセージ ストリームを受信し、このメッセージの一部として UTC 時刻を取得します。私のシステムでは、組み込みネットワークのタイム サーバーとして NTPD も実行されます。AHRS には、UTC の 2 回目のロールオーバー時間を示す 1PPS 出力もあります。NTPD 時刻を UTC と同期させたいと思います。いくつかの調査の結果、シリアル ポートを 1PPS の入力として利用する手法があることがわかりました。私が見つけた限りでは、これらの手法は GPSD を使用して 1PPS を読み取り、NTPD と通信してシステム時刻を同期させています。ただし、GPSD は GPS からの NMEA 形式のメッセージを予期しています。私はそれを持っていません。
現在の見方では、オプションのアプローチがいくつかあります。
GPSD を使用しないでください。1PPS を読み取り、イーサネット メッセージに UTC が含まれているプログラムを作成し、何らかの方法でこの情報を NTPD に伝達します。
GPSD を使用します。イーサネット メッセージを再パッケージ化して GPSD に送信できるプログラムを作成し、NTPD とのやり取りを処理させます。
他の何か?
どんな提案でも大歓迎です。
編集: この不十分に構成された質問をお詫びします。
この問題に対する私の解決法は次のとおりです。2 - カスタム C++ アプリケーションを作成して、UTC を含むイーサネット メッセージを読み取り、そこから UTC を含む NMEA メッセージを作成します。3 - NMEA メッセージを GPSD にフィードします。GPSD は、NTPD とインターフェイスして、GPS/1PPS 情報をシステム時間と同期させます。
c - gpsd デーモンからデータを抽出するための libgps
gpsdデーモンとのインターフェースにlibgpsを使用したかったのです。そのため、特定の衛星から値を抽出するために、小さなテスト アプリケーションを実装しました。
HOWTOページのドキュメントは、それを教えてくれます
注意が必要な部分は、ブロッキング読み取りから取得したものを解釈することです。注意が必要な理由は、すべての読み取りがデーモンから完全な JSON オブジェクトを 1 つだけ取得することが保証されていないためです。1 つの応答オブジェクト、複数、またはその一部、または 1 つ以上の後にフラグメントが続く場合があります。
ドキュメントで推奨されているように、他のPACKET_SET
処理を行う前にマスク ビットがチェックされます。
ドキュメンテーションでも推奨されているように、コード例として cgps と gpxlogger を調べましたが、libgps の微妙な点はわかりません。gps_waiting()
少なくとも 1 つの応答オブジェクト全体を取得するために、前に while ループが追加されました。pthread を導入する前に、応答を返すまでに数秒かかるtest_result()
直後に関数を呼び出すことに注意しました。スレッドを使用すると、すぐに返されるstart_test()
と思っていましたが、そうではありません。私はまだ数秒を失っています。さらに、マニュアルページにあるので、私は自発的に使用します3
3
4
pthread_tryjoin_np()
pthread_tryjoin_np() 関数は、スレッドとの非ブロック結合を実行します
誰か助けてくれませんか、何か間違っていると思いますが、まだどの部分については言えませんか? 基本的に、最初の値を返す前に do while ループを少なくとも 4 回実行するのはなぜですか?
編集1:
ドキュメント HOWTO をもう一度読んだ後、次の行を強調表示します。
データ待機チェックと両方の読み取りブロックがあるという事実は、アプリケーションが GPS 以外の入力ソースを処理する必要がある場合、おそらく gps_data 構造体のミューテックス ロックを使用してスレッドで読み取りループを分離する必要があることを意味します。 .
私は少し混乱しています。それは本当にどういう意味ですか?
python - ラズベリーパイのpySerialバッファリングgpsd座標
私は非常にイライラする問題を抱えており、Python/Raspberry pi にはまったく慣れていません。
GPS 座標を SSID でフィルター処理された iwlist スキャンと照合し、Wi-Fi 接続があるときはいつでも結果のファイルを電子メールで送信するスクリプトがあります。
私の問題は、結果が継続的にバッファリングされるため、GPS 座標がスキャンされた SSID からかなり離れている可能性があることです。
while ループの先頭でシリアル ラインをフラッシュしていますが、動作していないようです。また、バッファリングされていないPythonを実行しています(-u、しかしそれはテキストファイル専用かもしれません..)Output.flush()を追加しましたが、まだテストできていません。最初に聞いてみようと思いました。
私の質問は、シリアル ライン バッファをオフにして、while ループの実行時にすべての反復で GPS 座標を取得する方法はありますか? すべてのテキスト ファイルには、書き込み後に file.flush() があります。ファイルが書き込まれる前にそれが必要ですか、それともシリアルバッファに影響しませんか? 私は何が欠けていますか?
どんな助けでもいただければ幸いです