水下潜航器的建模与控制

news2025/1/15 22:49:21

(线性系统理论大作业)

题目

  水下潜器模型,可能是潜艇或者鱼雷等对象。一个主推进螺旋桨,前后两对水平陀翼,后面一对垂直陀翼。
  潜器前进过程中,通过调节助推进螺旋桨推力,以及三对陀翼的角度变化,对潜器的五个自由度,X轴和Z轴方向的速度,以及垂直、滚动和俯仰方向角速度,进行控制,实现潜器的各种机动以及在运动过程中的姿态平稳。
以大地坐标为静止坐标系,以潜器坐标为动坐标系,用动量定理以及动量矩定理可以得到潜器的动力学模型如下:
M V ˙ + F I = F F + F G + F B + F C M \dot{V}+F_{I}=F_{F}+F_{G}+F_{B}+F_{C} MV˙+FI=FF+FG+FB+FC
公式中, V = [ V x , V y , ω y , ω z ] T V=\left[V_{x}, V_{y}, \omega_{y}, \omega_{z}\right]^{T} V=[Vx,Vy,ωy,ωz]T为速度向量,
M M M为由载体质量、附加质量、转动惯量和惯性积组成的载体惯性矩阵,
F I F_{I} FI 为离心力和惯性流体力,
F F F_{F} FF 为非惯性流体力,
F G F_{G} FG F B F_{B} FB 分别为载体的重力和浮力,
F C F_{C} FC 为陀翼以及推进器对载体所施加的控制力。
在这里插入图片描述

  1. 考虑到潜器横向水平面与纵向垂直面运动间耦合微弱,因而分别建立XZ面与XY面运动方程。设计解耦控制器,实现系统的解耦控制。
  2. 在保证解耦的前提下,对系统进行极点配置,提高系统控制性能,以及抑止由于水流波动带来的干扰。
  3. 对模型中变量的说明如下:
    W x W_x Wx W y W_y Wy W z W_z Wz分别表示绕三个轴的角速度;
    V x V_x Vx V y V_y Vy V z V_z Vz分别表示三个轴向的速度;
    E x E_x Ex E y E_y Ey E z E_z Ez分别表示绕三个轴转动的角度;
    XZ面模型输入为前后水平舵转动角度 E a E_a Ea E e E_e Ee,以及螺旋桨推力 F F F
    XY面模型输入为上下垂直舵转动角度 E u E_u Eu E l E_l El
  4. 控制的目的在于:
    a. 保证潜器的行进平稳,速度变化是不引起艇身的滚动,俯仰和垂直转动时保持姿态和速度;
    b. 抑止水流带来的对潜器运动状态的干扰。

模型文件解析

XZ方向
在这里插入图片描述
设右侧的3个加法器输出分别为 S 1 S_1 S1 S 2 S_2 S2 S 3 S_3 S3
S 1 = − 10.1 V x − 37.8 V z + 37.5 E y S 2 = − 1047.5 V z − 569.9 W y − 189.97 E a − 379.943 E e S 3 = − 210.9 V z − 239.4 W y + 0 E y + 171 E a − 228 E e \begin{aligned} S_1 =& -10.1V_x -37.8V_z +37.5E_y \\ S_2 =& -1047.5V_z -569.9W_y -189.97E_a -379.943E_e \\ S_3 =& -210.9V_z -239.4W_y +0E_y +171E_a -228E_e \end{aligned} S1=S2=S3=10.1Vx37.8Vz+37.5Ey1047.5Vz569.9Wy189.97Ea379.943Ee210.9Vz239.4Wy+0Ey+171Ea228Ee
图中4个积分器的输出分别为 V x V_x Vx V z V_z Vz W y W_y Wy E y E_y Ey,另外定义中间变量 A x A_x Ax A y A_y Ay A z A_z Az,满足
E ˙ y = W y W ˙ y = A y V ˙ x = A x V ˙ z = A z A x = 1 165.827 ( S 1 − 3.117 A y ) ( 1 ) A y = 1 76.661 ( S 3 − 3.117 A x − 58.221 A z ) ( 2 ) A z = 1 210.827 ( S 2 − 58.221 A y ) ( 3 ) \begin{aligned} \dot{E}_y =& W_y \\ \dot{W}_y =& A_y \\ \dot{V}_x =& A_x \\ \dot{V}_z =& A_z \\ A_x =& \frac{1}{165.827}(S_1 -3.117A_y) \quad(1)\\ A_y =& \frac{1}{76.661}(S_3 -3.117A_x -58.221A_z) \quad(2) \\ A_z =& \frac{1}{210.827}(S_2 -58.221A_y) \quad(3)\\ \end{aligned} E˙y=W˙y=V˙x=V˙z=Ax=Ay=Az=WyAyAxAz165.8271(S13.117Ay)(1)76.6611(S33.117Ax58.221Az)(2)210.8271(S258.221Ay)(3)

