基於Simulink的二輪平衡小車仿真


問題描述

現有一個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把這幾個模塊信號引出,再封裝成子系統:

控制

直立控制

  直立控制很簡單,當擺桿向下運動的時候,受重力作用,擺桿會加速向下,那么怎么給擺桿一個反力呢,那就需要給下方的車一個同向的加速度,產生一個反力,這個反力應當包括回復力$k_1{\theta}$和阻尼力$k_2{\theta}^{\prime}$,其中$k_1,k_2$為比例系數(阻尼力可以使擺盡快穩定):

  在模型中表示就是:

然后就是調節PD參數的時候(I不管),不斷調節,使小車能夠穩定即可。

目前的效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM