Mavros: Faible taux de mise à jour sur le sujet Mavros

Créé le 20 févr. 2019  ·  7Commentaires  ·  Source: mavlink/mavros

Ceci est uniquement un traqueur de bogues et de fonctionnalités, veuillez l'utiliser
pour signaler des bogues ou demander des fonctionnalités.


Détails du problème

Bonjour à tous,
Je travaille sur un projet de drone indoor et récemment j'ai remarqué quelque chose de mauvais :
les sujets sont mis à jour à une fréquence très faible (moins de 1 Hz) (y compris le sujet mavros/local_position/pose qui est important pour contrôler le drone en mode OFFBOARD).
Cela rend le contrôle de vol difficile par sujet de setposition car le drone ne connaît pas son altitude correcte en temps réel. Lorsque je teste cet algorithme de test (voler à 1 mètre et maintenir sa position), sur Gazebo Simulator, les sujets Mavros se mettent à jour à un rythme agréable.
Afin de vérifier si le problème vient du système de télémétrie, j'ai testé le taux de mise à jour des informations sur QGroundControl et lorsque je déplace le drone, les informations sont mises à jour instantanément. Ensuite, je suppose que le système de télémétrie (3DR Radio Link) n'est pas le problème.

Je lance mavros par cette commande :

roslaunch mavros px4.launch fcu_url:=/dev/ttyUSB0:57600

S'il existe un moyen de résoudre ce problème (latence élevée sur la mise à jour du sujet à l'aide de la télémétrie), veuillez me le dire.

Version et plateforme MAVROS

Mavros : 0,18,4
ROS : Lunaire 1.13.7
Ubuntu : 16.04

Type et version du pilote automatique

[ ] ArduPilot
[X] PX4

Version : 3.7.1 (PX4FMU_V3) Pixhawk 2

Journaux de nœud

démarrage du serveur roslaunch http://lucas-Inspiron-7460 :40689/

RÉSUMÉ

EFFACER LES PARAMÈTRES

  • /mavros/

