當前位置:
首頁 > 知識 > 58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

作者 | 安布奇

責編 | 胡巍巍

本文乾貨滿滿,主要以一個單擺為例,講述如何進行物理建模。58張實操圖,手把手帶你學會Simscape Multibody物理建模與剛體變換!

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

創建模型

在MatLab命令行輸入smnew,打開一個新的simscape multibody項目。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

在命令行輸入sm_lib,打開Simscape Multibody block library選擇自己想要添加的塊。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換


58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

創建機械連接

塊類型說明:

Rigid Transform(剛體變換)塊:提供端坐標系。

Solid(立體)塊:提供幾何(geometry),慣性(inertia),顏色(color)特性。

Rigid Transform塊在Frame and Transform 下,Solid塊在Body Element下。

連接塊圖:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

設置Solid block 特性:左鍵快速單擊solid block兩次,在彈出的對話框中將參數設置為如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

將長寬高用變數LHW代替,密度用rho代替,顏色用rgb代替,方便修改參數。這裡出現錯誤是因為我們輸入的變數未定義,將在下面定義。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

設置Rigid Transform塊:左鍵快速單擊Rigid Transform block,在彈出的對話框中將參數設置為如下圖所示:將Rigid Transform 設置為如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

將Rigid Transform1 設置為如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

生成子系統:

同時選中Rigid Transform,Rigid Transform1和solid block,在高亮的地方右鍵選擇Create Subsystem from Selection:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

得到如下所示子系統:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

定義前面的參數:右鍵單擊Subsystem,在彈出的對話框中選擇 Mask > Create Mask。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

在彈出的對話框中選擇 Parameters & Dialog,在左邊的欄中添加五個

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

到 Parameters,然後將變數名改為前面輸入的變數名。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

在右邊欄Properties > value中將各變數值設置為如下所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

確定,然後在simulink界面中選擇Simulation > Update Diagram,更新塊圖,得到如下圖的立體:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

添加旋轉部件:

在matlab命令行輸入smnew,新建一個模型,刪除不需要的塊並將上述的Subsystem複製過來。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

從Simscape > Multibody > Joints 中添加一個 Revolute Joint(旋轉節點)到圖中,並連接成如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

滑鼠左鍵快速單擊圖中的solid block兩次,在彈出的對話框中將其參數設置為如圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

點擊確定。

設置重力:旋轉節點(Revolute Joint block)使用底座和從動件坐標系的公共Z軸作為旋轉軸,為了讓從動件在重力的作用下旋轉,需要使重力矢量偏移Z軸。滑鼠左鍵快速單擊Mechanism Configuration block兩次,在彈出的窗口中將重力設置為[0 -9.81 0](-y方向)。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

設置單擺起始位置:滑鼠在左鍵快速單擊Revolute Joint兩次,在彈出的對話框中選擇State Targets > Position進行設置,默認為水平。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

配置求解器:

在simulink中選擇Simulation > Model Configuration Parameters,配置為如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

選擇確定。

組裝模型:選擇Simulation > Update diagram,得到如圖所示的模型。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

選擇View convention將其設置為Y up (XY Front),保證重力與屏幕垂直對齊,選擇view > standard view 中的一項來刷新視圖。選擇

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

來保存設置。運行模型:點擊Simulation > Run,運行模型,將會看到單擺擺動。分析模型:測量單擺運動:左鍵快速單擊Revolute Joint block兩次,在彈出的對話框中選擇Sensing 下的Position 和Velocity。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

添加以下塊到模型:PS-Simulink Converter:在Simscape > UtilitiesTo Workspace:在Simulink > Sinks如圖:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

將文件另存為一個新文件 simplependulumanalysis。擺角、角速度關於時間的函數:打開剛剛的文件 simplependulumanalysis ,然後選擇Simulation > Run,在matlab命令行中輸入以下命令:figure; % Open a new figure

hold on;

plot(q); % Plot the pendulum angle

plot(W); % Plot the pendulum angular velocity

得出擺角(藍色)與角速度(紅色)關於時間的函數圖像:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

無阻尼條件下擺角與角速度關係在matlab命令行中輸入以下命令:figure;

plot(q.data, W.data);

