我正在制作一台自动四轴飞行器:没有无线电发射器 - 接收器和quacopter自行飞行预编程订单。
所有大多数四轴飞行器都在油门/偏航/俯仰/滚转时实施PID,因为这4个轴直接在遥控器上。然而,对于没有控制器的自动化设备来说这有点不方便。作为没有用户输入的自动四轴飞行器,沿x / y / z轴的速度更值得关注,因为:
保持平衡(偏航/俯仰/翻滚= 0)并不意味着保持静止,首先,制造中会出现一些错误,因此可能仍会有一些加速。其次,即使没有加速度,它也会有速度,导致它在空间漂移。由于没有用户输入,它无法修复它自己的偏差。此外,如果有风,它可能会被吹走,即使它认为它是平衡的。
订单主要在"到位置(x,y)"或者"保持速度x,飞到位置(x,y)以上并开始摄像机视频捕捉。"或者。这些订单无法直接转换为偏航/俯仰/滚动。
所以基本上我有两个想法:
在偏航/俯仰/滚转/高度上实施PID,并使用第二个PID回路来控制速度。第二个PID回路将所需的速度和当前速度作为第一个回路的输入和输出所需的偏航/俯仰/滚动。
直接在速度上实施PID。 pid回路采用所需的速度和电流速度(通过积分来自加速度计的加速度)作为4个电机的输入和输出PWM宽度。
有没有人尝试过2?这有用吗?
答案 0 :(得分:1)
PID将测量值映射到受控值。如果您可以可靠地感知速度,则可以使用它来驱动PID。但是,集成加速度计不会给您足够可靠的速度。任何传感误差都会通过积分而变得复杂,并且可能无限制地增加速度估计值。
四轴飞行器上的R / P / Y PID不直接控制PWM到电机,它们控制侧倾,俯仰和偏航率,然后将速率转换为推力,然后将推力分量转换为各种电机,然后将推力转换为PWM。有关提示,请参阅ArduPilor MotorMatrix code。
您可以在任何选择速度和电机的过程中将PID放在任何您喜欢的位置,但您可能需要在速度和速度之间使用一些中间控制/状态变量。和' PWM [1-4]'平衡事物并协调飞行。