【问题标题】:Can I implement PID control directly on velocity along axis for a quadcopter我可以直接对四轴飞行器沿轴的速度实施 PID 控制吗
【发布时间】:2015-09-02 06:31:30
【问题描述】:

我正在制造一个自动四轴飞行器:没有无线电发射器-接收器,四轴飞行器按照预先编程的命令自行飞行。

几乎所有四轴飞行器都在油门/偏航/俯仰/滚动上实现 PID,因为这 4 个轴直接在遥控器上。然而,这对于没有控制器的自动化系统来说有点不方便。作为无需用户输入的自动四轴飞行器,沿 x/y/z 轴的速度更受关注,因为:

  1. 保持平衡(yaw/pitch/roll=0)并不意味着保持静止,首先,制造过程中会有一些错误,所以它可能仍然有一些加速度。其次,即使没有加速度,它也可以有速度,导致它在太空中漂移。而且由于没有用户输入,它无法自行修复漂移。而且,如果有风,它可能会被吹走,即使它认为它是平衡的。

  2. 命令主要在“到达位置(x,y)”或“保持速度x,飞越位置(x,y) 并开始摄像头视频捕捉”中给出。或者。这些命令不能直接翻译成yaw/pitch/roll。

所以基本上我有两个想法:

  1. 在偏航/俯仰/滚动/高度上实施 PID,并使用第二个 PID 回路来控制速度。第二个 PID 回路将所需速度和当前速度作为输入,并为第一个回路输出所需的偏航/俯仰/滚动。

  2. 直接在速度上实现 PID。 pid 循环将所需速度和当前速度(通过加速度计的加速度积分)作为 4 个电机的输入和输出 PWM 宽度。

有人试过想法2吗?这行得通吗?

【问题讨论】:

    标签: pid


    【解决方案1】:

    PID 将测量值映射到受控值。如果您可以可靠地感知速度,则可以使用它来驱动 PID。但是,集成加速度计不会为您提供足够可靠的速度。任何传感错误都会通过集成加剧,并可能无限地增加您的速度估计。

    四轴飞行器上的 R/P/Y PID 不直接控制电机的 PWM,它们控制横滚、俯仰和偏航率,然后将速率转换为推力,然后将推力分量转换为各种电机,然后将推力转换为 PWM。有关提示,请参阅ArduPilor MotorMatrix code

    您可以在选择速度和电机之间的过程中将 PID 放置在您喜欢的任何位置,但您可能需要一些介于“速度”和“PWM[1-4]”之间的中间控制/状态变量来平衡事物和已协调飞行。

    【讨论】:

    • 感谢您的回复。经过一番努力,我终于制作了一个有效的 PID 系统来循环控制位置、速度、速率和最后的推力。由于树莓派 2 在 atmega 上的计算能力,我使用了一个非常大的卡尔曼滤波器来融合来自加速度/陀螺仪、声纳、压力和 gps 的所有数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多