Реализация MAV_CMD_SET_MESSAGE_INTERVAL для dronekit - PullRequest
0 голосов
/ 01 мая 2018

Я пытался реализовать set_message_interval в моем скрипте, используя пример в документации. Я пытаюсь увеличить скорость, с которой я получаю сообщения Mavlink. Я получаю небольшое количество сообщений IMU в секунду и хочу увеличить его, поэтому я хотел использовать эту команду для увеличения частоты сообщений Mavlink. Вот мой код:

def set_message_interval(attribute, time):
      msg = vehicle.message_factory.command_long_encode(
      0, 0, #target system, target component
      mavutil.mavlink.MAV_CMD_SET_MESSAGE_INTERVAL, #command
      0, #confirmation
      attribute, #param 1
      time, #param 2
      0, 0, 0, 0, 0) #param 3-7 not used
      vehicle.send_mavlink(msg)

Я вызываю функцию, но всякий раз, когда я объявляю прослушиватель сообщений в основном, я все равно получаю сообщения с той же скоростью. Я ожидал, что слушатель получит больше данных IMU за 1 секунду, но он останется прежним. У любого есть идеи о том, что не так. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 14 февраля 2019

Хотя документация Mavlink рекомендует использовать MAV_CMD_SET_MESSAGE_INTERVAL , она не поддерживается в документации Ardupilot .

Вместо этого попробуйте использовать поддерживаемую команду REQUEST_DATA_STREAM и установить значение ответа ядра MAV_DATA_STREAM . Команда поддерживается фабрикой сообщений Dronekit следующим образом:

msg = vehicle.message_factory.request_data_stream_encode(
    0, 0,
    mavutil.mavlink.MAV_DATA_STREAM_RAW_SENSORS, # Including IMU
    10, # Rate (Hz)
    1) # Turn on
    vehicle.send_mavlink(msg)
...