倒立摆控制与仿真动画展示

公式和图片需要交叉引用,所以正文用 LaTeX \LaTeX LATEX写,一并放到代码仓库里,不适合 LaTeX \LaTeX LATEX的动图和链接放到博客里。建模仿真使用 simucpp,仿真效果展示使用 EGE,波形图展示使用 matplotlib
下文的倒立摆如果不特别说明就指单摆。
代码 https://gitee.com/xd15zhn/inversependular
博客 倒立摆控制与仿真动画展示
视频 https://space.bilibili.com/344268817/channel/seriesdetail?sid=2023589
具体的分析见 LaTeX \LaTeX LATEX生成的PDF https://gitee.com/xd15zhn/inversependular/releases
下面是不施加任何输入的情况,建模使用的是原本的非线性模型,全角度都是符合实际的,设计控制器时才线性化。
在这里插入图片描述
PID只使用比例控制结果如下。以后我再看看能不能算出来最合适的PID参数。
在这里插入图片描述
我在录视频的时候因为做不到先点录屏再开始仿真,所以我把仿真设置成循环的,下面的视频有的一开始是一段循环的末尾,请耐心看完下一个循环。
使用LQR只控制角度时如下,速度和位置不受控制。矩阵都是二维的,可以手算出结果。

倒立摆角度控制

使用LQR同时控制位置和角度结果如下。

倒立摆LQR控制

倒立双摆参考《Robust Adaptive Control》例2.2.1,不施加任何输入的情况如下,出乎意料的是它竟然不像单摆那样形成一个循环,时间再长点就跑出画面了,感觉有点混沌系统或者三体问题的味道。

倒立双摆仿真

这次不控制位置了,只希望稳定时速度为0就行。结果如下

倒立双摆LQR控制

参考链接

其中链接[4]给了一篇求解代数Riccati方程的论文。

  1. 机器人机械结构之倒立摆模型
  2. 一阶倒立摆的PID控制和LQR控制
  3. LQR控制算法推导以及简单分析
  4. 代数Riccati方程的数值算法
  5. 当我们谈“最小相位系统”时究竟在谈什么?
  6. 13. 稳定裕度
  7. http://www.kostasalexis.com/lqr-control.html
  8. Linear Quadratic Regulators
  9. Linear Quadratic Regulator (LQR) With Python Code Example

代码仓库文件结构

  ├── cppcode: 仿真程序
  │     ├── controller.hpp: PID控制器和LQR控制器
  │     ├── pendulum.hpp: 倒立单摆和倒立双摆的数学模型
  │     ├── singleip.cpp: 倒立单摆的简易PID控制和LQR控制
  │     ├── linear.cpp: 倒立单摆的线性化模型,用于与非线性的数学模型比较确定线性化的计算过程是否正确
  │     ├── doubleip.cpp: 倒立双摆的LQR控制
  │     └── seriespid.cpp:串级PID控制倒立摆
  ├── latexcode: 数学模型与控制算法推导
  ├── pythoncode: 计算控制器参数,绘制bode图等
  │     ├── riccati.py: 求解Riccati方程函数
  │     ├── zhnbodeplot.py: 绘制伯德图函数
  │     ├── calc1.py: 计算二阶LQR控制器参数
  │     ├── calc2.py: Riccati方程计算四阶LQR控制器参数
  │     ├── calc3.py: Riccati方程计算倒立双摆的五阶LQR控制器参数
  │     ├── bodeangle.py: 内环PID控制的伯德图
  │     └── bodeoutangle.py: 外环PID控制的伯德图
  ├── CMakeLists.txt: 
  ├── build.bat: 为了vscode里编译方便
  └── README. md:这篇博客的内容
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值