得到函數圖像:縱軸為角速度,橫軸為擺角。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

在 Revolute Joint block State 對話框的Targets> Position中設置不同的起始角:-80, -40, 0, 40和80 °,重複上述的命令得到不同起始角下擺角與角速度的關係:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

有阻尼下擺角與角速度關係:左鍵快速單擊Revolute Joint block,在彈出的對話框中將 Internal Mechanics > Damping coefficient 設為8e-5(N*m)/(deg/s),確保State Targets > specify Position Target > Value為0(初始角為0)。在matlab命令行輸入以下命令:figure;

hold on;

plot(q);

plot(w);

得到如下圖所示擺角(藍色)、角速度(紅色)與時間的函數關係:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

在matlab命令行中輸入以下命令:figure;

plot(q.data, W.data);

得到擺角與角速度的關係。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

改變初始角為-240,-180, -120, -60, 0, and 60 °,重複上述命令可以得到如圖:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

有阻尼和激勵下的單擺:

左鍵快速單擊Revolute Joint兩次,在彈出來的對話框中設置Actuation > Torque為 `Provided by Input。添加以下兩個模塊:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

連接成如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

左鍵快速單擊Sine Wave block 兩次,在彈出的對話框中將Amplitude設置為0.06,在Revolute Joint block 對話框中將確認 State Targets > Position > Value為0。運行模擬,在matlab命令行中輸入以下命令畫出擺角、角速度與時間的關係:figure;

hold on;

plot(q);

plot(w);

如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

在matlab命令行中輸入以下命令畫出擺角與角速度的函數關係:plot(q.data, W.Data);

如下圖所示:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

Simscape剛體變換創建坐標系:以一個L梁作為示例,在matlab命令行輸入smdoc_lbeam_inertia。將會彈出一個L梁的坐標關係圖:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

左鍵快速點擊圖中的立方體兩次,彈出立體對話框:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

點擊Frames左邊的「+」號,選擇new frame右邊的加號。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

會彈出一個坐標對話框。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

從上到下依次為:

坐標名稱

坐標原點

主軸

副軸

按自己想要的設置即可。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

添加立體到模型中打開simulink:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

選擇Simscape下的Multibody:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

將默認存在的塊體刪除,選擇Library Browser >> Simscape >> Multibody >> Body Elements:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

將其中的solid拖到窗口中即可。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

建立坐標系及剛體變換剛體轉動變換:將兩個立方體連接起來,使立方體的世界坐標系在空間上是重合的。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

可視化立體坐標系:將Simscape >> Utilities >> Solver Configuration 拖到模型中,並與一個立方體連接:

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

選擇Simulation > Update Diagram更新流程圖,將會打開Mechanics Explorer窗口

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

應用剛體變換:在Multibody>Frames and Transforms拖一個rigid Transform,將它連接到兩個立體的中間,左鍵快速單擊兩次,在彈出對話框中選擇:

Rotation > Method to Standard Axis.Rotation > Axis to -Z.Rotation > Angle to 45.

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

選擇OK然後Simulation > Update Diagram更新流程圖,如下圖,完成了一個剛體轉動變換。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

點擊Rigid Transform 可以看到,兩個立體的坐標系原點和Z軸是重合的,X軸和Y軸彼此錯開了45°。平動變換:將Translation > Method 設置為 Cartesian,Translation > Offset to [1 1 0]。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

offset數組表示相對於基礎坐標系(Base Frame,就是與變換塊「B「介面相連的立體坐標系)在x,y,z方向上的偏移量,後面的是單位。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

選擇OK然後Simulation > Update Diagram更新流程圖,如下圖,完成了一個剛體平移變換。

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

作者簡介:單雨,90後工科男,偽文藝青年。目前就讀於北京理工大學宇航系,喜歡研究AI,網路爬蟲,微信小程序以及機器人,痴迷於Coding,睡前必擼碼。【End】

58 張圖,手把手教會你 Simscape Multibody 物理建模與剛體變換

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

史上最強最貴Mac Pro誕生,iPadOS 和 iOS 分家!WWDC19 全面總結
從 0 到 1 | 手把手教你如何使用哈工大 NLP 工具——PyLTP

TAG:CSDN |