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);

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