こんにちは。テレメトリをコンピュータに接続し、mavrosノードを開いて、テレメトリを介してFCUと通信します。 mavrosを起動するときにどのUDPアドレスを入力しますか?
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> ---telemtry port --<MAVROS>
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>
@weiweikongに感謝します。 これで構造がわかりました。 roslaunch mavros px4.launch
を使用しようとしましたが、テレムを介してFCUと通信するMavrosノードを開始できますが、QGCのUDPポートを開き、QGCにそれをリッスンするように指示するにはどうすればよいですか?
Mavrosを始めたとき、すべてが順調でした。 しかし、QGCを開くと、同じテレムポートを自動的にリッスンし、mavrosがクラッシュします。 では、どうすればQGCとmavrosの間の接続を作成できますか
@zhahaoyu
<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に接続されることを意味します。
私はあなたの指示に従いました、これが私が使用した起動ファイルです
<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どうもありがとうございました。 私は問題を解決しました。 他の人の参考のために、これが私がしたことです:
roslaunch mavros px4.launch
実行しますこれでチェーンFCU <---telemetry---> MAVROS <---UDP---> QGC
が確立されました。 QGCは、FCUvaiテレメトリに自動的に接続しなくなります。 それでも必要な場合は、手動接続を構成できます。
参考:GCS URLとしてudp-b://@
を試してください。
こんにちは、私は同様の問題を抱えています。FPV無線テレメトリ地上モジュールを入手しました。アイリスドローンを所有するテレメトリと通信したいと思います。
テレメトリ(Ground)をubuntu pcに接続してドローンをオンにしても、Qgroundステーションが起動しません。
なぜこの問題なのですか?
ドライバをインストールする必要がありますか?
最も参考になるコメント
参考:GCS URLとして
udp-b://@
を試してください。