我一直在尝试使用文档中的示例在我的脚本中实现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数据,但它保持不变。任何人都知道哪里出了问题。任何帮助都是非常感谢的。
发布于 2019-02-14 21:15:58
尽管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)https://stackoverflow.com/questions/50123680
复制相似问题