Mavros: FCU mavrosQGCチェーンの構築方法

作成日 2016年11月01日  ·  12コメント  ·  ソース: mavlink/mavros

こんにちは。テレメトリをコンピュータに接続し、mavrosノードを開いて、テレメトリを介してFCUと通信します。 mavrosを起動するときにどのUDPアドレスを入力しますか?

question

最も参考になるコメント

参考:GCS URLとしてudp-b://@を試してください。

全てのコメント12件

  • UDPアドレスは、PCのIPアドレスと関連するポートに基づいています。 アドレスは、実行時にlaunch fileまたはコマンドラインで設定できます。
  • 基本構造は
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

ただし、ポートとアドレスはシステムによって異なります。

ありがとう。 私はこれを理解していますが、テレメトリをコンピュータに接続するとき、どのIPアドレスを使用しますか。 FCUのIPアドレスはどこにありますか? 送信にrcテレメトリを使用しています

@zhahaoyu ifconfigを使用してPCのIPアドレスを確認できます。

  • テレメトリ方式を使用している場合、 mavrosはすでにテレメトリポートを介してFCU(PX4)からmavlinkメッセージを受信し、それらをROSメッセージに転送しています。 mavros別のことをさせて、同じ情報をUDPポートに公開します。UDPポートでは、QGCが情報を受信できます。

    • FCUとPC間の接続

<FCU> ---telemtry port --<MAVROS>

  • PCの場合:
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • したがって、FCUのIPアドレスを知る必要はなく、実際にはFCUのIPアドレスはありません。

@weiweikongに感謝します。 これで構造がわかりました。 roslaunch mavros px4.launchを使用しようとしましたが、テレムを介してFCUと通信するMavrosノードを開始できますが、QGCのUDPポートを開き、QGCにそれをリッスンするように指示するにはどうすればよいですか?

Mavrosを始めたとき、すべてが順調でした。 しかし、QGCを開くと、同じテレムポートを自動的にリッスンし、mavrosがクラッシュします。 では、どうすればQGCとmavrosの間の接続を作成できますか

@zhahaoyu

  • UDP構成の場合
<include file="$(find mavros)/launch/node.launch">
        <arg name="blacklist_yaml" value="$(find mavros)/launch/px4_blacklist.yaml" />
        <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

        <arg name="fcu_url" value="$(arg fcu_url)" />
        <arg name="gcs_url" value="$(arg gcs_url)" />
        <arg name="tgt_system" value="$(arg tgt_system)" />
        <arg name="tgt_component" value="$(arg tgt_component)" />
    </include>

gcs_urlセクションはUDP構成用です。 古いpx4Webサイトには、 https: //pixhawk.org/peripherals/onboard_computers/intel_edisonの詳細があり
例が示すように

<arg name="gcs_url" default="udp://:14556@my-intel-edisons-ip:14550" />

これは、QGCがUDPを介してポート14556に接続されることを意味します。

  • 安全のために、UDPポートをチェックして、使用可能または占有されていることを確認できます。

私はあなたの指示に従いました、これが私が使用した起動ファイルです

<launch>
    <!-- vim: set ft=xml noet : -->
    <!-- example launch script for PX4 based FCU's -->

    <arg name="fcu_url" default="/dev/ttyUSB0:57600" />
    <arg name="gcs_url" default="udp://:[email protected]:14550" />
    <arg name="tgt_system" default="1" />
    <arg name="tgt_component" default="1" />
    <arg name="log_output" default="screen" />

    <include file="$(find mavros)/launch/node.launch">
        <arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" />
        <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />

        <arg name="fcu_url" value="$(arg fcu_url)" />
        <arg name="gcs_url" value="$(arg gcs_url)" />
        <arg name="tgt_system" value="$(arg tgt_system)" />
        <arg name="tgt_component" value="$(arg tgt_component)" />
        <arg name="log_output" value="$(arg log_output)" />
    </include>
</launch>

QGCを起動すると、mavrosが次のエラーメッセージでクラッシュします

ERROR] [1478057788.915106802]: serial0: receive: End of file
terminate called after throwing an instance of 'std::system_error'
  what():  Resource deadlock avoided
================================================================================REQUIRED process [mavros-2] has died!
process has died [pid 12427, exit code -6, cmd /opt/ros/kinetic/lib/mavros/mavros_node __name:=mavros __log:=/home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2.log].
log file: /home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2*.log
Initiating shutdown!
================================================================================
[mavros-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done

@zhahaoyuこの状況についてはよくmavrosからの情報をリッスンするようにQGCUDP構成を設定できます。

serial0: receive: End of file

上記の情報が、QGCがFCUをシリアルポートに接続しようとしたことを意味するかどうかを確認しました。 trueの場合、QGCまたはmavrosがクラッシュする可能性があります。

QGCはシリアルポートを使おうとしていると思います。 SITLモードのROSでQGCを使用すると、すべてが正常に機能します。 実際のpixhawkfcuでこれを行う方法がわかりません。

@zhahaoyu PX4でmavrosを起動する前に、まずQGCを起動してから、シリアルポートではなくUDP接続を使用して設定してみてください。

@weiweikongどうもありがとうございました。 私は問題を解決しました。 他の人の参考のために、これが私がしたことです:

  1. QGroundControl Stationを開き、左上の[Q]アイコンをクリックして、[設定]パネルに入ります。
  2. 左側の[一般]をクリックし、[次のデバイスに自動接続]を見つけて、[SiKラジオ]をオプトアウトし、[UDP]をオプトインします。
  3. QGroundControlを閉じて、FCUから切断されていることを確認します
  4. Mavrosパッケージフォルダにあるpx4.launchファイルを編集し、「 udp://:[email protected] :14550」を追加します。14560と14550は未使用のポートです。
  5. roslaunch mavros px4.launch実行します
  6. QGroundControlを開きます

これでチェーンFCU <---telemetry---> MAVROS <---UDP---> QGCが確立されました。 QGCは、FCUvaiテレメトリに自動的に接続しなくなります。 それでも必要な場合は、手動接続を構成できます。

参考:GCS URLとしてudp-b://@を試してください。

こんにちは、私は同様の問題を抱えています。FPV無線テレメトリ地上モジュールを入手しました。アイリスドローンを所有するテレメトリと通信したいと思います。

テレメトリ(Ground)をubuntu pcに接続してドローンをオンにしても、Qgroundステーションが起動しません。

なぜこの問題なのですか?

ドライバをインストールする必要がありますか?

このページは役に立ちましたか?
0 / 5 - 0 評価