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


1. 问题描述

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

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

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

2.导入模型到matlab中

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

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

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

3.建立模型

3.1步骤

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

1.定义机构中的刚体

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

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

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

3.2模型建立

1)理论模型

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

图1 理论模型图

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

  需要注意两个细节:

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

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

revolute joint      prismatic joint

 

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

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

2)车体

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

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

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

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

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

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

3)车轮

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

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

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

封装好后:

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

4)连接成整体模型

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

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

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

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

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

4.控制

4.1 直立控制

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

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

  在模型中表示就是:

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

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

目前的效果:

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

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/245426.html

(0)
上一篇 2022年4月18日 08:28
下一篇 2022年4月18日 08:29

相关推荐

发表回复

登录后才能评论