Mavros: Comment construire la chaîne FCU mavros QGC

Créé le 1 nov. 2016  ·  12Commentaires  ·  Source: mavlink/mavros

Salut, si je branche la télémétrie sur mon ordinateur et ouvre un nœud mavros pour communiquer avec le FCU via la télémétrie. Quelle adresse UDP dois-je mettre lorsque je lance des mavros?

question

Commentaire le plus utile

FYI: Essayez udp-b://@ comme URL GCS.

Tous les 12 commentaires

  • L'adresse UDP est basée sur l'adresse IP de votre PC et le port associé. Vous pouvez définir l'adresse dans votre launch file ou sur la ligne de commande lorsque vous l'exécutez.
  • La structure de base est
roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

cependant, le port et l'adresse dépendent de votre système.

Merci. Je comprends cela, mais lorsque je branche la télémétrie sur mon ordinateur, quelle adresse IP dois-je utiliser. Où puis-je trouver l'adresse IP du FCU? J'utilise la télémétrie RC pour la transmission

@zhahaoyu Vous pouvez vérifier l'adresse IP de votre PC en utilisant ifconfig .

  • Si vous utilisez la méthode de télémétrie, mavros ont déjà reçu mavlink message mavros faire autre chose, publier les mêmes informations dans le port UDP, où QGC pourrait recevoir les informations.

    • Connexion entre FCU et votre PC

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

  • Dans votre PC:
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>

  • Ainsi, il n'est pas nécessaire de connaître l'adresse IP de FCU, et il n'y a pas d'adresse IP pour FCU en fait.

Merci @weiweikong. Maintenant, je comprends la structure. J'ai essayé d'utiliser le roslaunch mavros px4.launch , et je suis capable de démarrer un nœud Mavros communiquant avec FCU via telem, mais comment ouvrir un port UDP pour QGC et demander à QGC de l'écouter?

Quand je lance Mavros, tout allait bien. Mais si j'ouvre QGC, il écoute automatiquement le même port telem et mavros plante. Alors, comment puis-je créer la connexion entre QGC et mavros

@zhahaoyu

  • Pour la configuration 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>

la section gcs_url est pour la configuration UDP. L'ancien site Web px4 contient plus de détails https://pixhawk.org/peripherals/onboard_computers/intel_edison.
Comme le montre l'exemple

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

signifie que QGC sera alors connecté via UDP au port 14556.

  • Pour des raisons de sécurité, vous pouvez vérifier les ports UDP pour vous assurer qu'ils sont disponibles ou occupés.

J'ai suivi vos instructions, voici le fichier de lancement que j'ai utilisé

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

et mavros plante toujours avec le message d'erreur suivant lorsque je démarre QGC

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 Je ne suis pas tout à fait sûr de cette situation. D'après mon expérience, QGC devrait fonctionner indépendamment avec ROS, il devrait donc démarrer normalement, et nous pourrions définir la configuration QGC UDP pour écouter les informations de mavros .

serial0: receive: End of file

Je suis maintenant sûr que les informations ci-dessus signifient que QGC a essayé de connecter FCU au port série. Si c'était vrai, QGC ou mavros pourrait planter.

Je crois que QGC essaie d'utiliser le port série. Lorsque j'utilise QGC avec ROS en mode SITL, tout fonctionne correctement. Je ne sais tout simplement pas comment faire cela avec du vrai pixhawk fcu.

@zhahaoyu Essayez peut-être de démarrer QGC d'abord, puis de le configurer en utilisant une connexion UDP au lieu du port série avant de lancer les mavros avec PX4.

@weiweikong Merci beaucoup. J'ai résolu le problème. Pour la référence des autres, voici ce que j'ai fait:

  1. Ouvrez QGroundControl Station et cliquez sur l'icône «Q» en haut à gauche, en entrant dans le panneau «Préférences»
  2. Cliquez sur "Général" sur la gauche, puis recherchez "Se connecter automatiquement aux appareils suivants:", désactivez "SiK Radio" et activez "UDP"
  3. Fermez QGroundControl pour vous assurer qu'il est déconnecté du FCU
  4. Modifiez le fichier px4.launch, qui se trouve dans le dossier du package Mavros, ajoutez " udp: //: [email protected] : 14550", 14560 et 14550 sont des ports inutilisés
  5. Exécutez roslaunch mavros px4.launch
  6. Ouvrez QGroundControl

Maintenant, une chaîne FCU <---telemetry---> MAVROS <---UDP---> QGC est établie. QGC ne se connectera plus automatiquement à la télémétrie FCU vai. Si nous voulons toujours cela, nous pourrions configurer une connexion manuelle.

FYI: Essayez udp-b://@ comme URL GCS.

Bonjour, j'ai un problème similaire, j'ai un module terrestre de télémétrie radio FPV et je veux qu'il communique avec la télémétrie qui possède le drone Iris.

Lorsque je connecte la télémétrie (Ground) à mon pc ubuntu et allume le drone, la station Qground ne démarre pas.

Pourquoi ce problème?

Dois-je installer des pilotes?

Cette page vous a été utile?
0 / 5 - 0 notes