轨迹优化入门必备 — GPOPS-II进阶

1. 简介

在上一篇文章中,介绍了GPOPS-II的基本用法和入门示例

轨迹优化入门必备 — GPOPS-II

这篇文章将更进一步,介绍GPOPS-II的进阶使用,侧重多阶段轨迹优化初始轨迹与初始网格设置的工程经验

2. 多阶段轨迹优化

在航天任务、再入任务、以及飞行器的分级发射过程中,最优控制问题往往天然具有多阶段特性

此处以Launch Vehicle Ascent Problem(火箭发射问题)为例

在这里插入图片描述
该问题包含四个阶段:

  • 第一阶段:助推器工作
  • 第二阶段:助推器分离
  • 第三阶段:一级火箭分离
  • 第四阶段:二级入轨

目标函数: J = − m ( t f ) J=-m\left( t_f \right) J=m(tf)

运动学方程: r ˙ ( t ) = v ( t ) v ˙ ( t ) = T u + D m + g m ˙ ( t ) = − T g 0 I s p \begin{array}{l} \dot{\boldsymbol{r}}\left( t \right) =\boldsymbol{v}\left( t \right)\\ \dot{\boldsymbol{v}}\left( t \right) =\frac{T\boldsymbol{u}+\boldsymbol{D}}{m}+\boldsymbol{g}\\ \dot{m}\left( t \right) =-\frac{T}{g_0I_{sp}}\\ \end{array} r˙(t)=v(t)v˙(t)=mTu+D+gm˙(t)=g0IspT

路径约束: ∥ u ( t ) ∥ 2 = 1 \left\| \boldsymbol{u}\left( t \right) \right\| _2=1 u(t)2=1

阶段连接约束: r ( t f ( i ) ) = r ( t 0 ( i + 1 ) ) v ( t f ( i ) ) = v ( t 0 ( i + 1 ) ) m ( t f ( i ) ) = m ( t 0 ( i + 1 ) ) , i = 1 , 2 , 3 \begin{array}{l} \boldsymbol{r}\left( t_{f}^{\left( i \right)} \right) =\boldsymbol{r}\left( t_{0}^{\left( i+1 \right)} \right)\\ \boldsymbol{v}\left( t_{f}^{\left( i \right)} \right) =\boldsymbol{v}\left( t_{0}^{\left( i+1 \right)} \right)\\ m\left( t_{f}^{\left( i \right)} \right) =m\left( t_{0}^{\left( i+1 \right)} \right)\\\end{array}, i=1,2,3 r(tf(i))=r(t0(i+1))v(tf(i))=v(t0(i+1))m(tf(i))=m(t0(i+1)),i=1,2,3

边界条件: r ( 0 ) = r 0 , v ( 0 ) = v 0 a ( t f ) = a f , e ( t f ) = e f , i ( t f ) = i f , Ω ( t f ) = Ω f , ω ( t f ) = ω f \begin{array}{l} \boldsymbol{r}\left( 0 \right) =\boldsymbol{r}_0, \boldsymbol{v}\left( 0 \right) =\boldsymbol{v}_0\\ a\left( t_f \right) =a_f,e\left( t_f \right) =e_f,i\left( t_f \right) =i_f,\varOmega \left( t_f \right) =\varOmega _f,\omega \left( t_f \right) =\omega _f\\ \end{array} r(0)=r0,v(0)=v0a(tf)=af,e(tf)=ef,i(tf)=if,Ω(tf)=Ωf,ω(tf)=ωf

在 GPOPS-II 中,每个阶段都可以拥有自己的时间范围、状态变量、控制变量以及动力学方程

阶段之间的状态需要通过事件约束(eventgroup)实现连续性

2.1 主函数launchMain.m

阶段时间固定:通过将下界finaltime.lower和上界finaltime.upper设定为同一固定值

终端时间自由:通过设置不同的上下界,让优化器自动决定阶段时间

归一化处理:为了提高收敛性,GPOPS-II通常要求对问题进行缩放

clear all; clc

% 物理参数
earthRadius         = 6378145;
gravParam           = 3.986012e14;
initialMass         = 301454;
earthRotRate        = 7.29211585e-5;
seaLevelDensity     = 1.225;
densityScaleHeight  = 7200;
g0                  = 9.80665;

% 归一化尺度
scales.length       = earthRadius;
scales.speed        = sqrt(gravParam/scales.length);
scales.time         = scales.length/scales.speed;
scales.acceleration = scales.speed/scales.time;
scales.mass         = initialMass;
scales.force        = scales.mass*scales.acceleration;
scales.area         = scales.length^2;
scales.volume       = scales.area.*scales.length;
scales.density      = scales.mass/scales.volume;
scales.gravparam    = scales.acceleration*scales.length^2;

omega               = earthRotRate*scales.time;
auxdata.omegaMatrix = omega*[0 -1 0;1 0 0;0 0 0];
auxdata.mu          = gravParam/scales.gravparam;
auxdata.cd          = 0.5;
auxdata.sa          = 4*pi/scales.area;
auxdata.rho0        = seaLevelDensity/scales.density;
auxdata.H           = densityScaleHeight/scales.length;
auxdata.Re          = earthRadius/scales.length;
auxdata.g0          = g0/scales.acceleration;

lat0                = 28.5*pi/180;         
x0                  = auxdata.Re*cos(lat0);
y0                  = 0;                   
z0                  = auxdata.Re*sin(lat0);
r0                  = [x0 y0 z0];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值