Mavros: Wie man eine FCU-Mavros-QGC-Kette baut

Erstellt am 1. Nov. 2016  ·  12Kommentare  ·  Quelle: mavlink/mavros

Hallo, wenn ich die Telemetrie an meinen Computer anschließe und einen Mavros-Knoten öffne, um über die Telemetrie mit der FCU zu kommunizieren. Welche UDP-Adresse gebe ich ein, wenn ich mavros starte?

question

Hilfreichster Kommentar

Zu Ihrer Information: Versuchen Sie udp-b://@ als GCS-URL.

Alle 12 Kommentare

  • Die UDP-Adresse basiert auf der IP-Adresse Ihres PCs und dem zugehörigen Port. Sie können die Adresse in Ihrem launch file oder in der Befehlszeile festlegen, wenn Sie sie ausführen.
  • Die Grundstruktur ist
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

Der Port und die Adresse hängen jedoch von Ihrem System ab.

Vielen Dank. Ich verstehe das, aber wenn ich die Telemetrie an meinen Computer anschließe, welche IP-Adresse verwende ich? Wo finde ich die IP-Adresse der FCU? Ich benutze RC-Telemetrie für die Übertragung

@zhahaoyu Sie können Ihre PC-IP-Adresse mit ifconfig überprüfen.

  • Wenn Sie Telemetrie - Methode, mavros haben bereits erhalten mavlink Nachricht von FCU (PX4) durch Telemetrie - Port und übertragen sie auf ROS - Nachricht. Sie lassen die mavros einfach etwas anderes tun, um dieselben Informationen im UDP-Port zu veröffentlichen, wo QGC die Informationen empfangen kann.

    • Verbindung zwischen FCU und Ihrem PC

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

  • In Ihrem PC:
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • Es ist also nicht erforderlich, die IP-Adresse der FCU zu kennen, und es gibt tatsächlich keine IP-Adresse für die FCU.

Danke @weiweikong. Jetzt verstehe ich die Struktur. Ich habe versucht, roslaunch mavros px4.launch , und ich kann einen Mavros-Knoten starten, der über Telem mit der FCU kommuniziert. Wie öffne ich jedoch einen UDP-Port für QGC und weise QGC an, ihn anzuhören?

Als ich Mavros startete, war alles in Ordnung. Wenn ich jedoch QGC öffne, hört es automatisch denselben Telem-Port ab und mavros stürzt ab. Wie kann ich also die Verbindung zwischen QGC und mavros herstellen?

@zhahaoyu

  • Für die UDP-Konfiguration
<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>

Der Abschnitt gcs_url ist für die UDP-Konfiguration vorgesehen. Die alte px4-Website enthält weitere Informationen unter https://pixhawk.org/peripherals/onboard_computers/intel_edison.
Wie das Beispiel zeigt

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

bedeutet, dass QGC dann über UDP mit Port 14556 verbunden wird.

  • Aus Sicherheitsgründen können Sie die UDP-Ports überprüfen, um sicherzustellen, dass sie verfügbar oder belegt sind.

Ich habe Ihre Anweisungen befolgt. Hier ist die Startdatei, die ich verwendet habe

<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>

und mavros stürzt immer noch mit der folgenden Fehlermeldung ab, wenn ich QGC starte

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 Ich bin mir über diese Situation nicht ganz sicher. Nach meiner Erfahrung sollte QGC unabhängig mit ROS arbeiten, daher sollte es normal gestartet werden, und wir könnten die QGC-UDP-Konfiguration so einstellen, dass die Informationen von mavros abgehört werden.

serial0: receive: End of file

Ich bin mir jetzt sicher, ob die obigen Informationen bedeuten, dass QGC versucht hat, die FCU mit der seriellen Schnittstelle zu verbinden. Wenn es wahr wäre, könnten QGC oder mavros abstürzen.

Ich glaube, QGC versucht, die serielle Schnittstelle zu verwenden. Wenn ich QGC mit ROS im SITL-Modus verwende, funktioniert alles einwandfrei. Ich weiß nur nicht, wie ich das mit echtem Pixhawk fcu machen soll.

@zhahaoyu Vielleicht versuchen Sie zuerst,

@weiweikong Vielen Dank. Ich habe das Problem gelöst. Als Referenz für andere habe ich Folgendes getan:

  1. Öffnen Sie die QGroundControl Station und klicken Sie oben links auf das Symbol "Q", um das Bedienfeld "Einstellungen" aufzurufen
  2. Klicken Sie links auf "Allgemein" und suchen Sie "Automatische Verbindung zu folgenden Geräten herstellen:", deaktivieren Sie "SiK Radio" und aktivieren Sie "UDP".
  3. Schließen Sie QGroundControl, um sicherzustellen, dass die Verbindung zur FCU getrennt ist
  4. Bearbeiten Sie die Datei px4.launch, die sich im Mavros- Paketordner befindet, und fügen Sie "
  5. Führen Sie roslaunch mavros px4.launch
  6. Öffnen Sie QGroundControl

Nun wird eine Kette FCU <---telemetry---> MAVROS <---UDP---> QGC eingerichtet. QGC stellt keine automatische Verbindung mehr mit der FCU vai Telemetry her. Wenn wir das noch wollen, könnten wir eine manuelle Verbindung konfigurieren.

Zu Ihrer Information: Versuchen Sie udp-b://@ als GCS-URL.

Hallo, ich habe ein ähnliches Problem. Ich habe ein FPV-Radio-Telemetrie-Bodenmodul und möchte, dass es mit der Telemetrie kommuniziert, der die Iris-Drohne gehört.

Wenn ich die Telemetrie (Ground) an meinen Ubuntu-PC anschließe und die Drohne einschalte, wird die Qground-Station nicht gestartet.

Warum ist das Problem?

Muss ich Treiber installieren?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

trishantroy picture trishantroy  ·  10Kommentare

mohand150 picture mohand150  ·  5Kommentare

MasterRos picture MasterRos  ·  12Kommentare

lucaspenna00 picture lucaspenna00  ·  7Kommentare

y22ma picture y22ma  ·  7Kommentare