提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、研究对象描述
二、总体思路
三、仿真实现
1.获得误差
2.设计PD控制器
3.控制力传入模型进行解算
4.通过艏向角速度得到艏向角
5.Solver设置
四、仿真结果分析
前言
本文对AUV的运动控制仿真过程进行介绍,采用PID控制方法,实现水平面上的简单的AUV的运动控制。
提示:以下是本篇文章正文内容,下面案例可供参考
一、研究对象描述
研究AUV的水平面运动,AUV为欠驱动,具备纵向推力和转艏力矩的输入,即具有主推和垂直舵。
二、总体思路
给定AUV期望的纵向速度和艏向角的值,与模型解算出的实时纵向速度和艏向角做差,得到误差值,随后利用PD控制设计控制器,产生期望推力和力矩,作用到AUV模型上,形成闭环。
三、仿真实现
以下依笔者的思路,对整个仿真程序进行介绍。
1.获得误差
直接将期望值与AUV的速度和艏向角进行做差得到
这里设置的期望速度:,期望艏向角:
。
2.设计PD控制器
得到两者误差后,根据PD控制知识,设计控制器。需要误差值及误差值的导数信息。
将误差及其导数传入控制器的S函数,在S函数内设置相关的控制增益,具体为:
S函数依次输出推力和力矩。
在仿真图中,输出的力经过了积分的处理,而力矩却没有,这里进行详细地说明。
了解控制过程其实很好理解,当AUV的速度小于期望速度时,需要增加推力,而控制器的推力是通过速度的误差获得的,在AUV运动时,会不断受到航行阻力的作用,因此AUV的推力需要保持,不能消失。
而不同于速度的控制,艏向角就不会出现这种情况,给到一个力矩作用AUV就会转艏,且AUV保持艏向角是不需要力矩的,这是关键,而AUV的速度想要保持需要纵向推力的保持。
3.控制力传入模型进行解算
在得到控制器设计出的控制力和力矩之后,执行机构做出反应,此时AUV的运动状态发生变化,这是通过AUV的动力学模型体现出来的。
AUV的水平动力学模型是具备三个自由度的,即纵向运动、横向运动和转艏运动。本文的AUV是欠驱动的,只用纵向推力和转艏力矩,横向无控制输入,因此横向的输入设计为0。
关于AUV的模型的S函数,实质上就是用于解算微分方程的,这个微分方程就是AUV的动力学模型,其中的未知数就是AUV的这三个自由度,以及他们的导数,在得到所有自由度上的控制力后,除
其他的未知数都是可以获得的,三个方程三个未知数,可以进行解算,这部分交给S函数的微分模块。
常用的AUV动力学模型一般为:
在S函数中的体现为:
其中的一系列的水动力系数选自特定的AUV模型,这是事先针对具体的AUV 通过试验测得的。
4.通过艏向角速度得到艏向角
AUV模型输出了纵向速度和艏向角速度,其中纵向速度是我们想要的,但是还需要AUV的艏向角。通过对艏向角速度进行积分同时设计初始值便可以得到实时的艏向角信息。
初始值在积分器中进行设置, 这里设置为0。在经过积分处理后传入名为‘xianzhi’的S函数,这是由于AUV的艏向角的范围为[-pi,pi],需要做出限制。在S函数内:
在做出限制后,就得到了AUV的艏向角yaw的信息,随后又传入了一个增益,其大小为180/pi,其作用是将弧度制转化为角度制,因为在SIMULINK仿真过程中使用的都是弧度制,转化为角度制会更加直观。
5.Solver设置
至此,列出了所有的仿真程序,按照上述方法搭建即可完成AUV水平面的运动控制。但实际上搭建完后还要对Solver进行设置。
在SIMULINK中CTRL+E,或点击鼠标右键打开Model Configuration Parameters,在Solver栏进行如下设置:
四、仿真结果分析
搭建完成后运行,可以得到仿真结果。
AUV的纵向速度:
AUV的艏向角:
纵向推力:
转艏力矩:
转艏角速度:
从仿真结果来看,各方面表现良好,在艏向角的控制上存在略微超调,但在合理范围内,基本实现了良好的AUV的水平面的运动控制。