知识储备 May 19, 2021

匿名科创无人机代码解析

Words count 968 Reading time 1 mins. Read count 0

运行流程

  1. 主循环的Duty_Loop()是一个时间切换的简单状态机,包含5个时间状态
    • Duty_1ms()主要用于控制起飞状态。
      • Tim_Count,计数到15s后解锁起飞,youcanfly标志位打开,否则标志位置零
      • youcanfly标志位打开后,LED灯切换到启动显示状态
      • LED_Display( LED_Brightness ); 等待起飞的信号指示
      • 调用数传通信,向上位机传输数据
    • Duty_2ms() 用于计算姿态内环以及遥控器数据处理
      • MPU6050_Data_Prepare()
        • MPU6050_Data_Offset()校准函数
          • 加速度计、角速度计均值滤波,放到文件操作系统里当无人机未解锁时,根据动作判断是否要进行矫正。
        • 读取加速度、角速度数据,温漂补偿,并采用滑动窗口进行均值滤波。
        • 坐标转指针传入结构体。
      • CTRL_1( inner_loop_time );内环角速度PID
      • RC_Duty()遥控器数据处理
        • 滤波。
        • 是否有信号。
        • 一段时间内没接收到信号,则连接断开。
    • Duty_5ms() 姿态外环控制
      • IMU进行姿态解算
      • 加速度PID控制
    • Duty_10ms() 气压计 电子罗盘数据更新
    • Duty_20ms() 参数保存到FLash
    • Duty_50ms()
      • Mode() 模式控制,只在特定条件下,遥控器生效
0%