z1010101051 2024-04-22 03:23 采纳率: 0%
浏览 5

已知偏航角如何调节两侧旋翼速度以控制无人机恢复平衡

已知偏航角如何调节两侧旋翼速度以控制无人机恢复平衡,具体的调节方式是什么样的,如何把角度的误差转化为电机的转速差

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-22 03:23
    关注

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

    要让无人机通过调节两侧旋翼速度来恢复平衡,你需要设计一个简单的控制系统,这个系统通常被称为PID(比例-积分-微分)控制器。PID控制器是一种常用的反馈控制器,它可以根据当前的偏差(即实际偏航角与期望偏航角之差)以及偏差的历史信息(积分项)和偏差的变化率(微分项)来调整输出。

    以下是实现这一过程的步骤和伪代码:

    1. 定义参数

      • Kp:比例系数,用于快速响应当前偏差。
      • Ki:积分系数,用于消除长期误差。
      • Kd:微分系数,用于预测并抑制可能的振荡。
    2. 初始化

      • 设定期望偏航角为0度,因为我们要让无人机回到正前方。
      • 初始化偏差、积分项和微分项为0。
    3. 测量

      • 从传感器获取实际偏航角。
    4. 计算偏差

      • 偏差 = 实际偏航角 - 期望偏航角。
    5. 积分项更新

      • 积分项 += 偏差 * 时间步长。
    6. 微分项计算

      • 如果是第一次计算,微分项 = 0;
      • 否则,微分项 = (新偏差 - 旧偏差) / 时间步长。
    7. PID输出

      • PID输出 = Kp * 偏差 + Ki * 积分项 + Kd * 微分项。
    8. 确定旋翼速度调整值

      • 由于我们有两个旋翼,我们可以简单地将PID输出平均分配给两个旋翼,或者根据旋翼位置进行不同的调整。
      • 例如,如果左侧旋翼在前,右侧旋翼在后,则可以将PID输出的正值分配给左侧旋翼,负值分配给右侧旋翼,或者反之亦然,具体取决于你的无人机设计。
    9. 限制输出

      • 确保调整后的旋翼速度在允许的范围内。
    10. 执行

      • 将调整后的旋翼速度设置到相应的电机上。

    以下是伪代码示例:

    # 定义PID参数
    Kp = 0.5
    Ki = 0.1
    Kd = 0.05
    time_step = 0.01  # 时间步长,根据你的系统确定
    max_speed_change = 100  # 旋翼速度的最大调整量
    
    def pid_controller(current_yaw, desired_yaw):
        global error, integral, derivative
    
        # 计算偏差
        error = current_yaw - desired_yaw
    
        # 更新积分项
        integral += error * time_step
    
        # 计算微分项
        if derivative is None:
            derivative = 0
        else:
            derivative = (error - old_error) / time_step
    
        # PID输出
        pid_output = Kp * error + Ki * integral + Kd * derivative
    
        # 限制输出
        speed_adjustment_left = min(max(pid_output / 2, -max_speed_change), max_speed_change)
        speed_adjustment_right = min(max(-pid_output / 2, -max_speed_change), max_speed_change)
    
        # 设置旋翼速度
        set_rotor_speed(0, current_speed_left + speed_adjustment_left)
        set_rotor_speed(1, current_speed_right + speed_adjustment_right)
    
        # 更新变量
        old_error = error
    

    这个伪代码展示了如何基于偏差、积分和微分来计算旋翼速度的调整值。你需要将其与你的硬件接口结合,并根据实际情况调整PID参数。注意,这只是一个基本的PID控制器,更复杂的无人机可能需要考虑更多因素,比如风力影响等。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月22日

悬赏问题

  • ¥15 WPF动态创建页面内容
  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线