【控制实践——二轮平衡车】【五】转动运动模型及控制方法


传送门

  • 系列博客
  • 前言
  • 运动模型
  • 控制方法
    • 控制器设计
  • 结论


系列博客

【控制实践——二轮平衡车】【一】运动分析及动力学建模
【控制实践——二轮平衡车】【二】实物设计和开源结构&代码
【控制实践——二轮平衡车】【三】基于PID的直立控制
【控制实践——二轮平衡车】【四】基于ADRC算法的直立控制

前言

前面的博客推导了直立的运动模型及控制方法,这一篇讨论下转动的运动模型和控制方法。
这一章比较简单,水一篇先。 \doge

运动模型

首先,转动运动是指绕机体 Z Z Z轴运动,如图所示。
在这里插入图片描述
其中, L 2 \bold{L_{2}} L2为左右轮子的距离后简称轮距

定义以下变量:

  • 左轮的位移 x l e f t \boldsymbol{x_{left}} xleft,右轮的位移 x r i g h t \boldsymbol{x_{right}} xright面向前进方向——X轴正方向下的左右位置
  • 二轮平衡车绕 Z Z Z轴转动的角速度为 ω \boldsymbol{\omega} ω,转动的角度为 β \boldsymbol{\beta} β方向以右手法则为准

显然,从左右轮子的速度可以得到二轮平衡车的共模量 x w \boldsymbol{x_{w}} xw和差模量 x b i a s \boldsymbol{x_{bias}} xbias,即:
x w = x r i g h t + x l e f t 2   (1) \boldsymbol{x_{w}} = \frac{\boldsymbol{x_{right}} + \boldsymbol{x_{left}} }{2}\ \tag{1} xw=2xright+xleft (1)
x b i a s = x r i g h t − x l e f t 2   (2) \boldsymbol{x_{bias}} = \frac{ \boldsymbol{x_{right}}-\boldsymbol{x_{left}}}{2}\ \tag{2} xbias=2xrightxleft (2)
这里的共模量其实也就是直立控制中轮子的位移变量为 x w \boldsymbol{x_{w}} xw,为了联系前面的博客,故用同一个变量表示。

转动角速度 ω \boldsymbol{\omega} ω与差速量 x b i a s \boldsymbol{x_{bias}} xbias的关系为:
ω = x ˙ b i a s ⋅ L 2 (3) \boldsymbol{\omega} = \boldsymbol{\dot{x}_{bias}} \cdot \bold{L_{2}} \tag{3} ω=x˙biasL2(3)
其实就是角速度与线速度的关系。

控制方法

由于二轮平衡车的转动运动和其直立运动相互独立,因此在控制的时候可以直接将二者的运动控制结果叠加。控制框架如图所示。
在这里插入图片描述

k k k时刻,直立控制器得到的是两个轮子的期望加速度共模量 x ¨ w , r e f \boldsymbol{\ddot{x}_{w,ref}} x¨w,ref。假设控制周期为 T T T,则可以得到 k + 1 k+1 k+1时刻的期望速度共模量 x ˙ w , r e f \boldsymbol{\dot{x}_{w,ref}} x˙w,ref,满足以下关系:
x ˙ w , r e f ( k + 1 ) = x ˙ w ( k ) + x ¨ w , r e f ( k + 1 ) ⋅ T   (4) \boldsymbol{\dot{x}_{w,ref}}(k+1)=\boldsymbol{\dot{x}_{w}}(k)+ \boldsymbol{\ddot{x}_{w,ref}}(k+1)\cdot T\ \tag{4} x˙w,ref(k+1)=x˙w(k)+x¨w,ref(k+1)T (4)
其中, x ˙ w ( k ) \boldsymbol{\dot{x}_{w}}(k) x˙w(k) k k k时刻时的速度共模量。

同样, k k k时刻,转动控制器得到了期望转动角速度 ω r e f \boldsymbol{\omega_{ref}} ωref,假设控制周期为 T T T,则可以得到 k + 1 k+1 k+1时刻的期望速度差模量 x ˙ b i a s , r e f \boldsymbol{\dot{x}_{bias,ref}} x˙bias,ref,满足以下关系:
x ˙ b i a s , r e f ( k + 1 ) = ω r e f / L 2   (5) \boldsymbol{\dot{x}_{bias,ref}}(k+1)=\boldsymbol{\omega_{ref}}/\bold{L_{2}}\ \tag{5} x˙bias,ref(k+1)=ωref/L2 (5)

