メインコンテンツ

MATLAB での剛体のモデル化

R2026b

この例では、Simscape™ Multibody™ の MATLAB® クラスを使用して剛体を作成する方法を示します。

  • 4 節リンク機構のリンクを作成します。

  • リンクのジオメトリ、質量分布、および視覚特性を定義します。

  • 他のコンポーネントを取り付けるため、リンクにフレームとコネクタを追加します。

このリンクは、両端が丸みを帯びた矩形断面をもち、両端に 1 つずつのフレーム コネクタを備えています。

クラスの名前空間名を入力せずに済むようにするには、import関数を使用します。

import simscape.Value simscape.op.* simscape.multibody.*;

剛体オブジェクトの作成

リンクを表すsimscape.multibody.RigidBodyオブジェクトを作成します。RigidBody オブジェクトは、剛結合された複数のフレームとコンポーネント オブジェクトを格納できる階層コンテナーです。この例では、RigidBody オブジェクトに、2 つの端部フレーム コネクタをもつ 1 つの剛体ソリッドが含まれます。

link という名前の RigidBody オブジェクトを作成するには、simscape.multibody.RigidBodyクラスを使用します。

link = RigidBody
link = 
  RigidBody:

  No connectors.

  Frames:

  Frame        Parent  Source  Connector?
  ___________  ______  ______  __________

  "reference"  --      --      No        

  No components.

  RigidBody with properties:

         FrameNames: "reference"
     ComponentNames: [0×1 string]
    FrameConnectors: [0×1 string]

このオブジェクトは、1 つの基準フレームと 0 個のコネクタをもつ状態で開始します。

リンク ボディの作成

リンク ボディを作成するには、simscape.multibody.UniformSolid クラスを使用します。ジオメトリ、質量分布、および視覚特性を指定します。リンクの長さは 10 cm、幅は 2 cm、高さは 1 cm です。長さ方向は、ローカル基準フレームの x 軸に沿っています。

寸法を定義するには、simscape.Valueオブジェクトを使用します。

length = Value(10,"cm");
width = Value(2,"cm");
height = Value(1,"cm");

リンクは、両端が丸みを帯びた矩形断面をもちます。ボディのジオメトリを定義するには、roundedRect 関数で指定したカスタム断面を使用してsimscape.multibody.GeneralExtrusionクラスを使用します。

geometry = GeneralExtrusion(roundedRect(length,width),height);
function cross_section = roundedRect(length,width)
angles = (-90:10:+90)' * pi/180;
semi = width/2 * [cos(angles) sin(angles)] + repmat([length/2 0], size(angles));
cross_section = [semi; -semi];
end

リンクの色とボディの密度を指定するには、simscape.multibody.SimpleVisualPropertiesクラスと UniformSolid クラスを使用します。

color = SimpleVisualProperties([0 0 1]);
sg = SurfaceGraphic(color);
geometry.SurfaceGraphic = sg;
density = Value(2700,"kg/m^3");
body = UniformSolid(geometry,density);

ボディを link オブジェクトの基準フレームに追加するには、addComponentメソッドを使用します。

addComponent(link,"Body","reference",body);

フレームとコネクタの追加

次に、RigidBody オブジェクトにフレームとコネクタを追加します。RigidBody オブジェクトでは、他のフレームやコンポーネントに接続するためにフレーム コネクタを使用します。

link オブジェクトには、ボディの重心に配置された基準フレームがあり、このフレームがツリー構造のルートとして機能します。リンク オブジェクトに新しいフレームを追加する場合は、simscape.multibody.RigidTransformクラスを使用して、基準フレームに対する位置を指定する必要があります。各フレームに一意の名前が付いていることを確認します。

addFrameメソッドを使用してリンクの両端にそれぞれフレームを追加し、neg_end および pos_end という名前を付けます。リンクの軸は、ローカル基準フレームの x 軸に沿っています。

offset = length/2;
addFrame(link,"neg_end","reference",RigidTransform(StandardAxisTranslation(offset, "-X")));
addFrame(link,"pos_end","reference",RigidTransform(StandardAxisTranslation(offset, "+X")));

他のフレームまたはコンポーネントに接続するには、フレームがフレーム コネクタとして機能する必要があります。ただし、新しく作成した RigidBody オブジェクトには、初期状態ではコネクタがありません。フレームをフレーム コネクタとして公開するには、addConnectorメソッドを使用します。

addConnector(link,"neg_end");
addConnector(link,"pos_end");

link オブジェクトの構造ツリーを表示するには、plotStructureメソッドを使用します。

plotStructure(link);

Figure contains an axes object. The axes object contains 5 objects of type line, graphplot. One or more of the lines displays its values using only markers These objects represent Frame, UniformSolid, Rigid Transform, Connection.

プロットから、link オブジェクトに 1 つのソリッド ボディと 3 つのフレームがあることがわかります。

参考

| |

トピック