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