于是,可以得到左右轮子的期望速度 x r i g h t , r e f , x l e f t , r e f \boldsymbol{x_{right,ref}},\boldsymbol{x_{left,ref}} xright,ref,xleft,ref,满足以下关系:
x r i g h t , r e f = x ˙ w , r e f + x ˙ b i a s , r e f x l e f t , r e f = x ˙ w , r e f − x ˙ b i a s , r e f   (6) \boldsymbol{x_{right,ref}}=\boldsymbol{\dot{x}_{w,ref}}+\boldsymbol{\dot{x}_{bias,ref}}\\ \boldsymbol{x_{left,ref}}=\boldsymbol{\dot{x}_{w,ref}}-\boldsymbol{\dot{x}_{bias,ref}}\ \tag{6} xright,ref=x˙w,ref+x˙bias,refxleft,ref=x˙w,refx˙bias,ref (6)

控制器设计

这个转动的模型相对简单,以状态方程和传递函数两种模型来表示。

  • 状态方程

    定义状态变量, X ⃗ = [ β ] \bold{\vec{X}}=\begin{bmatrix}\boldsymbol{\beta}\end{bmatrix} X =[β] U ⃗ = [ x ˙ b i a s ] \bold{\vec{U}}=\begin{bmatrix}\boldsymbol{\dot{x}_{bias}}\end{bmatrix} U =[x˙bias]状态空间方程为:
    X ⃗ ′ = A X ⃗ + B U ⃗ → β ˙ = L 2 x ˙ b i a s   (7) \bold{\vec{X}}'=\bold{A}\bold{\vec{X}}+\bold{B}\bold{\vec{U}}\rightarrow \boldsymbol{\dot{\beta}}=\bold{L_{2}} \boldsymbol{\dot{x}_{bias}}\ \tag{7} X =AX +BU β˙=L2x˙bias (7)
    其中, A \bold{A} A为0, B = [ L 2 ] \bold{B} =\begin{bmatrix} \bold{L}_{2} \end{bmatrix} B=[L2]

  • 传递函数

    令输入 r ( t ) = x ˙ b i a s ( t ) r(t)=\boldsymbol{\dot{x}_{bias}}(t) r(t)=x˙bias(t),输出 y ( t ) = β ( t ) y(t)=\boldsymbol{\beta}(t) y(t)=β(t),则对应的微分方程
    y ′ ( t ) = L 2 r ( t )   (8) y'(t)=\bold{L}_{2}r(t)\ \tag{8} y(t)=L2r(t) (8)
    对应的传递函数为:
    Y ( s ) R ( s ) = G ( s ) = L 2 s   (9) \frac{\bold{Y}(s)}{\bold{R}(s)}=\bold{G}(s)=\frac{\bold{L}_{2}}{s}\ \tag{9} R(s)Y(s)=G(s)=sL2 (9)
    说了很简单吧,是个比例积分环节\doge

结论

因为这部分实在是太简单了,就不单独进行仿真了,后续会跟轨迹控制一起仿真。
没错!下一篇博客将进行二轮平衡车轨迹跟踪的控制讨论了

感谢阅读~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

27 ssh+scp+nfs+yum进阶

ssh远程管理 ssh是一种安全通道协议,用来实现字符界面的远程登录。远程复制,远程文本传输。 ssh对通信双方的数据进行了加密。 用户名和密码登录 密钥对认证方式(可以实现免密登录) ssh 22 网络层 传输层 数据传输的过程中是…

Matlab 2024a 建模基础知识全面指南

一、Matlab简介 1. Matlab是什么? Matlab(Matrix Laboratory)是由MathWorks公司开发的一个高性能的数值计算环境和编程语言。它以其强大的矩阵运算能力、丰富的工具箱和便捷的数据可视化功能而闻名,广泛应用于科学研究、工程模拟…

【面试干货】什么是索引?

【面试干货】什么是索引? 1、索引的定义2、索引的工作原理3、索引在数据库管理系统中的作用 💖The Begin💖点点关注,收藏不迷路💖 1、索引的定义 数据库索引是一个存储在磁盘上的数据结构,它以某种方式引用…

2024年全国青少信息素养大赛图形化编程挑战赛集训第一天编程题分享

大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训第一天题目 (一)比赛内容: 【小学低年级组】 1、图形化编程软件的使用:熟悉图形化编程软件中舞台区、角色列表区、功能区、脚本编 -3- 辑区的功能及使用。 2、基础功能模块的使用: a.运动模块:角…

ARM64汇编0A - thumb模式与IT块

