m0_73861623 2024-05-02 16:58 采纳率: 0%
浏览 173

获取大疆无人机的飞控记录数据并绘制

希望可以一份获取并分析大疆无人机的飞行日志并绘制曲线图的代码,时间比较急,可支付一定费用,希望能帮帮忙

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-02 16:58
    关注

    引自免费微信小程序:皆我百晓生

    要获取大疆无人机的飞行日志并绘制曲线图,你需要遵循以下步骤:

    1. 安装必要的库: 首先确保安装了Python 3.x,并且已经安装了以下库:pandas、matplotlib、numpy 和 dji-sdk。如果没有安装,可以通过pip进行安装:
    pip install pandas matplotlib numpy dji-sdk
    
    1. 下载并配置DJI SDK: 访问大疆开发者官网https://developer.dji.com/注册账号并下载对应平台(Windows, macOS 或 Linux)的DJI Mobile SDK。按照文档完成开发环境设置。

    2. 编写代码获取飞行日志: 这里是一个基本的Python脚本,用于连接到无人机并读取飞行日志。注意,你需要替换YOUR_APP_KEYYOUR_SECRET_KEY为你的应用的App Key和Secret Key。

    import time
    from dji_asdk_python import *
    
    # 你的App Key和Secret Key
    APP_KEY = "YOUR_APP_KEY"
    SECRET_KEY = "YOUR_SECRET_KEY"
    
    # 初始化SDK
    djiosdk = DJISDK()
    djiosdk.start()
    
    # 获取登录界面
    login_view = djiosdk.get_login_view()
    login_view.set_on_user_confirm(lambda user: login_callback(user))
    
    def login_callback(user):
        if user == USER_TYPE.NORMAL:
            # 设置飞行器连接回调
            aircraft_connection_listener = AircraftConnectionListener()
            aircraft_connection_listener.on_aircraft_connected = on_aircraft_connected
            aircraft_connection_listener.on_aircraft_disconnected = on_aircraft_disconnected
            djiosdk.add_device_connection_listener(aircraft_connection_listener)
    
    def on_aircraft_connected(device):
        print("Aircraft connected.")
        fetch_flight_log(device)
    
    def on_aircraft_disconnected(device):
        print("Aircraft disconnected.")
    
    def fetch_flight_log(device):
        flight_recorder = device.product.flight_recorder
        flight_recorder.fetch_flight_record_async(lambda records:
            draw_graph(records)
        )
    
    def draw_graph(records):
        # 处理日志并绘制图表
        pass
    
    # 开始等待用户登录
    login_view.show()
    
    while True:
        time.sleep(1)
    
    1. 数据处理与绘图: 在上述代码中,draw_graph函数负责处理日志并绘制图表。由于飞行日志包含大量信息,例如高度、速度、经纬度等,这里仅提供一个简单的示例,展示如何从日志中提取特定数据并绘制高度随时间变化的折线图。你可能需要根据实际需求调整这个部分。
    import pandas as pd
    import matplotlib.pyplot as plt
    
    def draw_graph(records):
        df = pd.DataFrame(columns=['time', 'height'])
    
        for record in records:
            timestamp = record.timestamp / 1000  # 转换为秒
            altitude = record.altitude  # 高度值
            df = df.append({'time': timestamp, 'height': altitude}, ignore_index=True)
    
        df['time'] = pd.to_datetime(df['time'], unit='s')
        df.set_index('time', inplace=True)
    
        # 绘制高度随时间变化的折线图
        plt.figure(figsize=(12, 6))
        plt.plot(df.index, df['height'])
        plt.title('Height Over Time')
        plt.xlabel('Time')
        plt.ylabel('Altitude (m)')
        plt.grid(True)
        plt.show()
    
    1. 运行代码: 运行这段代码,它将启动DJI SDK,并尝试连接到最近的大疆无人机。一旦连接成功,它会开始获取飞行日志并调用draw_graph函数绘制高度随时间的变化。

    注意:这个示例代码没有处理错误情况,也没有实现完整的飞行日志解析。在实际应用中,你可能需要添加更多的错误检查和日志记录功能,以及处理其他感兴趣的飞行参数。此外,为了更好地理解飞行日志,你可能需要参考DJI SDK的官方文档来了解具体字段的意义。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月2日