在dronekit上实现MAV_CMD_SET_MESSAGE_INTERVAL

时间:2018-05-01 20:53:10

标签: dronekit-python

我一直在尝试使用文档中的示例在我的脚本中实现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数据,但它保持不变。任何人对什么是错的都有任何想法。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

尽管Mavlink的文档鼓励使用MAV_CMD_SET_MESSAGE_INTERVAL,但Ardupilot's documentation不支持它。

请尝试使用受支持的命令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)