0

我一直在尝试使用文档中的示例在我的脚本中实现 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)

我调用该函数,但每当我在 main 中声明一个消息侦听器时,我仍然以相同的速率接收消息。我期待听众在 1 秒内获得更多 IMU 数据,但它保持不变。任何人都对出了什么问题有任何想法。任何帮助表示赞赏。

4

1 回答 1

1

尽管 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)
于 2019-02-14T13:15:58.413 回答