XY方向
在这里插入图片描述
同样右侧的3个加法器为
S 1 = − 165.4 V y + 47.4 W z + 37.5 E x + 33.893 E u + 33.893 E l S 2 = − 421.2 W x − 30.5 E x + 7.676 E u − 7.676 E l S 3 = − 26.5 V y − 44.3 W z + 0.1 E x − 23.788 E u − 23.788 E l \begin{aligned} S_1 =& -165.4V_y +47.4W_z +37.5E_x +33.893E_u +33.893E_l \\ S_2 =& -421.2W_x -30.5E_x +7.676E_u -7.676E_l \\ S_3 =& -26.5V_y -44.3W_z +0.1E_x -23.788E_u -23.788E_l \end{aligned} S1=S2=S3=165.4Vy+47.4Wz+37.5Ex+33.893Eu+33.893El421.2Wx30.5Ex+7.676Eu7.676El26.5Vy44.3Wz+0.1Ex23.788Eu23.788El
图中5个积分器的输出分别为 V y V_y Vy W x W_x Wx E x E_x Ex W z W_z Wz E z E_z Ez,另外定义中间变量 A x A_x Ax A y A_y Ay A z A_z Az,满足
V ˙ y = A y E ˙ x = W x W ˙ x = A x E ˙ z = W z W ˙ z = A z A x = 1 10.303 ( S 2 − 3.117 A y ) A y = 1 271.827 ( S 1 − 3.117 A x − 1.221 A z ) A z = 1 20.661 ( S 3 − 1.221 A y ) \begin{aligned} \dot{V}_y =& A_y \\ \dot{E}_x =& W_x \\ \dot{W}_x =& A_x \\ \dot{E}_z =& W_z \\ \dot{W}_z =& A_z \\ A_x =& \frac{1}{10.303}(S_2 -3.117A_y) \\ A_y =& \frac{1}{271.827}(S_1 -3.117A_x -1.221A_z) \\ A_z =& \frac{1}{20.661}(S_3 -1.221A_y) \\ \end{aligned} V˙y=E˙x=W˙x=E˙z=W˙z=Ax=Ay=Az=AyWxAxWzAz10.3031(S23.117Ay)271.8271(S13.117Ax1.221Az)20.6611(S31.221Ay)

拆除代数环

两个方向的加法器的输入均为积分器或外部输入,但几个中间状态无法确定自变量与因变量,形成代数环。设 S 1 S_1 S1 S 2 S_2 S2 S 3 S_3 S3为输入, A x A_x Ax A y A_y Ay A z A_z Az为输出,写成矩阵形式便于用计算机计算
[ A x A y A z ] = [ 0 c 1 / k 1 0 c 1 / k 3 0 c 2 / k 3 0 c 2 / k 2 0 ] [ A x A y A z ] + [ k 1 0 0 0 0 k 3 0 k 2 0 ] [ S 1 S 2 S 3 ] \left[\begin{matrix} A_x \\ A_y \\ A_z \end{matrix}\right] =\left[\begin{matrix} 0 & c_1/k_1 & 0 \\ c_1/k_3 & 0 & c_2/k_3 \\ 0 & c_2/k_2 & 0 \end{matrix}\right] \left[\begin{matrix} A_x \\ A_y \\ A_z \end{matrix}\right] +\left[\begin{matrix} k_1 & 0 & 0 \\ 0 & 0 & k_3 \\ 0 & k_2 & 0 \end{matrix}\right] \left[\begin{matrix} S_1 \\ S_2 \\ S_3 \end{matrix}\right] AxAyAz = 0c1/k30c1/k10c2/k20c2/k30 AxAyAz + k10000k20k30 S1S2S3
解得XZ方向
[ A x A y A z ] = [ 165.987525236596 3.81203748021033 − 1.82515701785262 − 8.5400764866803 − 202.803573702547 97.099875777814 2.3583876502109 266.832288053883 − 26.8146483498798 ] [ S 1 S 2 S 3 ] \left[\begin{matrix} A_x \\ A_y \\ A_z \end{matrix}\right] =\left[\begin{matrix} 165.987525236596 & 3.81203748021033 & -1.82515701785262 \\ -8.5400764866803 & -202.803573702547 & 97.099875777814 \\ 2.3583876502109 & 266.832288053883 & -26.8146483498798 \end{matrix}\right] \left[\begin{matrix} S_1 \\ S_2 \\ S_3 \end{matrix}\right] AxAyAz = 165.9875252365968.54007648668032.35838765021093.81203748021033202.803573702547266.8322880538831.8251570178526297.09987577781426.8146483498798 S1S2S3
XY方向
[ A x A y A z ] = [ − 82.5449726643127 10.3388761594846 0.028182041202784 272.84595872968 − 0.118585842531209 − 0.0931535356151053 − 16.1243364604298 0.00700804964573864 20.6665050804407 ] [ S 1 S 2 S 3 ] \left[\begin{matrix} A_x \\ A_y \\ A_z \end{matrix}\right] =\left[\begin{matrix} -82.5449726643127 & 10.3388761594846 & 0.028182041202784 \\ 272.84595872968 & -0.118585842531209 & -0.0931535356151053 \\ -16.1243364604298 & 0.00700804964573864 & 20.6665050804407 \end{matrix}\right] \left[\begin{matrix} S_1 \\ S_2 \\ S_3 \end{matrix}\right] AxAyAz = 82.5449726643127272.8459587296816.124336460429810.33887615948460.1185858425312090.007008049645738640.0281820412027840.093153535615105320.6665050804407 S1S2S3

仿真

下面使用 simucpp 仿真。

代码

拆除代数环的矩阵方程代码