本文主要讨论一下 32 位程序下的 thumb 模式相关东西,属于选读内容。 thumb模式 ARM模式的指令集宽度是32位而Thumb是16位宽度(但也可以是32位)。 Thumb也有很多不同的版本。不过不同的名字仅仅是为了区分不同版本的Thumb指令集而已(也就是对于处理器来说&#x…

10款必备软件,每款都是神器,赶快用起来吧!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/最近有很多小伙伴在咨询,我也抓紧时间整理了一些不错的软件和我陆续收到的,希望对大家有所帮助。 1. 全球鼠标——MouseI…

15_Vue3核心概念与实践

文章目录 Vue31. Vite2.使用Vite创建前端工程3.目录介绍4.SFC入门5.2.35.ViteVue样式导入方式6.响应式入门&&setup函数6.1 响应式数据6.2 省略setup(){} 省略default{},return{}6.3 案例开发功能概述 7. 插值表达式8.文本渲染v-text/v-html9. 属性渲染v-bin…

基于Vue的前端瀑布流布局组件的设计与实现

摘要 随着前端技术的不断演进,复杂业务场景和多次迭代后的产品对组件化开发提出了更高的要求。传统的整块应用开发方式已无法满足快速迭代和高效维护的需求。因此,本文将介绍一款基于Vue的瀑布流布局组件,旨在通过组件化开发提升开发效率和降…

全球AI新闻速递6.7

1.智谱 AI 宣布全模型矩阵降价,开源 GLM-4-9B 系列模型。 2.复旦大学计划在2024-2025新学年推出至少100门。 3.思科:启动 10 亿美元 AI 基金,投资AI初创公司。 4.OpenAI和谷歌DeepMind员工联名发声:高级AI风险巨大,…

Acwing 786.第K个数

Acwing 786.第K个数 题目描述 786. 第k个数 - AcWing题库 运行代码 #include <iostream> #include <algorithm> using namespace std; const int N 100010; int q[N];int main() {int n, k;scanf("%d%d", &n, &k);for (int i 0; i < n; …

Mac屏幕截图软件

一、简介&#xff08;有小伙伴留言说想要mac的屏幕截图软件&#xff0c;今天给大家分享一个还不错的&#xff09; 1、一个功能丰富的功能丰富的截图工具&#xff0c;具有许多高级功能&#xff0c;免费。用于快速拍摄并将它们组织成集合。Snappy还支持注释&#xff0c;共享&…

Linux操作系统:Spark在虚拟环境下的安装及部署

将Spark安装到指定目录 // 通过wget下载Spark安装包 $ wget https://d3kbcqa49mib13.cloudfront.net/spark-2.1.1-bin-hadoop2.7.tgz // 将spark解压到安装目录 $ tar –zxvf spark-2.1.1-bin-hadoop2.7.tgz –C /usr/local/ // 重命名 $ mv /usr/local/spark-2.1.1-bin-hado…

1.音视频开篇

目录 音视频播放的原理 音视频数据格式YUV YUV数据存储比 ​编辑 YUV空间格式 RGB与YUV转换 音视频播放的原理 主要分为&#xff1a;解协议->解封装->解码->音视频同步->播放。当然&#xff0c;如果是本地播放&#xff0c;没有解协议这一步骤。 采集数据其实…

Cesium开发环境搭建(二)

由于win7搭建很费事&#xff0c;重新安装了OS&#xff0c;win10的。 记录一下&#xff0c;搭建步骤&#xff1a; 1.下载node.js。 百度搜索即可下载对应的版本。下载cesium。 2.安装node.js。 安装后&#xff0c;输入node -v&#xff0c;显示版本信息&#xff0c;表示安装…

Spring Cloud 微服务集成Sentinel实现服务熔断降级

文章目录 一、前言二、技术思路及方案2.1 实现思路2.2 实现方案2.2.1 nacos动态数据源实现类关系图 三、功能实现3.1 快速集成方案3.1.1 引入依赖3.1.2 服务端熔断降级3.1.3 feign调用降级 四、扩展4.1 SPI机制4.2 自定义Slot实现4.3 基于 Sentinel 实现 Feign 全局异常兜底4.3…

MySQL之查询性能优化(七)

查询性能优化 排序优化 无论如何排序都是一个成本很高的操作&#xff0c;所以从性能角度考虑&#xff0c;应尽可能避免排序或者尽可能避免对大量数据进行排序。前面已经提到了&#xff0c;当不能使用索引生成排序结果的时候&#xff0c;MySQL需要自己进行排序&#xff0c;如果…

【大事件】docker可能无法使用了

今天本想继续学习docker的命令&#xff0c;突然发现官方网站的文档页面打不开了。 难道是被墙了&#xff1f; 我用同事的翻了一下&#xff0c;能进&#xff0c;果然&#xff01; 正好手头的工作告一段落&#xff0c;将代码上传&#xff0c;然后通过jenkins将服务器自动部署到…

Python魔法之旅-魔法方法(20)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…

代码随想录——删除二叉搜索树中的节点(Leetcode450)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

SpringBoot实现图片文件上传和回显的两种方式

目录 一 功能需求 二 上传本地 2.1 实现文件上传的controller层 2.2 图片访问资源映射 二 上传OSS 一 功能需求 实现图片的上传和回显功能其实在业务中是非常常见的&#xff0c;比如需要上传头像&#xff0c;或者交易平台需要上传物品的图片等等&#xff0c;都需要上传和回…