Mavros: Aucune réponse à l'appel de service ~set_stream_rate

Créé le 24 mai 2018  ·  18Commentaires  ·  Source: mavlink/mavros

Détails du problème

J'essaie d'augmenter le taux de mise à jour de l'IMU à l'aide de l'appel de service ~set_stream_rate. J'ai également essayé d'augmenter et de diminuer le taux, malheureusement sans succès.

J'ai essayé ce qui suit :
Dans un terminal : rosservice call /mavros/set_stream_rate 1 200 1 (j'ai aussi essayé avec 0 200 1, 0 10 1, 0 10 0 etc.)

En C++ :

#include <mavros_msgs/StreamRate.h>

    ros::ServiceClient stream_rate_client;
    ros::NodeHandle nh;
    stream_rate_client = nh.serviceClient<mavros_msgs::StreamRate>("/mavros/set_stream_rate");

    mavros_msgs::StreamRate streamRate;
    streamRate.request.stream_id = 1;
    streamRate.request.message_rate = 200;
    streamRate.request.on_off = true;
    stream_rate_client.call(streamRate);

Aucun de ceux-ci n'a fonctionné, je ne sais pas pourquoi. Je ne sais pas non plus comment procéder au débogage.

Version et plateforme MAVROS

Mavros : 0.25.1
ROS : cinétique
Ubuntu : 16.04

Type et version du pilote automatique

[ ] ArduPilot
[x] PX4

Version : 1.7.3

Journaux de nœud

$ rosrun mavros mavros_node _fcu_url:=tcp://127.0.0.1:5760 _system_id:=2
[ INFO] [1527166997.534725386]: FCU URL: tcp://127.0.0.1:5760
[ INFO] [1527166997.538179020]: tcp0: Server address: 127.0.0.1:5760
[ INFO] [1527166997.538583530]: GCS URL: udp://@
[ INFO] [1527166997.538851787]: udp1: Bind address: 0.0.0.0:14555
[ INFO] [1527166997.582075509]: Plugin 3dr_radio loaded
[ INFO] [1527166997.587216072]: Plugin 3dr_radio initialized
[ INFO] [1527166997.587433590]: Plugin actuator_control loaded
[ INFO] [1527166997.602908470]: Plugin actuator_control initialized
[ INFO] [1527166997.608098772]: Plugin adsb loaded
[ INFO] [1527166997.624933409]: Plugin adsb initialized
[ INFO] [1527166997.625174728]: Plugin altitude loaded
[ INFO] [1527166997.629202189]: Plugin altitude initialized
[ INFO] [1527166997.629439220]: Plugin cam_imu_sync loaded
[ INFO] [1527166997.631736889]: Plugin cam_imu_sync initialized
[ INFO] [1527166997.632005870]: Plugin command loaded
[ INFO] [1527166997.656271690]: Plugin command initialized
[ INFO] [1527166997.656518171]: Plugin debug_value loaded
[ INFO] [1527166997.679747716]: Plugin debug_value initialized
[ INFO] [1527166997.680021635]: Plugin distance_sensor loaded
[ WARN] [1527166997.684616922]: DS: plugin not configured!
[ INFO] [1527166997.684730488]: Plugin distance_sensor initialized
[ INFO] [1527166997.684972781]: Plugin fake_gps loaded
[ INFO] [1527166997.728127889]: Plugin fake_gps initialized
[ INFO] [1527166997.728480748]: Plugin ftp loaded
[ INFO] [1527166997.758929019]: Plugin ftp initialized
[ INFO] [1527166997.759219651]: Plugin global_position loaded
[ INFO] [1527166997.818296662]: Plugin global_position initialized
[ INFO] [1527166997.818588156]: Plugin hil loaded
[ INFO] [1527166997.882781780]: Plugin hil initialized
[ INFO] [1527166997.883048549]: Plugin home_position loaded
[ INFO] [1527166997.903052314]: Plugin home_position initialized
[ INFO] [1527166997.903807895]: Plugin imu loaded
[ INFO] [1527166997.933612538]: Plugin imu initialized
[ INFO] [1527166997.933850257]: Plugin local_position loaded
[ INFO] [1527166997.952751657]: Plugin local_position initialized
[ INFO] [1527166997.953008414]: Plugin manual_control loaded
[ INFO] [1527166997.968141910]: Plugin manual_control initialized
[ INFO] [1527166997.968481980]: Plugin mocap_pose_estimate loaded
[ INFO] [1527166997.984059425]: Plugin mocap_pose_estimate initialized
[ INFO] [1527166997.984304531]: Plugin obstacle_distance loaded
[ INFO] [1527166997.997733823]: Plugin obstacle_distance initialized
[ INFO] [1527166997.998059268]: Plugin odom loaded
[ INFO] [1527166998.013623175]: Plugin odom initialized
[ INFO] [1527166998.013984083]: Plugin param loaded
[ INFO] [1527166998.023299249]: Plugin param initialized
[ INFO] [1527166998.023588331]: Plugin px4flow loaded
[ INFO] [1527166998.042473344]: Plugin px4flow initialized
[ INFO] [1527166998.042727126]: Plugin rangefinder loaded
[ INFO] [1527166998.045338152]: Plugin rangefinder initialized
[ INFO] [1527166998.045632059]: Plugin rc_io loaded
[ INFO] [1527166998.062006661]: Plugin rc_io initialized
[ INFO] [1527166998.062537311]: Plugin safety_area loaded
[ INFO] [1527166998.083768132]: Plugin safety_area initialized
[ INFO] [1527166998.084033551]: Plugin setpoint_accel loaded
[ INFO] [1527166998.097458792]: Plugin setpoint_accel initialized
[ INFO] [1527166998.097776863]: Plugin setpoint_attitude loaded
[ INFO] [1527166998.135016088]: Plugin setpoint_attitude initialized
[ INFO] [1527166998.135395910]: Plugin setpoint_position loaded
[ INFO] [1527166998.199004407]: Plugin setpoint_position initialized
[ INFO] [1527166998.199288389]: Plugin setpoint_raw loaded
[ INFO] [1527166998.247947782]: Plugin setpoint_raw initialized
[ INFO] [1527166998.248232176]: Plugin setpoint_velocity loaded
[ INFO] [1527166998.276827990]: Plugin setpoint_velocity initialized
[ INFO] [1527166998.277159823]: Plugin sys_status loaded
[ INFO] [1527166998.313704869]: Plugin sys_status initialized
[ INFO] [1527166998.314003064]: Plugin sys_time loaded
[ INFO] [1527166998.325176275]: TM: Timesync mode: MAVLINK
[ INFO] [1527166998.327852553]: Plugin sys_time initialized
[ INFO] [1527166998.328095534]: Plugin vfr_hud loaded
[ INFO] [1527166998.330919928]: Plugin vfr_hud initialized
[ INFO] [1527166998.331147359]: Plugin vibration loaded
[ INFO] [1527166998.335247172]: Plugin vibration initialized
[ INFO] [1527166998.335499616]: Plugin vision_pose_estimate loaded
[ INFO] [1527166998.369932485]: Plugin vision_pose_estimate initialized
[ INFO] [1527166998.370189466]: Plugin vision_speed_estimate loaded
[ INFO] [1527166998.383793912]: Plugin vision_speed_estimate initialized
[ INFO] [1527166998.384077019]: Plugin waypoint loaded
[ INFO] [1527166998.403765289]: Plugin waypoint initialized
[ INFO] [1527166998.404032333]: Plugin wind_estimation loaded
[ INFO] [1527166998.406681323]: Plugin wind_estimation initialized
[ INFO] [1527166998.406813352]: Built-in SIMD instructions: SSE, SSE2
[ INFO] [1527166998.406874153]: Built-in MAVLink package version: 2018.5.5
[ INFO] [1527166998.406924542]: Known MAVLink dialects: common ardupilotmega ASLUAV autoquad icarous matrixpilot paparazzi slugs standard uAvionix ualberta
[ INFO] [1527166998.406979693]: MAVROS started. MY ID 2.240, TARGET ID 1.1
[ INFO] [1527166998.408225699]: IMU: Attitude quaternion IMU detected!
[ INFO] [1527166998.408474430]: IMU: High resolution IMU detected!
[ INFO] [1527166999.200899783]: CON: Got HEARTBEAT, connected. FCU: PX4 Autopilot
[ INFO] [1527166999.204518434]: IMU: High resolution IMU detected!
[ INFO] [1527166999.204972608]: IMU: Attitude quaternion IMU detected!
[ INFO] [1527167000.246101700]: VER: 1.1: Capabilities         0x00000000000024ef
[ INFO] [1527167000.246399932]: VER: 1.1: Flight software:     01060500 (00000000B9C7CD26)
[ INFO] [1527167000.246488372]: VER: 1.1: Middleware software: 01060500 (00000000B9C7CD26)
[ INFO] [1527167000.246534273]: VER: 1.1: OS software:         000000c0 (0000000000000000)
[ INFO] [1527167000.246748090]: VER: 1.1: Board hardware:      0000a4a7
[ INFO] [1527167000.246867818]: VER: 1.1: VID/PID:             0525:a4a7
[ INFO] [1527167000.246908907]: VER: 1.1: UID:                 3335511839343335
[ WARN] [1527167000.247388481]: CMD: Unexpected command 520, result 0
[ WARN] [1527167013.218527443]: PR: request param #452 timeout, retries left 2, and 1 params still missing
[ INFO] [1527167014.241870430]: WP: mission received
[ WARN] [1527167359.915573803]: CMD: Unexpected command 200, result 4
[ WARN] [1527168934.267074100]: TM: Clock skew detected (-763580720.440153122 s). Hard syncing clocks.

Diagnostique

header: 
  seq: 3416
  stamp: 
    secs: 1527169233
    nsecs: 907997653
  frame_id: ''
status: 
  - 
    level: 0
    name: "mavros: FCU connection"
    message: "connected"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Received packets:"
        value: "60196"
      - 
        key: "Dropped packets:"
        value: "0"
      - 
        key: "Buffer overruns:"
        value: "0"
      - 
        key: "Parse errors:"
        value: "0"
      - 
        key: "Rx sequence number:"
        value: "159"
      - 
        key: "Tx sequence number:"
        value: "39"
      - 
        key: "Rx total bytes:"
        value: "147758546"
      - 
        key: "Tx total bytes:"
        value: "580048"
      - 
        key: "Rx speed:"
        value: "100808.000000"
      - 
        key: "Tx speed:"
        value: "390.000000"
  - 
    level: 0
    name: "mavros: GPS"
    message: "3D fix"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Satellites visible"
        value: "8"
      - 
        key: "Fix type"
        value: "3"
      - 
        key: "EPH (m)"
        value: "1.24"
      - 
        key: "EPV (m)"
        value: "2.39"
  - 
    level: 0
    name: "mavros: Heartbeat"
    message: "Normal"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Heartbeats since startup"
        value: "2229"
      - 
        key: "Frequency (Hz)"
        value: "0.962947"
      - 
        key: "Vehicle type"
        value: "Quadrotor"
      - 
        key: "Autopilot type"
        value: "PX4 Autopilot"
      - 
        key: "Mode"
        value: "AUTO.RTL"
      - 
        key: "System status"
        value: "Standby"
  - 
    level: 0
    name: "mavros: System"
    message: "Normal"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Sensor present"
        value: "0x00000000"
      - 
        key: "Sensor enabled"
        value: "0x00000000"
      - 
        key: "Sensor helth"
        value: "0x00000000"
      - 
        key: "CPU Load (%)"
        value: "77.8"
      - 
        key: "Drop rate (%)"
        value: "0.0"
      - 
        key: "Errors comm"
        value: "0"
      - 
        key: "Errors count #1"
        value: "0"
      - 
        key: "Errors count #2"
        value: "0"
      - 
        key: "Errors count #3"
        value: "0"
      - 
        key: "Errors count #4"
        value: "0"
  - 
    level: 0
    name: "mavros: Battery"
    message: "Normal"
    hardware_id: "tcp://127.0.0.1:5760"
    values: 
      - 
        key: "Voltage"
        value: "17.91"
      - 
        key: "Current"
        value: "0.0"
      - 
        key: "Remaining"
        value: "100.0"
---

Vérifier l'identité

WARNING: mavros/target_system_id not set. Used default value: 1
WARNING: mavros/target_component_id not set. Used default value: 1
NOTE: Target parameters may be unset, but that may be result of incorrect --mavros-ns option.Double check results!
OK. I got messages from 1:1.

---
Received 9307 messages, from 1 addresses
sys:comp   list of messages
  1:1     0, 1, 2, 266, 140, 141, 147, 24, 30, 31, 32, 33, 36, 74, 76, 83, 85, 87, 230, 231, 105, 111, 241, 242, 245

PX4 question

Tous les 18 commentaires

PX4 ne prend pas en charge ce message. Lisez la documentation du micrologiciel PX4 sur la façon de configurer les taux de message.

PX4 prend en charge MAV_CMD_GET_MESSAGE_INTERVAL et MAV_CMD_SET_MESSAGE_INTERVAL.

https://mavlink.io/en/messages/common.html#MAV_CMD_GET_MESSAGE_INTERVAL

Oui, mais cet iface n'est pas encore pris en charge par mavros (nécessite un nouvel appel rosapi).

@vooon , @dagar Merci de

J'ai essayé rosrun mavros mavcmd int 511 105 10000 100 1 1 1 1 , mais sans succès. Les chiffres correspondent aux éléments suivants :
511 : https://mavlink.io/en/messages/common.html#MAV_CMD_GET_MESSAGE_INTERVAL
105 : https://github.com/PX4/Firmware/blob/4453e4201b7a245cff52beeb38a293161aea4c48/Tools/mavlink_px4.py#L506
1 1 1 1 : J'ai dû faire le plein de quelque chose, sinon j'ai eu mavcmd int: error: too few arguments

A également augmenté le taux de l'IMU avec le module mavlink de PX4 mavlink stream -u 14556 -s HIGHRES_IMU -r 100 . Pourtant, le taux reste de 50 lorsque je le vérifie avec rostopic hz /mavros/imu/data . Que faut-il faire en dehors de mavros pour publier le sujet /mavros/imu/data plus rapidement ?

Essayez aussi la commande longue, mavcmd long 511 105 1000 0 0 0 0 0 0

Merci pour la réponse rapide @vooon

J'ai essayé rosrun mavros mavcmd long 511 105 1000 0 0 0 0 0 , malheureusement le tarif est toujours de 50.

Qu'est-ce qui pousse mavros à publier sur /mavros/imu/data ? J'ai trouvé que les données sont publiées ici dans la fonction handle_attitude_quaternion , mais je n'ai pas trouvé ce qui déclenche cette fonction.

@szebedy, l'Aero diffuse les données via UDP, n'est-ce pas ? Quel est le port qu'il utilise ? Pourquoi utilisez-vous plutôt TCP ? mavlink stream -u 14556 -s HIGHRES_IMU -r 100 ne fonctionnera que si l'Aero diffuse réellement via ce port UDP.

Qu'est-ce qui pousse mavros à publier sur /mavros/imu/data ? J'ai trouvé que les données sont publiées ici dans la fonction handle_attitude_quaternion , mais je n'ai pas trouvé ce qui déclenche cette fonction.

Il se déclenche lorsque MAVROS reçoit un message HIGHRES_IMU du flux.

@TSC21 Très bonne remarque, le contrôleur de vol Aero diffuse en fait les données via un port série (/dev/ttyS1) vers la carte de calcul. Cependant, pour rendre les choses "plus faciles", la carte de calcul dispose d'un proxy qui expose le port série en tant que socket réseau (port 5760).

J'ai donc essayé mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100 , mais malheureusement le taux de streaming reste 50 :(

Sur PX4, data_raw devrait avoir le même tarif que HIGHRES_IMU, mais data combine ATTITUDE_QUATERNION et hr-imu, alors essayez aussi de changer son tarif.

la carte de calcul a un proxy qui expose le port série en tant que socket réseau (port 5760).

Ensuite, le problème peut être sur le proxy. Je garantirais que le goulot d'étranglement n'est pas là.

Merci beaucoup @vooon (et @TSC21), ça a fait l'affaire !!! Les solutions actuelles sont donc :

  1. Exécutez ce qui suit dans la console QGC Mavlink :
mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100
mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100
  1. Dans une borne
rosrun mavros mavcmd long 511 105 10000 0 0 0 0 0
rosrun mavros mavcmd long 511 31 10000 0 0 0 0 0

Est-il possible d'inclure ces deux commandes dans un fichier de lancement ROS (ou dans un nœud C++ ROS) ?

Est-il possible d'inclure ces deux commandes dans un fichier de lancement ROS (ou dans un nœud C++ ROS) ?

Il suffit de mettre :

mavlink stream -d /dev/ttyS1 -s HIGHRES_IMU -r 100

ou

mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100

dans https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc , reprogrammez votre carte Aero et redémarrez-la. Et vous n'aurez même pas besoin d'utiliser les commandes ROS.
Je ferme ça alors.

Juste une remarque aussi :
Si vous souhaitez obtenir des données de mavros/imu/data_raw , il vous suffit d'augmenter le flux de HIGHRES_IMU . Si vous voulez obtenir à partir de mavros/imu/data (attitude filtrée), vous augmentez simplement de ATTITUDE_QUATERNION . Pas besoin d'augmenter pour les deux (car vous augmenteriez l'utilisation de la bande passante sans raison). Vous obteniez simplement les données du mauvais sujet en premier lieu. Si vous aviez émis rostopic hz /mavros/imu/data_raw , vous auriez vu l'augmentation du débit de données.

Il suffit de mettre :

flux mavlink -d /dev/ttyS1 -s HIGHRES_IMU -r 100

ou

flux mavlink -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100

dans https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc , reprogrammez votre carte Aero et redémarrez-la. Et vous n'aurez même pas besoin d'utiliser les commandes ROS.
Je ferme ça alors.

@TSC21 Pour une raison quelconque, cela n'a eu aucun effet, une idée pourquoi? J'ai inséré mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100 à la fin de https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc , construit avec make aerofc-v1_default , puis téléchargé avec make aerofc-v1_default upload . L'upload se termine, je reboot mais le taux de mavros/imu/data reste à 50.

@TSC21 aero n'a pas de fonction de script extras.txt ? Pixhawk peut exécuter le script extras.txt à partir de la carte SD, ce qui permet de configurer des flux.

@TSC21 Pour une raison quelconque, cela n'a eu aucun effet, une idée pourquoi? J'ai inséré mavlink stream -d /dev/ttyS1 -s ATTITUDE_QUATERNION -r 100 à la fin de https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/4070_aerofc , construit avec make aerofc -v1_default, puis téléchargé avec make aerofc-v1_default upload. Le téléchargement se termine, je redémarre mais le taux de mavros/imu/data reste à 50.

Peut-être qu'il est écrasé par cette ligne : https://github.com/PX4/Firmware/blob/ab279d5fe9e014cec26add8a56bd5e676152b1c5/src/modules/mavlink/mavlink_main.cpp#L2042

Ma solution de travail actuelle consiste à remplacer configure_stream("ATTITUDE_QUATERNION", 50.0f); par configure_stream("ATTITUDE_QUATERNION", 100.0f); , puis à créer et à télécharger.

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