#include <iostream>
#include "zhnmat.hpp"
using namespace std;
using namespace zhnmat;
typedef std::vector<double>  vecdble;
constexpr double c1 = -3.117;
// constexpr double c2 = -58.221;
// constexpr double k1 = 165.827;
// constexpr double k2 = 210.827;
// constexpr double k3 = 76.661;
constexpr double c2 = -1.221;
constexpr double k1 = 271.827;
constexpr double k2 = 10.303;
constexpr double k3 = 20.661;
int main() {
    // Mat kA(3, 3, vecdble{
    //     0, c1/k1, 0,
    //     c1/k3, 0, c2/k3,
    //     0, c2/k2, 0,
    // });
    // Mat kS(3, 3, vecdble{
    //     k1, 0, 0,
    //     0, 0, k3,
    //     0, k2, 0,
    // });
    Mat kA(3, 3, vecdble{
        0, c1/k2, 0,
        c1/k1, 0, c2/k1,
        0, c2/k3, 0
    });
    Mat kS(3, 3, vecdble{
        0, k2, 0,
        k1, 0, 0,
        0, 0, k3,
    });
    Mat K = (eye(3) - kA).inv() * kS;
    cout << K << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

paddle_gpu安装配置

paddle_gpu安装配置1.确认安装版本2. 安装相关文件2.1 下载与安装3.cuDNN下载及安装4.创建conda虚拟环境5.参考教程1.确认安装版本 操作系统&#xff1a;windows安装方式:condapython版本:python3.7CUDA版本&#xff1a;本人电脑版本【11.6.134】&#xff0c;低于此版本电脑都…

傻白入门芯片设计,盘点CPU业界的顶尖人才(十四)

这篇文章主要是针对现在CPU业界的顶尖人才&#xff0c;体现为以下几点&#xff1a;提出了革命性的技术路线&#xff0c;做出了杰出的产品&#xff0c;为公司做出重要贡献。按照当前供职情况&#xff0c;根据国际巨头所在公司分类&#xff0c;我主要收集了AMD&#xff0c;其余几…

【DevOps实战系列】第八章:详解Jenkins集成Docker私服Nexus3

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 Jenkins集成Docker镜像仓库 docker私服已经搭建完毕&#xff0c;下边我们期望jenkins做的事是&#xff1a; ①通过git拉取代码②通过maven构建生成jar包③构建含有jar包的镜像④推送到docker仓库…

五问补盲(三) | 补盲激光雷达,敢不敢直面新的安全威胁?

作者 | 爱LiDAR的小飞哥 编辑 | 王博在激光雷达上车的热潮中&#xff0c;各家都在技术参数上进行着“你死我活”的拼杀。 那么&#xff0c;参数代表一切吗&#xff1f;举个例子&#xff0c;测距200米的激光雷达一定比测距150米的更好吗&#xff1f; 可以肯定地说&#xff0c;非…

JVM 之 AdaptiveSizePolicy 参数

AdaptiveSizePolicy 简介 AdaptiveSizePolicy(自适应大小策略) &#xff1a; JDK 1.8 默认使用 UseParallelGC 垃圾回收器&#xff0c;该垃圾回收器默认启动了 AdaptiveSizePolicy&#xff0c;会根据GC的情况自动计算计算 Eden、From 和 To 区的大小。 配置&#xff1a; 开启…

vue生命周期

vue的生命周期就是vue实例从创建到销毁的全过程&#xff0c;就是从开始创建、初始化数据、编译模版、挂载Dom、更新渲染、卸载等⼀系列过程&#xff0c;在这个过程中存在生命周期的钩子函数&#xff0c;我们可以在对应阶段添加实现自己的代码。 钩子函数&#xff08;共8个&…

智慧物流|Springboot+Vue+Nodejs实现智慧物流系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

Java如何读取输入

文章目录0.写在前面1.介绍2.举例3.写在最后0.写在前面 Java语言可以接收从键盘的输入&#xff0c;一般用来在调试的时候会用到&#xff0c;实际开发一般不用。 所以在此记录比较简单。 1.介绍 读取流程&#xff1a; 1.导入需要的工具包 2.构造一个“标准输入流”System.in关…

软件测试基础理论体系学习10-什么是本地化测试?本地化测试有哪些问题?本地化测试的重点是什么?

10-什么是本地化测试&#xff1f;本地化测试有哪些问题&#xff1f;本地化测试的重点是什么&#xff1f;1 本地化测试概述1.1软件本地化概念1.2 软件本地化工程1.3 软件本地化的重要性2 本地化测试翻译问题2.1 软件本地化不等于软件翻译2.2 软件本地化语言翻译技术2.2.1 翻译记…

K8s Service 负载均衡底层分析

当我们创建完 Pod 后&#xff0c;Pod 的 IP 与 Service IP 会自动分配&#xff0c;而 Pod IP 仅 K8s 集群内部访问&#xff0c;那 K8s 集群外部客户端又是如何访问 Pod 呢&#xff1f;看了官方相关文档&#xff0c;查询到是通过 Host 的 iptables&#xff08;即 K8s 集群节点的…

服务器多用户共享Anaconda

实验室最近买了台服务器&#xff0c;这篇Blog用来记载一下给ubuntu 20.04的服务器安装一个共享的anaconda的步骤。 安装Anaconda 首先去anaconda的官网下载linux的安装包&#xff0c;推送到服务上。然后进行安装&#xff1a; sudo bash ./Anaconda3-2022.10-Linux-x86_64.sh…

99.(leaflet之家)leaflet军事标绘-分队战斗行动修改

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> …

Linux从入门到进阶学习(Ⅰ):Linux系统安装与配置

目录 1 Linux概述 2 虚拟机安装 3 安装Centos系统 ​4 远程连接Linux系统 5 WSL环境 6 虚拟机快照 1 Linux概述 内核是操作系统的核心&#xff0c;Linux内核是免费开源的&#xff0c;由此产生了许多Linux发行版&#xff0c;包括&#xff1a;Ubuntu、CentOs等 2 虚拟机安…

零钱通项目(面向过程)

目录 项目需求 项目界面 思路 写代码 第一步 第二步 第三步 IDEA运行问题 日期问题 代码运行问题 第四步 第五步 第一种 第二种 第六步 第七步 完整代码 运行效果 项目需求 使用Java 开发 零钱通项目&#xff0c;可以完成收益入账&#xff0c;消费&#xff0…

SSH连接到GitHub的方法

前言 习惯了使用公司内的GitLab&#xff0c;已经有一段时间没有使用GitHub来维护自己的项目&#xff0c;近期需要新建个人项目在阿里云服务器上使用&#xff0c;竟然一时忘记了怎么用SSH连接GitHub。 因此本文记录一下SSH连接GitHub的方法&#xff0c;也方便后面自己参考。 整…

微服务框架 SpringCloud微服务架构 多级缓存 48 多级缓存 48.4 查询Tomcat【环境准备】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存48 多级缓存48.4 查询Tomcat【环境准备】48.4.1 多级缓存需求48 多级缓存 48.4 查询Tomcat【环境准备…

springMVC+mysql实现的Java web医院分诊挂号管理系统源码附带论文及视频指导运行教程

今天给大家演示的是一款由springMVCmysql实现的Java web医院分诊挂号管理系统&#xff0c;主要实现了患者管理、科室管理、挂号管理等业务功能&#xff0c;此外系统还有角色权限管理&#xff0c;用户管理、菜单管理、定时任务管理等功能&#xff0c;这些功能对于想要二次开发的…

数据结构---各类排序算法详解

Lesson6–排序 文章目录Lesson6--排序一、.排序的概念及其应用1.1排序的概念1.2常见的排序算法二、.常见排序算法的实现2.1插入排序2.1.1插入排序的基本思想&#xff1a;2.1.2直接插入排序&#xff1a;2.1.3 直接插入排序代码实现2.1.4希尔排序&#xff08;缩小增量排序&#x…

入门学习SpringSecurity,这一篇就够了

入门学习SpringSecurity&#xff0c;这一篇就够了1.SpringSecurity环境搭建2.认识SpringSecurity3.配置SpringSecurity4.注销5.权限控制展示内容6.记住我实现7.定制登录页在 Web 开发中&#xff0c;安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求&#xff0c;但…

处理.Dwg文件用哪种技术方案?ObjectARX,RealDWG还是Teigha(ODA)?

如果你计划开发一款程序处理.dwg文件中的数据。那么你有三种技术方案实现----AutoCAD(ObjectARX/http://Acad.NET)、 RealDWG或Teigha. 试图编写自己的dwg解析引擎是不可行的&#xff0c;dwg的加密格式使任务极其艰巨。再考虑到引擎后续版本的维护以及兼容性、稳定性&#xff…