六自由度机械臂模型预测控制MPC+倒立摆+二自由度机械臂

接下来三个例子教你入门mpc,为了体现视频的高质量,在倒立摆和二自由度模型预测控制方面,我会给出一种基于状态变量微分的实时线性化策略,经过这样处理的mpc实际可以看作是nmpc。

1.一阶倒立摆MPC

1.1倒立摆状态方程

1.2倒立摆状态方程线性化

为了将上述方程写成\dot{X}=A*X+B*u+C的形式对上式进行整理可得:

F对X求偏导可得A:

F对u求偏导可得B:

剩余项:C=F-A*X-B*U

注意:此时已经完成了状态方程的线性化,这是实时线性化的重要步骤,并不需要带入特殊点(如目标点)得到线性化的具体值,我们只需要把A和B的表达式存起来,然后在控制过程中,带入当前状态量进去,在当前状态下调用表达式得到具体线性化的值即可,这样就能够避免出现由于倒立摆初始状态不在目标点附近导致的不可控问题(后续视频将会展示)。

转化为matlab代码的形式如下:

syms mc mp L q dq x dx f g realM=[mc+mp,mp*L*cos(q);
mp*L*cos(q),mp*L*L];
C=[0,-mp*L*sin(q)*dq;
0,0];
G=[0;-mp*g*L*sin(q)];
tao=[f;0];Z=[x;q;dx;dq];
F=[dx;dq;simplify(inv(M)*(tao-G-C*[dx;dq]))];%[dx;dq;ddx;ddq]A=[diff(F(1),Z(1)),diff(F(1),Z(2)),diff(F(1),Z(3)),diff(F(1),Z(4));
diff(F(2),Z(1)),diff(F(2),Z(2)),diff(F(2),Z(3)),diff(F(2),Z(4));
diff(F(3),Z(1)),diff(F(3),Z(2)),diff(F(3),Z(3)),diff(F(3),Z(4));
diff(F(4),Z(1)),diff(F(4),Z(2)),diff(F(4),Z(3)),diff(F(4),Z(4))];B=simplify(diff(F,f));

1.3状态方程离散化

 采用前向欧拉法将状态方程离散化:

 2.二自由度MPC

略。

3.六自由度mpc

M*ddq+C*dq+G=tol

dX=AX+Bu;

X=[q;dq];A=-M^{^{-1}}*C;B=M^{^{-1}}; u=tol-G

4.视频效果

六自由度机械臂+模型预测控制MPC+倒立摆+二自由度机械臂

技术/代码交流邮箱/企鹅(欢迎交流、讨论、私信):3531225003@qq.com

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

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

相关文章

rabbitmq 使用注意事项

1,注意开启的端口号,一共四个端口号,1883是mqtt连接的端口号,如果没开,是连接不上的需要手动起mqtt插件。 //开始mqtt插件服务 rabbitmq-plugins enable rabbitmq_mqtt 2,15672端口是http网页登录的管理后…

深度学习模型预测控制python tensorflow 实现

DL-MPC(Deep Learning Model Predictive Control)是一种结合深度学习和模型预测控制的先进控制策略。其核心思想是利用深度学习模型来预测系统的未来行为,并通过模型预测控制来优化控制输入,从而实现对复杂系统的高效控制。 深度…

MATLAB实现遗传算法优化零件拆卸装配问题

零件拆卸装配问题是一个有复杂约束的优化问题,它涉及到零件之间的连接关系、拆卸或装配的顺序、工具的使用、操作成本。 1.假设: (1)零件完整性:每个零件在拆卸和装配过程中保持完整,不发生形变或损坏 &…

BUUCTF之web篇

第一题 [极客大挑战 2019]EasySQL 打开靶机后可以看到这是一个登陆的页面 我们可以尝试两种方式登录 弱口令爆破(burpsuite) 通过SQL注入里的万能密码来跳过账户和密码验证的过程 这里就需要万能密码aor true # 在这里单引号的作用是结束用户名或者密码…

Spring Cloud 微服务全面概述

Spring Cloud 微服务全面概述 1. 微服务架构概述 微服务架构(Microservices Architecture)是将应用程序拆分为多个小的、独立的服务,每个服务围绕特定的业务功能构建。这种架构使得应用程序能够更灵活地扩展和维护。 1.1 微服务的特点 模…

2进制管理器的使用

这个 BinaryDataMgr 是一个用于管理二进制数据的工具类,主要功能是将数据存储为二进制文件,读取二进制数据并将其转换为对象,以及管理与 Excel 表相关的数据。它使用单例模式确保在整个应用程序中只有一个实例。 核心功能概述: …

Javascript基础面试题

