无人船 | 图解推导三自由度USV的运动学和动力学建模

1 参考坐标系定义

USV的数学模型分为运动学动力学两个部分,其中运动学描述了USV作为质点的几何运动规律;动力学描述了USV在来自螺旋桨、水扰、风扰等力作用下产生的运动规律。为了更好地表达USV的运动学和动力学模型,定义

  • 全局坐标系 O E − X E Y E Z E O_E-X_EY_EZ_E OEXEYEZE:用于描述USV的位置和姿态。全局坐标系以地球表面某一点为原点, O E X E O_EX_E OEXE指向地理正北方向, O E Y E O_EY_E OEYE指向地理正东方向, O E Z E O_EZ_E OEZE指向地心,其中 O E Z E O_EZ_E OEZE O E X E O_EX_E OEXE轴和 O E Y E O_EY_E OEYE轴构成平面的法线,且平面 O E X E Y E O_EX_EY_E OEXEYE与地球表面相切

  • 船体坐标系 O B − X B Y B Z B O_B-X_BY_BZ_B OBXBYBZB:用于描述USV受力后位置及姿态的瞬时变化,即线速度或角速度。船体坐标系一般以USV船体重心为原点, O B X B O_BX_B OBXB平行于海平面并指向船艏方向, O B Y B O_BY_B OBYB平行于海平面并指向船右舷方向, O B Z B O_BZ_B OBZB轴指向地心并与水平面垂直

两个坐标系间的关系如图所示

在这里插入图片描述

在水面环境下,USV受到多种方向上的外力,需要用多个自由度去描述其复杂的运动状态。根据造船与轮机工程师学会(SNAME)的有关标准,使用如表所示的定义描述船舶在纵荡、横荡、垂荡、横摇、纵摇、艏摇六个自由度上的运动状态。具体而言,坐标 ( x , y , z , ϕ , θ , ψ ) \left( x,y,z,\phi ,\theta ,\psi \right) (x,y,z,ϕ,θ,ψ)表示船舶在全局坐标系下的位置和姿态;其一阶导数坐标 ( u , v , w , p , q , r ) \left( u,v,w,p,q,r \right) (u,v,w,p,q,r)表示船舶在船体坐标系下的平移线速度和转动角速度

在这里插入图片描述

2 运动学建模

根据上表定义的USV完整六自由度运动学模型为

