問題タブ [dronekit-python]
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.
dronekit-python - DroneKit - RTL 高度の設定
ヘリコプターが特定の高度で打ち上げに戻るようにしたいのですが、今のところ ArduPilot SITL ですべてを実行しています。最初に simple_goto() を使用しようとしました
simple_goto() は他の場所では正常に機能しますが、 vehicle.home_location を使用すると、ヘリコプターが高度 -7.5m まで降下します。しかもコプターは下降のみで、finish_locationまでは飛ばない。
だから私はRTLモードを使用しようとしました
うまく機能しますが、RTL 高度を目的のflight_altitude
パラメーターに設定する方法が見つかりません。デフォルトの 15m で実行されます。
raspberry-pi - RPi2 UART のセットアップと操作の問題
私は現在、Mavlink プロトコルを使用して Raspberry Pi Model 2 B V1.1 と Pixhawk Flight Controller の間の UART での通信の設定を含むマスター プロジェクトで忙しくしています。
もちろん、最初のステップは、UART をセットアップして動作させることです。私は、問題の最初の兆候で助けを求めるような人ではありません。私はこれに何日も苦労してきましたが、自分の存在の目的を何度も疑うことを余儀なくされました. 私は愚かで欲求不満を感じます。何かお手伝いできることがあればご覧ください。
私の最初のリソースはこのチュートリアルでした。これは比較的簡単です。
http://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html
このチュートリアルでは、必要なパッケージと依存関係をすべてインストールし、UART をセットアップするだけです。raspi-config を介してシリアル ポートの OS 使用を無効にする手順に従いましたが、接続をテストしようとするとエラーが発生します。
[Errno 2] そのようなファイルまたはディレクトリはありません: '/dev/ttyAMA0'
これは非常に奇妙です。そのため、rasp-config を使用して OS のシリアル ポートの使用を数回無効にしてから有効にして確認した後、無効にするたびに /dev/ttyAMA0 ファイルが消えます。UARTのOS使用を無効にするとそのファイルが削除された場合、UARTで動作するはずの何かが一体どうなるのですか!? それにもかかわらず、私は力を尽くしました。次のリンクに示すように、シリアル ポートの OS 使用を有効にしました。これにより、ttyAMA0 ファイルがそのまま残り、/boot/cmdline.txt を変更して ttyAMA0 へのすべての参照を削除するという別の提案に従いました。
http://www.raspberry-projects.com/pi/pi-operating-systems/raspbian/io-pins-raspbian/uart-pins
これは問題なく動作するように見えました。これで、RPi と Pixhawk フライト コントローラーの間で通信を開始し、正しいと思われる情報を取得できました。それから黒魔術が始まりました。翌日、接続をテストしたところ、一貫して完全なゴミが吐き出されました. しかし、前日から何も変わっていません。どこかで何かが欠けているに違いない。前日に得たより良い結果を得るために、同じチュートリアルと手順をすべて実行しました. ただし、それはより不安定な動作につながるだけでした。シリアル回線を Pixhawk Flight Controller に接続すると、キーボード/マウスがときどき一時的に中断されるようです。すべてが後退しただけです。何とか機能させようと必死になって Raspbian Jessie を再インストールしました。
以下に、問題の原因と思われるいくつかの要因を示します。
ボー レートが正しくありません (フライト コントローラと通信するには、ボー レートを 57600 にする必要があります)。このボー レートを設定する最善の方法は、"init_uart_baud=57600" を /boot/config.txt/ に追加することです。/etc/crontab に行を追加するなど、他の方法についても読みました。助言がありますか?
Pixhawk は奇跡的に散発的に RPi との通信を拒否しました。
任意の支援をいただければ幸いです。ありがとうございました。
dronekit-python - Dronekit python車両接続タイムアウト
ソロドローンでドローンキットを使用して helloworld.py を実行しようとしています。
私の環境は
単純な helloworld の例を実行しようとすると、タイムアウトが発生しvehicle.connect()
ます。
pymavlink も 1.1.73 にダウングレードしようとしましたが、うまくいきませんでした。どんな助けでも大歓迎です。
dronekit-python - Python Dronekitで«左/右/前方/後方に移動»する方法は?
ヘキサコプターを自動操縦し、このチュートリアルに従うために APM を使用しています。この利用可能なコマンドを見ると、ドローンに左/右/前方/後方に移動するように命令する方法がわかりません。
誰でもこれについて私を助けることができますか?
dronekit-python - Dronekit の Arducopter で GUIDED_NOGPS モードを設定するには?
どのようにArducopterにguided_nogpsモードに入るように命令するのですか? gps 拒否環境での操作を計画しています。他の投稿では、guided-nogps でこれが可能であることが示されていますが、そのモードを設定する方法がわかりません。Dronekit (python) vehicle.mode = VehicleMode("Guided_NoGPS") を使用すると、そのようなモードがないことを示すエラーが返されます。
また、Mavlink はモードの確認を拒否します。
私のセットアップは、Raspberry Pi コンパニオンを備えた Arducopter を実行する Pixhawk です。ファームウェアは v3.5 dev で、DroneKit-SITL では v3.4 です (このために独自の v3.4 バイナリをコンパイルしました)。
他のすべてはうまく機能しています (たとえば、この投稿のおかげで set_attitude_target を介して制御する DroneKit を介してヘリコプターの姿勢を設定する方法 -- SET_ATTITUDE_TARGET が機能していません) - 屋内に入ることができる必要があるだけです!
また、Arducopter v3.4 Controlling Movement without GPSのリリース前に、この投稿で、オプティカル フロー センサーが必要になる可能性があることに気付きました。その要件は満たされましたか?
再度、感謝します!
すべてのアドバイスを歓迎します。
Squilter さん、ご協力ありがとうございます。フライトモードを変更する関数を作成しました (20):
メッセージは正しく受信されましたが、成功しませんでした (結果 3 が返されました)。私がよくわからなかったのは、仕様がプラットフォーム固有であることを示しているパラメーター 2 でした。Arducopter ではどうすればよいかわからなかったので、0 を付けました。
繰り返しますが、どんな提案も歓迎します。
python - Python ではデフォルトでフロート
GPS 座標を使用するコードを書いていますが、python 2 で頭痛の種になっています。具体的には、dronkit python ライブラリを使用しています。これが私がやろうとしていることのサンプルです。
問題は、new_x と new_y が 41.0 などの丸められた値を出力することです。数値を float() でラップすることで問題を修正できることはわかっていますが、これは非常に扱いにくいようです。すべての数値を浮動小数点数として扱うように Python に指示する方法はありますか?
dronekit-python - Dronekit の SYSTEM_TIME とコンパニオン コンピューターの時間との間の累積誤差
この男と同様に、私は Pixhawk から Raspberry Pi コンパニオン コンピューターに GPS 時間を取得しようとしています。
このアプローチを試す前@vehicle.on_message('SYSTEM_TIME')
に、ワイルドカードを使用してすべてのメッセージをキャッチし、結果をファイルにダンプしました。ファイルを調べたところ、GPS から取得しているメッセージのタイプはGPS_RAW_INTだけであることがわかりました。最も重要なことは、ドキュメントによると、GPS から UTC 時間を取得するSYSTEM_TIME_UTCメッセージを取得していないことです。
今、@vehicle.on_message('SYSTEM_TIME')
作品をうまく使って、何かを得ています。しかし、それは何ですか?ドキュメントはそれが次のように主張しています:
システム時刻は、マスター クロックの時刻であり、通常はメインのオンボード コンピューターのコンピューター クロックです。
OK、「メインのオンボード コンピューター」は Pixhawk だと思います。しかし、それを含む GPS メッセージがない場合、どのようにして時刻を取得するのでしょうか。GPS_RAW_INTには時間情報は含まれません。
さらに調査して、次のハンドラーを作成しました。
rpi_timeは Raspberry Pi から取得され、起動時に NTP によって設定されるため正確です。mavlink_time (GPS ベースの時間である必要があると推測) がかなり近いことを確認したかったのです。私は間違っていた。
これを何度も実行すると、最初は GPS の時刻が常に約 2 秒進んでいることに気付きました。時間が経つにつれて、それは遅れます。出力例:
この場合、rpi_time (これは正しい) は 172 秒経過したと言っていますが、mavlink_time は 30 秒しか要求していません。
だから、私の質問は次のとおりです。
- SYSTEM_TIMEメッセージは何に基づいていますか? 現実的には GPS しかあり得ません (Pixhawk が利用できる唯一の時間データです) が、その場合は...
- なぜそんなに不正確なのですか? また、なぜSYSTEM_TIME_UTCメッセージも表示されないのですか?