MATLAB에서 강체 모델링하기
이 예제는 Simscape Multibody의 MATLAB 클래스를 사용하여 강체를 만드는 방법을 보여줍니다. 이 예제에서는 4절 링크 시스템의 링크를 생성하고, 링크의 기하 구조, 질량 분포, 시각적 속성을 정의합니다. 그런 다음, 다른 프레임과 컴포넌트와 연결할 수 있도록 링크에 프레임과 커넥터를 추가합니다.
이 링크는 끝이 둥근 사각 단면을 가지며, 양 끝에 2개의 프레임 커넥터가 있습니다.

클래스의 네임스페이스 이름을 입력할 필요가 없도록 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]
DoVisualize: 1
FrameConnectors: [0×1 string]
이 객체에는 1개의 기준 프레임이 있고 커넥터는 없습니다.
링크 바디 생성하기
링크의 바디를 생성하려면 simscape.multibody.Solid 클래스를 사용하십시오. 바디의 기하 구조, 질량 분포, 시각적 속성을 지정할 수 있습니다. 위의 이미지에 표시된 것처럼 링크의 길이는 10cm, 너비는 2cm, 높이는 1cm이며, 길이의 방향은 로컬 기준 프레임의 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
이 예제에서는 하드 코딩된 값을 사용하여 링크의 너비와 높이를 각각 2cm와 1cm로 설정합니다.
링크는 알루미늄으로 만들어졌으며 파란색입니다. 링크의 질량 분포와 색을 지정하려면 simscape.multibody.UniformDensity 클래스와 simscape.multibody.SimpleVisualProperties 클래스를 사용합니다.
mass = UniformDensity(Value(2700,"kg/m^3"));
color = SimpleVisualProperties([0 0 1]);
body = Solid(geometry,mass,color);link 객체의 기준 프레임에 바디를 추가하기 위해, addComponent 메서드를 사용합니다.
addComponent(link,"Body","reference",body);
프레임과 커넥터 추가하기
이제 RigidBody 객체에 프레임과 커넥터를 추가합니다. RigidBody 객체는 다른 프레임 또는 컴포넌트와 연결하기 위해 프레임 커넥터를 사용합니다.
link 객체는 바디 중심에 기준 프레임이 있으며, 이는 트리 구조의 루트 역할을 합니다. link 객체에 새로운 프레임을 추가할 때는 simscape.multibody.RigidTransform 클래스를 사용하여 기준 프레임을 기준으로 위치를 지정해야 합니다. 각 프레임의 이름은 고유해야 합니다.
addFrame 메서드를 사용하여 링크의 양 끝에 프레임을 추가하고, 이름은 각각 neg_end와 pos_end로 지정합니다. 링크의 축은 로컬 기준 프레임의 x축을 따릅니다.
offset = length/2; addFrame(link,"neg_end","reference",RigidTransform(StandardAxisTranslation(offset, Axis.NegX))); addFrame(link,"pos_end","reference",RigidTransform(StandardAxisTranslation(offset, Axis.PosX)));
다른 프레임 또는 컴포넌트와 연결하려면, 프레임이 프레임 커넥터로 동작해야 합니다. 하지만 새로 생성된 RigidBody 객체는 처음에는 커넥터가 없습니다. 프레임을 프레임 커넥터로 노출하기 위해, addConnector 메서드를 사용합니다.
addConnector(link,"neg_end"); addConnector(link,"pos_end");
link 객체의 구조 트리를 보기 위해, plotStructure 메서드를 사용합니다.
plotStructure(link);

이 플롯은 link 객체에 1개의 솔리드 바디와 3개의 프레임이 있음을 보여줍니다.
참고 항목
simscape.multibody.Solid | simscape.multibody.RigidBody