//小飞机 返回顶部

基于Simulink的二轮平衡小车仿真

 


作者:@悠然儿
转载请注明出处:https://www.cnblogs.com/youraner/p/16134864.html


问题描述

现有一个Solidworks中的小车模型,如图所示。

现在需要在matlab中进行物理仿真,所以需要在matlab中建立物理模型,这里使用Simscape较为合适。

导入模型到matlab中

分别将车身(除轮子以外的部分)与车轮保存为stl或step格式。

在simulink中创建file solid,file为先前保存的车身、车轮。

建立模型

步骤

  我们可以对首先建立一个与实际情况近似的模型,使机构基本能够工作,后续迭代可以逐渐增加模型的复杂度。建模步骤按照下述方法进行:

1.定义机构中的刚体

2.定义刚体之间的连接(关节、约束等)

3.孤立地考虑每一个刚体,建立刚体的简单近似模型。

4.利用关节/约束等组装刚体。

模型建立

1)理论模型

图1 理论模型图

  平衡车可以看成一个倒立摆,车轮与车体之间由转动副连接,车轮与地面之间相当于一个移动副(棱柱副)。

  需要注意两个细节:

  转动副和移动副会提供一个自由度,这个自由度必须沿成这样,它连接两个刚体,转轴必须是z轴,所以应当做好连接部分的坐标变换,使得连接处的转轴为z轴这个非常重要!!

revolute joint      prismatic joint

 

现在我们在matlab命令行输入smnew建一个模板,如图所示。

2)车体

  车体需要提供一个连接口,位置在图1中的ro处,以便与轮子用转动副连接,这个需要用Rigid Transform来实现,这个模块就是用来变换坐标的,B为Base frame(基本构架),F为follower frame(下一个构架)。

  不论怎么变换,最后注意z轴与转轴方向一致,如图所示:

  提示一下,可以连接到世界坐标系运行,这样可以看到模型,方便调整,弄完后封装为子系统(Subsystem)全都选中就可以封装,如果有兴趣,还可以右键->Mask弄一个小界面,最后就像这样。

3)车轮

  车轮要提供两个接口,一个用于连接棱柱副,车体的移动方向要为z轴,一个用于连接转动副,轮子的转动轴要为z轴。

封装好后:

4)连接成整体模型

这里我们为了进行PID控制,要在转动副上添加传感器,在移动副上施加力。

用input port 和output port把这几个模块信号引出,再封装成子系统:

控制

直立控制

  直立控制很简单,当摆杆向下运动的时候,受重力作用,摆杆会加速向下,那么怎么给摆杆一个反力呢,那就需要给下方的车一个同向的加速度,产生一个反力,这个反力应当包括回复力k1θ和阻尼力k2θ,其中k1,k2为比例系数(阻尼力可以使摆尽快稳定):

  在模型中表示就是:

然后就是调节PD参数的时候(I不管),不断调节,使小车能够稳定即可。

目前的效果:



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   Yo然儿  阅读(5258)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
//看板娘 //页首目录 //页脚目录
点击右上角即可分享
微信分享提示