{ [ x ˙ y ˙ z ˙ ] = [ cos ⁡ θ cos ⁡ ψ sin ⁡ φ sin ⁡ θ cos ⁡ ψ − cos ⁡ φ sin ⁡ ψ cos ⁡ φ sin ⁡ θ cos ⁡ ψ + sin ⁡ φ sin ⁡ ψ cos ⁡ θ sin ⁡ ψ sin ⁡ φ sin ⁡ θ sin ⁡ ψ + cos ⁡ φ cos ⁡ ψ cos ⁡ φ sin ⁡ θ sin ⁡ ψ − sin ⁡ φ cos ⁡ ψ − sin ⁡ θ sin ⁡ φ cos ⁡ θ cos ⁡ φ cos ⁡ θ ] [ u v w ] [ φ ˙ θ ˙ ψ ˙ ] = [ 1 sin ⁡ φ tan ⁡ θ cos ⁡ φ tan ⁡ θ 0 cos ⁡ φ − sin ⁡ φ 0 sin ⁡ φ / cos ⁡ θ cos ⁡ φ / cos ⁡ θ ] [ p q r ] \begin{cases} \left[ \begin{array}{c} \dot{x}\\ \dot{y}\\ \dot{z}\\\end{array} \right] =\left[ \begin{matrix} \cos \theta \cos \psi& \sin \varphi \sin \theta \cos \psi -\cos \varphi \sin \psi& \cos \varphi \sin \theta \cos \psi +\sin \varphi \sin \psi\\ \cos \theta \sin \psi& \sin \varphi \sin \theta \sin \psi +\cos \varphi \cos \psi& \cos \varphi \sin \theta \sin \psi -\sin \varphi \cos \psi\\ -\sin \theta& \sin \varphi \cos \theta& \cos \varphi \cos \theta\\\end{matrix} \right] \left[ \begin{array}{c} u\\ v\\ w\\\end{array} \right]\\ \left[ \begin{array}{c} \dot{\varphi}\\ \dot{\theta}\\ \dot{\psi}\\\end{array} \right] =\left[ \begin{matrix} 1& \sin \varphi \tan \theta& \cos \varphi \tan \theta\\ 0& \cos \varphi& -\sin \varphi\\ 0& {{\sin \varphi}/{\cos \theta}}& {{\cos \varphi}/{\cos \theta}}\\\end{matrix} \right] \left[ \begin{array}{c} p\\ q\\ r\\\end{array} \right]\\\end{cases} x˙y˙z˙ = cosθcosψcosθsinψsinθsinφsinθcosψcosφsinψsinφsinθsinψ+cosφcosψsinφcosθcosφsinθcosψ+sinφsinψcosφsinθsinψsinφcosψcosφcosθ uvw φ˙θ˙ψ˙ = 100sinφtanθcosφsinφ/cosθcosφtanθsinφcosφ/cosθ pqr

USV在水中虽然存在六个自由度上的运动,但是上述完整的运动学模型过于复杂,对运动分析和控制器设计造成困难。考虑到实际应用中USV在垂荡、纵摇及横摇三个自由度上的运动幅度相对很小,一般忽略这三个自由度上的运动状态,即令

w = p = q = z = φ = θ = 0 w=p=q=z=\varphi =\theta =0 w=p=q=z=φ=θ=0

得到简化的三自由度USV运动学模型

[ x ˙ y ˙ ψ ˙ ] = [ cos ⁡ ψ − sin ⁡ ψ 0 sin ⁡ ψ cos ⁡ ψ 0 0 0 1 ] [ u v r ] ⇒ η = R v \left[ \begin{array}{c} \dot{x}\\ \dot{y}\\ \dot{\psi}\\\end{array} \right] =\left[ \begin{matrix} \cos \psi& -\sin \psi& 0\\ \sin \psi& \cos \psi& 0\\ 0& 0& 1\\\end{matrix} \right] \left[ \begin{array}{c} u\\ v\\ r\\\end{array} \right] \Rightarrow \boldsymbol{\eta }=\boldsymbol{Rv} x˙y˙ψ˙ = cosψsinψ0sinψcosψ0001 uvr η=Rv

3 动力学建模

Fossen建立了统一的船舶动力学模型,将USV的受力分解为刚体力、流体动力、推进力和干扰力

M v ˙ + C ( v ) v + D ( v ) v + g ( η ) = τ + τ E \boldsymbol{M\dot{v}}+\boldsymbol{C}\left( \boldsymbol{v} \right) \boldsymbol{v}+\boldsymbol{D}\left( \boldsymbol{v} \right) \boldsymbol{v}+\boldsymbol{g}\left( \boldsymbol{\eta } \right) =\boldsymbol{\tau }+\boldsymbol{\tau }_E Mv˙+C(v)v+D(v)v+g(η)=τ+τE

上式中 M \boldsymbol{M} M为船体系统的惯性矩阵,由刚体惯性矩阵 M R B \boldsymbol{M}_{RB} MRB附加质量矩阵 M A \boldsymbol{M}_A MA组成

M = M R B + M A = [ m 11 m 22 m 23 m 32 m 33 ] \boldsymbol{M}=\boldsymbol{M}_{RB}+\boldsymbol{M}_A=\left[ \begin{matrix} m_{11}& & \\ & m_{22}& m_{23}\\ & m_{32}& m_{33}\\\end{matrix} \right] M=MRB+MA= m11m22m32m23m33

其中船舶质量为 m m m ( x g , y g , z g ) \left( x_g,y_g,z_g \right) (xg,yg,zg)是船舶重心在船体坐标系下的坐标, I z I_z Iz是绕 O B Z B O_BZ_B OBZB转动惯量

M R B = [ m − m y g m m x g − m y g m x g I z ] , M A = − [ X u ˙ X r ˙ Y v ˙ Y r ˙ N u ˙ N v ˙ N r ˙ ] \boldsymbol{M}_{RB}=\left[ \begin{matrix} m& & -my_g\\ & m& mx_g\\ -my_g& mx_g& I_z\\\end{matrix} \right] , \boldsymbol{M}_A=-\left[ \begin{matrix} X_{\dot{u}}& & X_{\dot{r}}\\ & Y_{\dot{v}}& Y_{\dot{r}}\\ N_{\dot{u}}& N_{\dot{v}}& N_{\dot{r}}\\\end{matrix} \right] MRB= mmygmmxgmygmxgIz ,MA= Xu˙Nu˙Yv˙Nv˙Xr˙Yr˙Nr˙

C ( v ) \boldsymbol{C}\left( \boldsymbol{v} \right) C(v)科氏力-向心力矩阵,由刚体科氏力-向心力矩阵 C R B ( v ) \boldsymbol{C}_{RB}\left( \boldsymbol{v} \right) CRB(v)附加科氏力-向心力矩阵 C A ( v ) \boldsymbol{C}_A\left( \boldsymbol{v} \right) CA(v)组成

C ( v ) = C R B ( v ) + C A ( v ) = [ 0 0 c 13 0 0 c 23 c 31 c 32 0 ] \boldsymbol{C}\left( \boldsymbol{v} \right) =\boldsymbol{C}_{RB}\left( \boldsymbol{v} \right) +\boldsymbol{C}_A\left( \boldsymbol{v} \right) =\left[ \begin{matrix} 0& 0& c_{13}\\ 0& 0& c_{23}\\ c_{31}& c_{32}& 0\\\end{matrix} \right] C(v)=CRB(v)+CA(v)= 00c3100c32c13c230

其中

C R B ( v ) = [ 0 0 − m ( x g r + v ) 0 0 − m ( y g r − u ) m ( x g r + v ) m ( y g r − u ) 0 ] C A ( v ) = [ 0 0 Y v ˙ v + Y r ˙ r 0 0 − X u ˙ u − Y v ˙ v − Y r ˙ r X u ˙ u 0 ] \boldsymbol{C}_{RB}\left( \boldsymbol{v} \right) =\left[ \begin{matrix} 0& 0& -m\left( x_gr+v \right)\\ 0& 0& -m\left( y_gr-u \right)\\ m\left( x_gr+v \right)& m\left( y_gr-u \right)& 0\\\end{matrix} \right] \\\boldsymbol{C}_A\left( \boldsymbol{v} \right) =\left[ \begin{matrix} 0& 0& Y_{\dot{v}}v+Y_{\dot{r}}r\\ 0& 0& -X_{\dot{u}}u\\ -Y_{\dot{v}}v-Y_{\dot{r}}r& X_{\dot{u}}u& 0\\\end{matrix} \right] CRB(v)= 00m(xgr+v)00m(ygru)m(xgr+v)m(ygru)0 CA(v)= 00Yv˙vYr˙r00Xu˙uYv˙v+Yr˙rXu˙u0

D ( v ) \boldsymbol{D}\left( \boldsymbol{v} \right) D(v)阻尼矩阵,由线性阻尼矩阵 D \boldsymbol{D} D非线性阻尼矩阵 D n ( v ) \boldsymbol{D}_n\left( \boldsymbol{v} \right) Dn(v)组成

D ( v ) = D + D n ( v ) = [ d 11 d 22 d 23 d 32 d 33 ] \boldsymbol{D}\left( \boldsymbol{v} \right) =\boldsymbol{D}+\boldsymbol{D}_n\left( \boldsymbol{v} \right) =\left[ \begin{matrix} d_{11}& & \\ & d_{22}& d_{23}\\ & d_{32}& d_{33}\\\end{matrix} \right] D(v)=D+Dn(v)= d11d22d32d23d33

其中

D = − [ X u Y v Y r N v N r ] , D n ( v ) = − [ X ∣ u ∣ u ∣ u ∣ Y ∣ v ∣ v ∣ v ∣ + Y ∣ r ∣ v ∣ r ∣ Y ∣ v ∣ r ∣ v ∣ + Y ∣ r ∣ r ∣ r ∣ N ∣ v ∣ v ∣ v ∣ + N ∣ r ∣ v ∣ r ∣ N ∣ v ∣ r ∣ v ∣ + N ∣ r ∣ r ∣ r ∣ ] \boldsymbol{D}=-\left[ \begin{matrix} X_u& & \\ & Y_v& Y_r\\ & N_v& N_r\\\end{matrix} \right] , \boldsymbol{D}_n\left( \boldsymbol{v} \right) =-\left[ \begin{matrix} X_{\left| u \right|u}\left| u \right|& & \\ & Y_{\left| v \right|v}\left| v \right|+Y_{\left| r \right|v}\left| r \right|& Y_{\left| v \right|r}\left| v \right|+Y_{\left| r \right|r}\left| r \right|\\ & N_{\left| v \right|v}\left| v \right|+N_{\left| r \right|v}\left| r \right|& N_{\left| v \right|r}\left| v \right|+N_{\left| r \right|r}\left| r \right|\\\end{matrix} \right] D= XuYvNvYrNr ,Dn(v)= XuuuYvvv+YrvrNvvv+NrvrYvrv+YrrrNvrv+Nrrr

g ( η ) \boldsymbol{g}\left( \boldsymbol{\eta } \right) g(η)是由重力和浮力产生的恢复力和力矩。控制力 τ = [ τ u τ v τ r ] T \boldsymbol{\tau }=\left[ \begin{matrix} \tau _u& \tau _v& \tau _r\\\end{matrix} \right] ^T τ=[τuτvτr]T,其中 τ u \tau _u τu τ v \tau _v τv τ r \tau _r τr分别表示由螺旋桨产生的前进力、横漂力和艏摇力矩

上面涉及到的水动力系数的含义如下所示

在这里插入图片描述

至此,USV的运动学和动力学建模完成,本专栏的后续章节都将以本节推导的模型展开规划、控制算法设计


🔥 更多精彩专栏


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
### 回答1: 一阶Nomoto模型是一种常用的无人船动力学建模方法,用于描述船舶的姿态响应。在Matlab中,可以使用传统的数值计算方法来建立该模型。 首先,需要定义模型的参数,包括船舶的质量、艏向力船舶重心的高度等。然后,根据Nomoto模型的动态方程,编写相应的微分方程,并将其转化为离散形式。 接下来,使用Matlab中的ode45函数进行数值求解。ode45函数是一个常用的求解常微分方程的函数,它可以自动选择合适的步长进行求解。 在求解过程中,需要定义输入信号,可以使用理论上的输入信号或者实际采集到的数据。根据输入信号Nomoto模型的动态方程,将其转化为初始条件边界条件。 最后,通过绘制各个输出响应的曲线,可以对船舶的姿态响应进行分析评估。可以绘制船舶的横倾角、艏向角等与时间的关系曲线,从曲线的形状变化趋势来判断船舶的稳定性控制性能。 需要注意的是,在建立模型时,可以根据实际情况对模型进行修正优化,以提高模型的准确性可靠性。同时,还可以利用Matlab中的系统辨识工具对模型进行参数辨识系统特性分析,以进一步优化建模效果。 综上所述,在Matlab中建立一阶Nomoto模型无人船建模工作,可以帮助船舶工程师分析评估船舶的姿态响应,为船舶的设计控制提供重要参考。 ### 回答2: 一阶Nomoto模型是一种用于描述船舶姿态动力学行为的数学模型。它是基于船舶的动力学方程以及相关参数推导出来的。 在MATLAB中,可以通过数值求解的方法建立一阶Nomoto模型的仿真模型。具体步骤如下: 首先,需要确定模型中的参数,包括船舶质量、舵角、船舶的惯性系数、阻尼系数等等。这些参数可以通过实验测定或者适当的估计得到。 其次,利用船舶的动力学方程建立数学模型。一阶Nomoto模型假设船舶的响应是一阶传递函数,包括一个传递函数系数一个延迟时间。形式上可以表示为:G(s)=K/(τs+1),其中K为传递函数系数,τ为延迟时间。 接下来,在MATLAB中编写相应的代码。可以使用MATLAB的控制系统工具箱中的Transfer function函数来表示一阶传递函数模型,以及使用Step函数模拟输入信号。 然后,设置模拟的时间范围、步长舵角输入信号等参数。可以通过调整这些参数来模拟不同的情况。 最后,运行模型并得到仿真结果。可以绘制船舶的姿态响应曲线,例如船舶的横摇角随时间的变化曲线。通过分析曲线,可以了解船舶的姿态控制性能以及评估可能的改进方案。 需要注意的是,建立一阶Nomoto模型只是对船舶姿态动力学行为的简化描述,实际船舶的动力学行为可能更加复杂。因此,在进行具体应用时,需要综合考虑实际的工况船舶特性来进行建模仿真分析。 ### 回答3: 一阶Nomoto模型是一种常用于描述船舶运动动力学行为的数学模型。在Matlab中,我们可以使用微分方程的形式建立这个模型。 首先,我们需要定义模型的变量参数。假设我们要建立的是船舶的横向运动模型,那么可以定义以下变量参数: - x: 船舶横向位移 - u: 操纵输入(例如舵角) - v: 船舶横向速度 - m: 船舶质量 - Xdelta: 划船力矩系数 - Xv: 划船阻力系数 - X: 划船阻力 - Xv_dot: 划船阻尼力矩系数 - tau: 划船阻尼力矩时间常数 然后,我们可以建立微分方程描述船舶的运动行为: m * v_dot = -X + Xdelta * u tau * v_dot_dot + v_dot = -Xv * v + Xv_dot * u 将上述微分方程转化为Matlab代码,则可以得到模型建模过程,如下所示: function dxdt = nomoto_model(t, x, u) % 参数定义 m = 1000; % 船舶质量 Xdelta = 10; % 划船力矩系数 Xv = 1000; % 划船阻力系数 Xv_dot = 200; % 划船阻尼力矩系数 tau = 10; % 划船阻尼力矩时间常数 % 微分方程描述 dxdt = zeros(2, 1); dxdt(1) = x(2); % 船舶横向速度 dxdt(2) = (-Xv * x(2) + Xv_dot * u) / (m * tau) - (Xdelta * u) / m; % 船舶横向加速度 end 在使用这个模型时,我们可以通过输入操纵量u的变化来模拟船舶的运动行为。当需要求解船舶横向位移速度随时间的变化时,可以使用Matlab的ode45函数进行数值求解。 希望以上的回答能够帮到您!
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Winter`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值