05-自动控制方法
一、自动控制原理
1-基础概念
开环控制
开环控制是一种不依赖反馈的控制策略。
在开环控制中,控制系统根据预设的输入指令(如设定的飞行模式、航点等)执行动作,而不考虑实际飞行状态的变化。也就是说,控制系统不会实时监测飞行器的响应来调整控制输入。简单来说,开环控制就是单纯按照事先编程好的指令运行而不做实时调整。
flowchart LR
A["控制器"]
B["执行机构"]
C["被控对象"]
D[" "]
E[" "]
E--给定值--> A --> B --> C --被控量--> D
- 优点:实现简单、成本低,适用于稳定环境中。
缺点:无法适应环境变化,外部扰动(如风速变化)或控制器参数不准确时,会导致飞行不稳定或任务失败。
应用:
- 简单任务:如短距离飞行、飞行模式切换等,在环境变化较小且预定条件较为稳定的情况下可以使用开环控制。
- 飞行器的起飞或定点悬停:在某些简单情况下,飞行器的飞行控制可以通过开环控制来实现,比如飞行器从地面起飞、进行短暂的定点悬停。
开环控制实例(vel_control_node)
1 |
|
这段代码在状态机的case 0
状态下,发送了一个命令将飞行模式切换到OFFBOARD
。此时并没有任何反馈来调整模式,只是按照时间间隔固定发送命令。
1 |
|
这段代码在case1
状态下,用于控制飞行器的arming
操作。这也是基于时间的控制,直接发送命令启用arming
,没有依赖于飞行器的状态来调整控制策略。
闭环控制
闭环控制是一种依赖反馈的控制策略。它通过实时监测飞行器的状态(如姿态、位置、速度等)与设定目标进行比较,根据偏差(误差)来调整控制输入,从而实现对飞行器的精确控制。闭环控制系统在飞行中持续进行实时反馈与修正,以确保飞行器能够按照预期轨迹飞行,尽可能减少外部干扰带来的影响。
flowchart LR
A["电位器(比较器)"]
B["放大器"]
C["电动机"]
D["减速器"]
E[" "]
F[" "]
E --> A --> B --> C --> D --> F --> A
- 优点:能够自动调整和修正飞行中的误差,确保飞行稳定,适应复杂和动态的飞行环境。
缺点:实现较为复杂,需要更多的计算资源和传感器输入,系统成本较高。
应用:
- 航点飞行:无人机按照设定的航点飞行,闭环控制帮助无人机根据实际飞行偏差(如位置误差)进行修正,确保飞行路线准确。
- 姿态控制:闭环控制能够根据姿态传感器(如陀螺仪、加速度计)的数据来实时调整飞行器的俯仰、滚转和偏航角度。
- 自动避障:利用激光雷达、视觉传感器等反馈信息进行避障,确保无人机避免撞击障碍物。
闭环控制实例(vel_control_node)
1 |
|
这一部分代码监控无人机的高度currentpose.pose.position.z
,并根据反馈的高度决定是否进入下一个状态。虽然此处只是一个简单的判断逻辑,但它仍然依赖于飞行器的反馈数据(高度)来决定是否继续加速升高或者切换状态。
1 |
|
在case 3
中,无人机通过计算当前位置与目标位置hover target
之间的距离,并根据该反馈信息决定是否继续进行PID控制。这是典型的闭环控制,因为控制输入twist.twist
是根据当前位置和目标位置之间的误差来动态调整的。get_pid_vel(hover target)
是一个利用 PID 控制算法调整无人机速度的函数。