仅学习使用,若有侵权将修改或删除|面试鸭 Javascript 有哪些数据类型?它们的区别是什么? 7 原始类型Undefined、Null、Boolean、Number、String、Symbol和BigInt 引用类型:Object(对象、函数和数组等) 如何判断 JavaScript 变量是数组? …

《BLEU: a Method for Automatic Evaluation of Machine Translation》翻译

文章目录 0. 摘要1. 引言1.1 理由1.2 观点 2. 基准 BLEU 指标2.1 修正的 n-gram 精度2.1.1 对文本块的修正 n-gram 精度2.1.2 仅使用修正 n-gram 精度对系统进行排序2.1.3 结合修正的 n-gram 精度 2.2 句子长度2.2.1 召回率的问题2.2.2 句子简短惩罚 2.3 BLEU 细节 3. BLEU 评估…

【C#】DevExpress 提供 自定义皮肤功能、注册皮肤库 。SkinManager

DevExpress.Skins.SkinManager.EnableFormSkins(); DevExpress.Skins.SkinManager.Default.RegisterAssembly(typeof(DevExpress.UserSkins.BonusSkins).Assembly);这两行代码用于启用 DevExpress 提供的自定义皮肤功能,并注册皮肤库,使应用程序能够使用…

java基础全篇(已完结)

完结撒花!!! 在经历了漫长而充实的创作过程后,我终于完成了关于Java基础的全面教程系列。在这个系列中,我们一起走过了从Java环境的搭建到复杂编程概念的掌握,一起吃了各种各样的bug。 章节目录 1.基础篇…

MySQL MHA 的部署

MySQL高可用方案 MHA 什么是 MHA MHA(MasterHigh Availability)是一种经典的高可用架构,专门用于在主从复制环境中实现自动故障切换和最小化数据丢失。 MHA 作为 MySQL 主从复制环境下的高可用解决方案,具有自动化、低成本和稳定…

JS常用的公共方法

1.获取当前年月日 // 获取当前年月日 export function getNowFormatDate(interval "/") {let date new Date(),year date.getFullYear(), //获取完整的年份(4位)month date.getMonth() 1, //获取当前月份(0-11,0代表1月)strDate date.getDate(); // 获取当前日…

网络安全——防火墙技术

目录 前言基本概念常见防火墙技术防火墙的主要功能防火墙的不足之处相关题目1.组织外部未授权用户访问内部网络2.DMZ区3.包过滤防火墙和代理服务防火墙 前言 这是在软件设计师备考时编写的资料文章,相关内容偏向软件设计师 基本概念 防火墙技术是网络安全领域中的…

如何在Node.js中执行解压缩文件操作

一、解压文件 1.安装依赖: 安装adm-zip依赖包:npm install adm-zip --save 安装iconv-lite依赖包:npm install iconv-lite --save 解压前的file文件夹结构: update-1.0.2.zip压缩包内容: 2.在depresssFile.js文件&…

鸿蒙是必经之路

少了大嘴的发布会,老实讲有点让人昏昏入睡。关于技术本身的东西,放在后面。 我想想来加把油~ 鸿蒙发布后褒贬不一,其中很多人不太看好鸿蒙,一方面是开源性、一方面是南向北向的利益问题。 不说技术的领先点,我只扯扯…

【网络原理】网络地址转换----NAT技术详解

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备&#x…

【p2p、分布式,区块链笔记 IPFS】go-ipfs windows系统客户端节点实现 kubo试用

Kubo (go-IPFS) 是最早和使用最广泛的 IPFS 实现。它包括: 一个 IPFS 守护程序服务器广泛的命令行工具用于控制节点的 HTTP RPC API用于向 HTTP 浏览器提供内容的 HTTP 网关 下载 https://dist.ipfs.tech/#go-ipfs 解压 初始化 C:\User…

docker-minio启动参数

完整命令 docker run -p 9000:9000 -p 9090:9090 -v /opt/minio/data:/data -d --name -d --restartalways minio -e "MINIO_ACCESS_KEYminio" -e "MINIO_SECRET_KEYminioadmin123" minio/minio server --console-address ":9090" -address &q…

IDEA开发工具使用技巧积累

一、IDEA 工具设置默认使用maven的settings.xml文件 第一步:打开idea工具,选中 File ——> New Projects Setup ——> Settings for New Projects 第二步:先设置下自动构建项目这个选项 第三步:选中 Build Tools ——>…

正点原子阿尔法ARM开发板-IMX6ULL(九)——关于SecureCRT连接板子上的ubuntu

文章目录 一、拨码器二、SecureCRT 一、拨码器 emmm,也是好久没学IMX6ULL了,也是忘了拨码器决定了主板的启动方式 一种是直接从TF卡中读取文件(注意这里是通过imdownload软件编译好了之后,通过指令放入TF卡) 一种是现在这种用串口…