任务目标:
编写一个MATLAB脚本,求解无人机在垂直上升过程中的最优控制策略(即垂直加速度)。最终目标是找到一条能够最小化总飞行时间与总消耗能量组合成本的飞行轨迹。
问题描述:
一架无人机需要从地面静止状态(初始状态)上升至指定高度并悬停(最终状态)。您需要运用动态规划(Dynamic Programming)算法,来计算出在上升过程中每个状态点的最优加速度。
成本函数 (Cost Function):
需要最小化的总成本 是总飞行时间 Ttotal 和总消耗能量 Etotal 的加权和。从高度 到 的单步成本 由下式给出:
其中:
- 是完成该步长所花费的时间。
- 是在该步长中消耗的功率。
- 是一个权重因子,用于平衡时间和能量的重要性。您将在脚本中设定此值。
无人机维持特定加速度所需的功率 由以下模型计算:
其中:
- 是无人机的质量。
- 是重力加速度 (约为 9.81 m/s²)。
- 是无人机的垂直加速度(即您的控制输入)。
- 是无人机的瞬时速度。在计算每一步的成本时,您可以使用该步的平均速度 。
因此,单步的成本函数可以具体化为:
状态与控制参数:
- 初始状态: m, m/s
- 最终状态: m, m/s
- 无人机质量 (m): kg
- 重力加速度 (g): m/s
- 控制输入 (加速度): m/s, m/s
- 能量权重 (W): (这是一个很好的初始值,您可以尝试调整它以观察结果变化)。
状态空间离散化:
- 高度 (): 从 米到 米, 分为 个区间。
- 速度 (): 从 米/秒到 米/秒, 分为 个区间。
您的任务:
- 编写一个MATLAB脚本,实现动态规划算法以解决此问题。
- 脚本需要计算并存储每个状态的"最优未来成本"(Cost-to-Go)以及对应的最优加速度。
- 使用计算出的最优控制策略,对无人机的上升过程进行前向仿真。
- 绘制最终的优化结果图,包括:
- 最优轨迹(速度 vs. 高度)
- 最优控制策略(加速度 vs. 高度)
代码
写了整整一上午()好歹是徒手写出来了