Mavros: Baixa taxa de atualização no tópico Mavros

Criado em 20 fev. 2019  ·  7Comentários  ·  Fonte: mavlink/mavros

Este é apenas um rastreador de bug e recurso, use-o
para relatar bugs ou solicitar recursos.


Detalhes do problema

Olá a todos,
Estou trabalhando em um projeto de drones internos e recentemente percebi algo ruim:
os tópicos estão sendo atualizados em uma taxa muito baixa (menos de 1 Hz) (incluindo o tópico mavros / local_position / pose que é importante para controlar o drone no modo OFFBOARD).
Está dificultando o controle de vôo pelo tópico setposition porque o drone não sabe sua altitude correta em tempo real. Quando eu testo este algoritmo de teste (voar 1 metro e manter sua posição), no Simulador Gazebo, os tópicos do Mavros estão sendo atualizados em um bom ritmo.
Para verificar se o problema é o sistema de telemetria, testei a taxa de atualização das informações no QGroundControl e quando movo o drone, as informações são atualizadas instantaneamente. Então, suponho que o sistema de telemetria (3DR Radio Link) não seja o problema.

Estou iniciando mavros por este comando:

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

Se houver uma maneira de resolver este problema (alta latência na atualização do tópico usando telemetria), por favor me diga.

Versão e plataforma MAVROS

Mavros: 0.18.4
ROS: Lunar 1.13.7
Ubuntu: 16.04

Tipo e versão do piloto automático

[] ArduPilot
[X] PX4

Versão: 3.7.1 (PX4FMU_V3) Pixhawk 2

Registros de nó

servidor roslaunch iniciado http: // lucas-Inspiron-7460 : 40689 /

RESUMO

PARÂMETROS CLAROS

  • / mavros /

