You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Olympe SDK触发消息获取Anafi-AI无人机固件版本

触发Olympe AllSettings消息并获取Anafi-AI固件版本

使用Olympe SDK连接Parrot Sphinx模拟器中的Anafi-AI无人机时,需通过ProductVersionChanged事件获取固件版本,但必须先触发AllSettings命令,否则会出现未初始化错误。以下是正确的实现方式:

完整代码实现

import olympe
from olympe.messages.skyctrl import Settings, SettingsState

DRONE_IP = "你的无人机IP"  # 替换为Sphinx模拟器对应的IP,如默认的10.202.0.1

class firmware_status:
    def get_firmware_version(self):
        drone = olympe.Drone(DRONE_IP)
        try:
            drone.connect()
            # 触发AllSettings命令,等待设备同步所有设置状态
            assert drone(Settings.AllSettings(_timeout=10)).wait().success()
            # 获取ProductVersionChanged事件中的固件版本信息
            version_data = drone.get_state(SettingsState.ProductVersionChanged)
            return version_data["software"]
        finally:
            # 确保无论执行结果如何都断开连接
            drone.disconnect()

# 调用示例
if __name__ == "__main__":
    fw_checker = firmware_status()
    print(f"Anafi-AI固件版本: {fw_checker.get_firmware_version()}")

关键逻辑说明

  • 触发AllSettings:drone(Settings.AllSettings(_timeout=10)).wait()会发送同步命令并等待执行完成,这一步是核心——只有完成设置同步,ProductVersionChanged事件才会被正确初始化,避免后续获取状态时的未初始化错误。
  • 获取固件版本:drone.get_state(SettingsState.ProductVersionChanged)会返回最新的版本事件数据,其中software字段即为固件版本字符串,hardware字段可获取硬件版本。
  • 资源安全:使用try/finally块保证连接一定会被断开,避免资源泄漏。

内容的提问来源于stack exchange,提问作者Rima kaafarani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:05:05