PARAMÈTRES

  • /mavros/cmd/use_comp_id_system_control : Faux
  • /mavros/conn/heartbeat_rate : 1.0
  • /mavros/conn/system_time_rate : 1.0
  • /mavros/conn/timeout : 10.0
  • /mavros/conn/timesync_rate : 10.0
  • /mavros/distance_sensor/hrlv_ez4_pub/field_of_view : 0,0
  • /mavros/distance_sensor/hrlv_ez4_pub/frame_id: hrlv_ez4_sonar
  • /mavros/distance_sensor/hrlv_ez4_pub/id: 0
  • /mavros/distance_sensor/hrlv_ez4_pub/orientation : PITCH_270
  • /mavros/distance_sensor/hrlv_ez4_pub/send_tf : vrai
  • /mavros/distance_sensor/hrlv_ez4_pub/sensor_position/x : 0,0
  • /mavros/distance_sensor/hrlv_ez4_pub/sensor_position/y: 0.0
  • /mavros/distance_sensor/hrlv_ez4_pub/sensor_position/z: -0.1
  • /mavros/distance_sensor/laser_1_sub/id : 3
  • /mavros/distance_sensor/laser_1_sub/orientation : PITCH_270
  • /mavros/distance_sensor/laser_1_sub/subscriber : vrai
  • /mavros/distance_sensor/lidarlite_pub/field_of_view : 0,0
  • /mavros/distance_sensor/lidarlite_pub/frame_id: lidarlite_laser
  • /mavros/distance_sensor/lidarlite_pub/id : 1
  • /mavros/distance_sensor/lidarlite_pub/orientation: PITCH_270
  • /mavros/distance_sensor/lidarlite_pub/send_tf : vrai
  • /mavros/distance_sensor/lidarlite_pub/sensor_position/x : 0,0
  • /mavros/distance_sensor/lidarlite_pub/sensor_position/y: 0.0
  • /mavros/distance_sensor/lidarlite_pub/sensor_position/z: -0.1
  • /mavros/distance_sensor/sonar_1_sub/id : 2
  • /mavros/distance_sensor/sonar_1_sub/orientation : PITCH_270
  • /mavros/distance_sensor/sonar_1_sub/subscriber : vrai
  • /mavros/fake_gps/eph: 2.0
  • /mavros/fake_gps/epv: 2.0
  • /mavros/fake_gps/fix_type: 3
  • /mavros/fake_gps/geo_origin/alt: 408.0
  • /mavros/fake_gps/geo_origin/lat: 47.3667
  • /mavros/fake_gps/geo_origin/lon: 8.55
  • /mavros/fake_gps/gps_rate : 5,0
  • /mavros/fake_gps/mocap_transform : vrai
  • /mavros/fake_gps/satellites_visible : 5
  • /mavros/fake_gps/tf/child_frame_id : correction
  • /mavros/fake_gps/tf/frame_id : carte
  • /mavros/fake_gps/tf/listen : Faux
  • /mavros/fake_gps/tf/rate_limit : 10.0
  • /mavros/fake_gps/tf/send : Faux
  • /mavros/fake_gps/use_mocap : vrai
  • /mavros/fake_gps/use_vision : Faux
  • /mavros/fcu_protocol: v2.0
  • /mavros/fcu_url: /dev/ttyUSB0:57600
  • /mavros/gcs_url :
  • /mavros/global_position/child_frame_id : base_link
  • /mavros/global_position/frame_id : carte
  • /mavros/global_position/rot_covariance: 99999.0
  • /mavros/global_position/tf/child_frame_id : base_link
  • /mavros/global_position/tf/frame_id : carte
  • /mavros/global_position/tf/global_frame_id : terre
  • /mavros/global_position/tf/send : Faux
  • /mavros/global_position/use_relative_alt : vrai
  • /mavros/image/frame_id: px4flow
  • /mavros/imu/angular_velocity_stdev : 0,000349065850399
  • /mavros/imu/frame_id: base_link
  • /mavros/imu/linear_acceleration_stdev : 0,0003
  • /mavros/imu/magnetic_stdev : 0.0
  • /mavros/imu/orientation_stdev : 1.0
  • /mavros/local_position/frame_id : carte
  • /mavros/local_position/tf/child_frame_id : base_link
  • /mavros/local_position/tf/frame_id : carte
  • /mavros/local_position/tf/send : Faux
  • /mavros/local_position/tf/send_fcu : Faux
  • /mavros/mission/pull_after_gcs : vrai
  • /mavros/mocap/use_pose : vrai
  • /mavros/mocap/use_tf : Faux
  • /mavros/odométrie/estimator_type: 3
  • /mavros/odométrie/frame_tf/desired_frame: ned
  • /mavros/plugin_blacklist : ['zone_de_sécurité', '...
  • /mavros/plugin_whitelist : ['sys_*', 'comman...
  • /mavros/px4flow/frame_id : px4flow
  • /mavros/px4flow/ranger_fov : 0.118682389136
  • /mavros/px4flow/ranger_max_range : 5,0
  • /mavros/px4flow/ranger_min_range : 0.3
  • /mavros/safety_area/p1/x : 1.0
  • /mavros/safety_area/p1/y : 1.0
  • /mavros/safety_area/p1/z : 1.0
  • /mavros/safety_area/p2/x: -1.0
  • /mavros/safety_area/p2/y: -1.0
  • /mavros/safety_area/p2/z: -1.0
  • /mavros/setpoint_accel/send_force : Faux
  • /mavros/setpoint_attitude/reverse_thrust : Faux
  • /mavros/setpoint_attitude/tf/child_frame_id : target_attitude
  • /mavros/setpoint_attitude/tf/frame_id : carte
  • /mavros/setpoint_attitude/tf/listen : Faux
  • /mavros/setpoint_attitude/tf/rate_limit : 50,0
  • /mavros/setpoint_attitude/use_quaternion : Faux
  • /mavros/setpoint_position/mav_frame : LOCAL_NED
  • /mavros/setpoint_position/tf/child_frame_id : target_position
  • /mavros/setpoint_position/tf/frame_id : carte
  • /mavros/setpoint_position/tf/listen : Faux
  • /mavros/setpoint_position/tf/rate_limit : 50,0
  • /mavros/setpoint_velocity/mav_frame : LOCAL_NED
  • /mavros/startup_px4_usb_quirk : vrai
  • /mavros/sys/disable_diag : Faux
  • /mavros/sys/min_voltage : 10.0
  • /mavros/target_component_id : 1
  • /mavros/target_system_id : 1
  • /mavros/tdr_radio/low_rssi: 40
  • /mavros/time/time_ref_source: fcu
  • /mavros/time/timesync_avg_alpha : 0.6
  • /mavros/time/timesync_mode : MAVLINK
  • /mavros/vibration/frame_id: base_link
  • /mavros/vision_pose/tf/child_frame_id : vision_estimate
  • /mavros/vision_pose/tf/frame_id : carte
  • /mavros/vision_pose/tf/listen : Faux
  • /mavros/vision_pose/tf/rate_limit : 10.0
  • /mavros/vision_speed/listen_twist : Faux
  • /rosdistro : lunaire
  • /rosversion : 1.13.7

NUDS
/
mavros (mavros/mavros_node)

démarrage automatique d'un nouveau maître
process[master] : démarré avec pid [2541]
ROS_MASTER_URI= http://localhost :11311

définir /run_id sur 9a6d39f0-3495-11e9-b342-d80f99bfeedd
processus[rosout-1] : démarré avec pid [2554]
a démarré le service de base [/rosout]
processus[mavros-2] : démarré avec pid [2558]

Diagnostique

```
entête:
séquence : 2138
timbre:
secondes : 1550618079
ns : 476350000
frame_id : ''
statut:


  • niveau : 0
    nom : « mavros : connexion FCU »
    message : "connecté"
    hardware_id : "/dev/ttyUSB0:57600"
    valeurs:



    • clé : "Paquets reçus :"

      valeur : " 3164 "



    • key : "Paquets abandonnés :"

      valeur : "0"



    • clé : "Dépassements de la mémoire tampon : »

      valeur : "0"



    • clé : « Erreurs d'analyse : »

      valeur : "0"



    • clé : "Numéro de séquence Rx :"

      valeur : "40"



    • clé : "Numéro de séquence Tx :"

      valeur : "56"



    • clé : « Rx total d'octets : »

      valeur : "2350842"



    • clé : "Tx total d'octets :"

      valeur : "915507"



    • touche : "Vitesse Rx : "

      valeur : "661.000000"



    • touche : "Vitesse Tx : "

      valeur : " 320.000000 "


  • niveau 2
    nom: "mavros: GPS"
    message : "Pas de satellites"
    hardware_id : "/dev/ttyUSB0:57600"
    valeurs:



    • clé : " Satellites visibles "

      valeur : "0"



    • clé : "Type de correctif"

      valeur : "0"



    • touche : "EPH (m)"

      valeur : « 99,99 »



    • clé : "VPE (m)"

      valeur : « 99,99 »


  • niveau : 0
    nom : " mavros : battement de coeur "
    message : "Normal"
    hardware_id : "/dev/ttyUSB0:57600"
    valeurs:



    • clé : « battements de cœur depuis le démarrage »

      valeur : "2793"



    • touche : "Fréquence (Hz)"

      valeur : "0.999995"



    • clé : "Type de véhicule"

      valeur : "Quadrotor"



    • touche : "Type de pilote automatique"

      valeur : « PX4 Pilote automatique »



    • touche : "Mode"

      valeur : "MANUEL"



    • touche : "État du système"

      valeur : « Veille »


  • niveau : 0
    nom : "mavros : système"
    message : "Normal"
    hardware_id : "/dev/ttyUSB0:57600"
    valeurs:



    • touche : "Capteur présent"

      valeur : "0x00000000"



    • touche : "Capteur activé"

      valeur : "0x00000000"



    • touche : « Haut capteur »

      valeur : "0x00000000"



    • clé : "Charge du processeur (%)"

      valeur : " 28,8 "



    • clé : "Taux de chute (%)"

      valeur : "0.0"



    • clé : "Erreurs de communication"

      valeur : "0"



    • clé : "Les erreurs comptent n° 1"

      valeur : "0"



    • clé : "Les erreurs comptent n° 2"

      valeur : "0"



    • clé : "Les erreurs comptent n° 3"

      valeur : "0"



    • clé : "Les erreurs comptent n° 4"

      valeur : "0"


  • niveau : 0
    nom : "mavros : batterie"
    message : "Normal"
    hardware_id : "/dev/ttyUSB0:57600"
    valeurs:



    • touche : "Tension"

      valeur : "10,18"



    • clé : "Actuel"

      valeur : "0.0"



    • clé : "Restant"

      valeur : "0.0"


  • niveau 2
    nom : "mavros : synchronisation de l'heure"
    message : "Aucun événement enregistré."
    hardware_id : "/dev/ttyUSB0:57600"
    valeurs:



    • clé : "Timesyncs depuis le démarrage"

      valeur : "0"



    • touche : "Fréquence (Hz)"

      valeur : "0.000000"



    • touche : "Dernier dt (ms)"

      valeur : "9.376617"



    • touche : "Moyenne dt (ms)"

      valeur : "0.000000"



    • touche : "Dernière heure système (s)"

      valeur : "3023.959504000"



    • touche : "Décalage(s) de temps"

valeur : "1550615055.404127836"

Vérifier l'identité


D'ACCORD. J'ai reçu des messages de 1:1.

371 messages reçus, à partir de 1 adresses
sys:comp liste des messages

1:1 0, 1, 36, 230, 32, 105, 74, 141, 77, 111, 241, 147, 245, 4, 24, 132, 106, 30

Merci pour l'aide!

question

Commentaire le plus utile

J'ai résolu ce problème en modifiant simplement le paramètre "MAV_0_RATE" (de 1200 (par défaut) à 57600) sans modifier les paramètres de débit en bauds. Auparavant, j'essayais de modifier le paramètre SER_TEL1_BAUD (de 57600 à 115200) mais cela n'a pas résolu le problème et la télémétrie ne fonctionnait pas avec ce débit en bauds. Ensuite, j'ai testé uniquement le MAV_0_RATE et cela a bien fonctionné.

Tous les 7 commentaires

Avec ce débit en bauds dans ce lien de télémétrie, il semble parfaitement normal que vous obteniez les données à ces débits, étant donné que les profils de débit de liaison de PX4 pour ce type de liens sont assez faibles. Je suivrais https://docs.px4.io/en/peripherals/serial_configuration.html et essaierais de configurer votre débit en bauds de lien à 115200.

Cher TSC21,

Merci de m'avoir répondu.

J'ai suivi ce que vous m'avez recommandé mais je n'ai pas réussi. Lorsque je change le débit en bauds du lien à 115200, je ne peux pas accéder au drone via la télémétrie. Le QGroundControl affiche uniquement : "En attente de connexion du véhicule". J'ai essayé de suivre ce lien que vous avez posté ici et j'ai modifié ces paramètres (visant à changer le lien de vitesse de transmission):

SER_TEL1_BAUD - de "57600" à "115200"
MAV_0_RATE - de "1200" à "115200"
MAV_0_MODE - de "0" à "1" (normal -> personnalisé)

S'il y a quelque chose qui ne va pas dans cette procédure, veuillez me le dire.

Merci beaucoup.

Veuillez apporter cette question à PX4 Slack.

J'ai résolu ce problème en modifiant simplement le paramètre "MAV_0_RATE" (de 1200 (par défaut) à 57600) sans modifier les paramètres de débit en bauds. Auparavant, j'essayais de modifier le paramètre SER_TEL1_BAUD (de 57600 à 115200) mais cela n'a pas résolu le problème et la télémétrie ne fonctionnait pas avec ce débit en bauds. Ensuite, j'ai testé uniquement le MAV_0_RATE et cela a bien fonctionné.

J'ai résolu ce problème en modifiant simplement le paramètre "MAV_0_RATE" (de 1200 (par défaut) à 57600) sans modifier les paramètres de débit en bauds. Auparavant, j'essayais de modifier le paramètre SER_TEL1_BAUD (de 57600 à 115200) mais cela n'a pas résolu le problème et la télémétrie ne fonctionnait pas avec ce débit en bauds. Ensuite, j'ai testé uniquement le MAV_0_RATE et cela a bien fonctionné.

Bonjour, comment avez-vous fait pour changer le MAV_0_RATE ? Je l'ai recherché dans la liste des paramètres de Mission Planner mais je ne le trouve pas.

J'ai résolu ce problème en modifiant simplement le paramètre "MAV_0_RATE" (de 1200 (par défaut) à 57600) sans modifier les paramètres de débit en bauds. Auparavant, j'essayais de modifier le paramètre SER_TEL1_BAUD (de 57600 à 115200) mais cela n'a pas résolu le problème et la télémétrie ne fonctionnait pas avec ce débit en bauds. Ensuite, j'ai testé uniquement le MAV_0_RATE et cela a bien fonctionné.

Bonjour, comment avez-vous fait pour changer le MAV_0_RATE ? Je l'ai recherché dans la liste des paramètres de Mission Planner mais je ne le trouve pas.

Cela dépend de la version PX4 que vous utilisez. J'ai accédé à ce paramètre par QGroundControl. Vous pouvez vérifier les paramètres ici :

https://docs.px4.io/v1.9.0/en/advanced_config/parameter_reference.html

Si vous ne trouvez pas le paramètre par QGroundControl, je vous recommande de définir ce paramètre par la ligne de commande PX4

Pour tous ceux qui sont encore à la recherche d'une solution.

Je voulais augmenter le taux de publication des messages Odométrie & HIGHRES_IMU.

Voici comment j'ai résolu ce problème :

1- Augmentez le débit en bauds de la communication série en modifiant ces paramètres PX4 sur QGroundControl, puis redémarrez le drone.

SER_TEL1_BAUD - from "57600" to "115200" 
MAV_0_RATE - from "1200" to "115200" 
MAV_0_MODE - from "0" to "1" (normal -> custom) 

Les références:

https://docs.px4.io/master/en/peripherals/serial_configuration.html#how -to-configure-a-port

https://github.com/mavlink/mavros/issues/1182#issuecomment -465672331

2- Modifiez le taux auquel Mavlink publie les messages ODOMETRY/ HIGHRES_IMU. Cela peut être fait en écrivant cette commande sur la carte microSD dans PX4. Comment?

  • Retirez la carte de Pixhawk et connectez-vous à votre PC. Ensuite, allez dans ./fs/etc/extras.txt

  • Si ce répertoire (ou une partie de celui-ci) n'existe pas, créez-le. Ensuite, dans extras.txt, nous devrions écrire :

mavlink stream -d /dev/ttyS0 -s HIGHRES_IMU -r 200 
mavlink stream -d /dev/ttyS0 -s ODOMETRY -r 200 

Référence:
https://dev.px4.io/v1.9.0/en/concept/system_startup.html#starting -additional-applications

Pour être complet, voici mes détails de configuration :

Version et plateforme MAVROS

Mavros : 1.4

ROS : mélodique

Ubuntu : 18.04

Type et version du pilote automatique

PX4

Version : v1.10.1

PX4_FMU_V5 (V500)

NuttX, v7.29.0

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

Questions connexes

RR2-IP2 picture RR2-IP2  ·  4Commentaires

watakandai picture watakandai  ·  8Commentaires

zhahaoyu picture zhahaoyu  ·  12Commentaires

TSC21 picture TSC21  ·  12Commentaires

mtsakaguchi picture mtsakaguchi  ·  5Commentaires