PARÂMETROS

  • / mavros / cmd / use_comp_id_system_control: False
  • / 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 / orientação: PITCH_270
  • / mavros / distance_sensor / hrlv_ez4_pub / send_tf: True
  • / 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 / orientação: PITCH_270
  • / mavros / distance_sensor / laser_1_sub / subscriber: True
  • / 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 / orientação: PITCH_270
  • / mavros / distance_sensor / lidarlite_pub / send_tf: True
  • / 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 / orientação: PITCH_270
  • / mavros / distance_sensor / sonar_1_sub / subscriber: Verdadeiro
  • / 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: True
  • / mavros / fake_gps / satellites_visible: 5
  • / mavros / fake_gps / tf / child_frame_id: corrigir
  • / mavros / fake_gps / tf / frame_id: map
  • / mavros / fake_gps / tf / listen: False
  • / mavros / fake_gps / tf / rate_limit: 10.0
  • / mavros / fake_gps / tf / send: False
  • / mavros / fake_gps / use_mocap: True
  • / mavros / fake_gps / use_vision: False
  • / 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: map
  • / mavros / global_position / rot_covariance: 99999.0
  • / mavros / global_position / tf / child_frame_id: base_link
  • / mavros / global_position / tf / frame_id: map
  • / mavros / global_position / tf / global_frame_id: earth
  • / mavros / global_position / tf / send: False
  • / mavros / global_position / use_relative_alt: True
  • / 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 / magnet_stdev: 0,0
  • / mavros / imu /idance_stdev: 1.0
  • / mavros / local_position / frame_id: map
  • / mavros / local_position / tf / child_frame_id: base_link
  • / mavros / local_position / tf / frame_id: map
  • / mavros / local_position / tf / send: False
  • / mavros / local_position / tf / send_fcu: False
  • / mavros / mission / pull_after_gcs: True
  • / mavros / mocap / use_pose: True
  • / mavros / mocap / use_tf: False
  • / mavros / odometry / estimator_type: 3
  • / mavros / odometry / frame_tf / desejado_frame: ned
  • / mavros / plugin_blacklist: ['safety_area', '...
  • / 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: False
  • / mavros / setpoint_attitude / reverse_thrust: False
  • / mavros / setpoint_attitude / tf / child_frame_id: target_attitude
  • / mavros / setpoint_attitude / tf / frame_id: map
  • / mavros / setpoint_attitude / tf / listen: False
  • / mavros / setpoint_attitude / tf / rate_limit: 50.0
  • / mavros / setpoint_attitude / use_quaternion: False
  • / mavros / setpoint_position / mav_frame: LOCAL_NED
  • / mavros / setpoint_position / tf / child_frame_id: target_position
  • / mavros / setpoint_position / tf / frame_id: map
  • / mavros / setpoint_position / tf / listen: False
  • / mavros / setpoint_position / tf / rate_limit: 50.0
  • / mavros / setpoint_velocity / mav_frame: LOCAL_NED
  • / mavros / startup_px4_usb_quirk: Verdadeiro
  • / mavros / sys / disable_diag: False
  • / 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: map
  • / mavros / vision_pose / tf / listen: False
  • / mavros / vision_pose / tf / rate_limit: 10.0
  • / mavros / vision_speed / listen_twist: False
  • / rosdistro: lunar
  • / rosversion: 1.13.7

NODES
/
mavros (mavros / mavros_node)

auto-iniciar novo mestre
processo [master]: iniciado com pid [2541]
ROS_MASTER_URI = http: // localhost : 11311

configuração / run_id para 9a6d39f0-3495-11e9-b342-d80f99bfeedd
processo [rosout-1]: iniciado com pid [2554]
iniciou o serviço principal [/ rosout]
processo [mavros-2]: iniciado com pid [2558]

Diagnóstico

`` `
cabeçalho:
seq: 2138
carimbo:
segs: 1550618079
nsecs: 476350000
frame_id: ''
status:


  • nível: 0
    nome: "mavros: conexão FCU"
    mensagem: "conectado"
    hardware_id: "/ dev / ttyUSB0: 57600"
    valores:



    • chave: "Pacotes recebidos:"

      valor: "3164"



    • chave: "Pacotes perdidos:"

      valor: "0"



    • chave: "Estouros de buffer:"

      valor: "0"



    • chave: "Erros de análise:"

      valor: "0"



    • chave: "Número de sequência Rx:"

      valor: "40"



    • chave: "Número de sequência Tx:"

      valor: "56"



    • chave: "Rx total de bytes:"

      valor: "2350842"



    • chave: "Tx total bytes:"

      valor: "915507"



    • chave: "Velocidade Rx:"

      valor: "661,000000"



    • chave: "Velocidade Tx:"

      valor: "320,000000"


  • nível 2
    nome: "mavros: GPS"
    mensagem: "Sem satélites"
    hardware_id: "/ dev / ttyUSB0: 57600"
    valores:



    • chave: "Satélites visíveis"

      valor: "0"



    • chave: "Tipo de correção"

      valor: "0"



    • chave: "EPH (m)"

      valor: "99,99"



    • chave: "EPV (m)"

      valor: "99,99"


  • nível: 0
    nome: "mavros: Heartbeat"
    mensagem: "Normal"
    hardware_id: "/ dev / ttyUSB0: 57600"
    valores:



    • chave: "Batimentos cardíacos desde a inicialização"

      valor: "2793"



    • chave: "Frequência (Hz)"

      valor: "0,999995"



    • chave: "Tipo de veículo"

      valor: "Quadrotor"



    • chave: "Tipo de piloto automático"

      valor: "PX4 Autopilot"



    • chave: "Modo"

      valor: "MANUAL"



    • chave: "Status do sistema"

      valor: "Standby"


  • nível: 0
    nome: "mavros: Sistema"
    mensagem: "Normal"
    hardware_id: "/ dev / ttyUSB0: 57600"
    valores:



    • chave: "Sensor presente"

      valor: "0x00000000"



    • chave: "Sensor habilitado"

      valor: "0x00000000"



    • chave: "Sensor helth"

      valor: "0x00000000"



    • chave: "Carga da CPU (%)"

      valor: "28,8"



    • chave: "Taxa de queda (%)"

      valor: "0,0"



    • chave: "Comm de erros"

      valor: "0"



    • chave: "Contagem de erros # 1"

      valor: "0"



    • chave: "Contagem de erros # 2"

      valor: "0"



    • chave: "Contagem de erros # 3"

      valor: "0"



    • chave: "Contagem de erros # 4"

      valor: "0"


  • nível: 0
    nome: "mavros: Bateria"
    mensagem: "Normal"
    hardware_id: "/ dev / ttyUSB0: 57600"
    valores:



    • chave: "Voltagem"

      valor: "10,18"



    • chave: "Atual"

      valor: "0,0"



    • chave: "Restante"

      valor: "0,0"


  • nível 2
    nome: "mavros: Time Sync"
    mensagem: "Nenhum evento registrado."
    hardware_id: "/ dev / ttyUSB0: 57600"
    valores:



    • chave: "Timesyncs desde a inicialização"

      valor: "0"



    • chave: "Frequência (Hz)"

      valor: "0,000000"



    • chave: "Último dt (ms)"

      valor: "9,376617"



    • chave: "Dt médio (ms)"

      valor: "0,000000"



    • chave: "Última hora (s) do sistema"

      valor: "3023.959504000"



    • chave: "Diferença (ões) de tempo"

valor: "1550615055.404127836"

Verificar ID


OK. Recebi mensagens de 1: 1.

Recebeu 371 mensagens, de 1 endereço
sys: comp lista de mensagens

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

Obrigado pela ajuda!

question

Comentários muito úteis

Resolvi esse problema apenas alterando o parâmetro "MAV_0_RATE" (de 1200 (padrão) para 57600) sem alterar os parâmetros de taxa de transmissão. Anteriormente, eu estava tentando alterar o parâmetro SER_TEL1_BAUD (de 57600 para 115200), mas não resolveu o problema e a telemetria não funcionava com essa taxa de transmissão. Então testei apenas o MAV_0_RATE e funcionou bem.

Todos 7 comentários

Com essa taxa de transmissão nesse link de telemetria, parece perfeitamente normal que você esteja obtendo os dados nessas taxas, considerando que os perfis de taxa de link do PX4 para esse tipo de link são bastante baixos. Eu seguiria https://docs.px4.io/en/peripherals/serial_configuration.html e tentaria configurar a taxa de transmissão do link para 115200.

Caro TSC21,

Obrigado por me responder.

Segui o que você me recomendou, mas não tive sucesso. Quando eu mudo a taxa de transmissão do link para 115200, não consigo acessar o drone via telemetria. O QGroundControl exibe apenas: "Aguardando conexão do veículo". Tentei seguir aquele link que você postou aqui e alterei esses parâmetros (com o objetivo de alterar o link da taxa de transmissão):

SER_TEL1_BAUD - de "57600" a "115200"
MAV_0_RATE - de "1200" a "115200"
MAV_0_MODE - de "0" a "1" (normal -> personalizado)

Se houver algo errado neste procedimento, por favor, me avise.

Muito obrigado.

Traga este assunto para o Slack PX4.

Resolvi esse problema apenas alterando o parâmetro "MAV_0_RATE" (de 1200 (padrão) para 57600) sem alterar os parâmetros de taxa de transmissão. Anteriormente, eu estava tentando alterar o parâmetro SER_TEL1_BAUD (de 57600 para 115200), mas não resolveu o problema e a telemetria não funcionava com essa taxa de transmissão. Então testei apenas o MAV_0_RATE e funcionou bem.

Resolvi esse problema apenas alterando o parâmetro "MAV_0_RATE" (de 1200 (padrão) para 57600) sem alterar os parâmetros de taxa de transmissão. Anteriormente, eu estava tentando alterar o parâmetro SER_TEL1_BAUD (de 57600 para 115200), mas não resolveu o problema e a telemetria não funcionava com essa taxa de transmissão. Então testei apenas o MAV_0_RATE e funcionou bem.

Olá, como você alterou o MAV_0_RATE? Procurei na lista de parâmetros do Mission Planner, mas não consigo encontrar.

Resolvi esse problema apenas alterando o parâmetro "MAV_0_RATE" (de 1200 (padrão) para 57600) sem alterar os parâmetros de taxa de transmissão. Anteriormente, eu estava tentando alterar o parâmetro SER_TEL1_BAUD (de 57600 para 115200), mas não resolveu o problema e a telemetria não funcionava com essa taxa de transmissão. Então testei apenas o MAV_0_RATE e funcionou bem.

Olá, como você alterou o MAV_0_RATE? Procurei na lista de parâmetros do Mission Planner, mas não consigo encontrar.

Depende da versão do PX4 que você está executando. Eu acessei este parâmetro por QGroundControl. Você pode verificar os parâmetros aqui:

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

Se você não está encontrando o parâmetro por QGroundControl, eu recomendo que você defina este parâmetro pela linha de comando PX4

Para quem ainda procura uma solução.

Eu queria aumentar a taxa de publicação de mensagens de Odometria e HIGHRES_IMU.

Veja como resolvi esse problema:

1- Aumente a taxa de transmissão da comunicação serial alterando esses parâmetros PX4 no QGroundControl e reinicie o UAV.

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

Referências:

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- Altere a taxa com que o Mavlink publica as mensagens ODOMETRY / HIGHRES_IMU. Isso pode ser feito escrevendo este comando no cartão microSD no PX4. Como?

  • Remova o cartão do Pixhawk e conecte ao seu PC. Em seguida, vá para ./fs/etc/extras.txt

  • Se este diretório (ou parte dele) não existir, crie-o. Então, dentro de extras.txt, devemos escrever:

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

Referência:
https://dev.px4.io/v1.9.0/en/concept/system_startup.html#starting -additional-applications

Para completar, aqui estão os meus detalhes de configuração:

Versão e plataforma MAVROS

Mavros: 1.4

ROS: melódico

Ubuntu: 18.04

Tipo e versão do piloto automático

PX4

Versão: v1.10.1

PX4_FMU_V5 (V500)

NuttX, v7.29.0

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

L4ncelot picture L4ncelot  ·  5Comentários

mohand150 picture mohand150  ·  5Comentários

Phadadev picture Phadadev  ·  4Comentários

MasterRos picture MasterRos  ·  12Comentários

Changliu52 picture Changliu52  ·  6Comentários