Main Content

시스템을 정의하고 레이아웃 만들기

Simulink® 모델의 최상위 시스템 레이아웃은 다수의 엔지니어링 팀이 사용할 수 있는 공통 컨텍스트로, 모델 기반 설계 패러다임에서 적용하는 분석, 설계, 테스트, 구현 같은 다양한 작업의 기반을 제공합니다. 먼저 구조와 개별 컴포넌트를 식별하여 최상위 시스템을 정의합니다. 그런 다음 이러한 컴포넌트를 반영한 계층 구조로 모델을 구성합니다. 마지막으로 각 컴포넌트에 대한 인터페이스와 컴포넌트 간 연결을 정의합니다.

이 튜토리얼에서 소개하는 모델은 가정용 로봇 진공 청소기처럼 두 바퀴를 사용하여 이동하거나 회전할 수 있는 납작한 형태의 로봇입니다. 이 모델은 로봇이 다음 두 방법 중 하나로 이동한다고 가정합니다.

  • 직진 — 두 바퀴가 동일한 속도로 같은 방향으로 돌기 때문에 로봇이 일직선으로 이동합니다.

  • 회전 — 두 바퀴가 동일한 속도로 서로 반대 방향으로 돌기 때문에 로봇이 제자리에서 회전합니다.

A flat circular robot is shown from the top. The center of the circular robot perimeter is the origin of the polar coordinate system. The direction of motion is indicated by the angle theta, which is marked as about 30 degrees above the horizontal axis pointing right. The wheel axis is perpendicular to the direction of motion. The wheels are lined up parallel to the direction of motion.

각 동작 유형은 휴지 상태, 즉 회전 속도와 직진 속도가 모두 0인 상태에서 시작합니다. 이러한 가정을 바탕으로 직진 및 회전 동작의 컴포넌트를 개별적으로 모델링할 수 있습니다.

모델링 목표 결정하기

모델을 설계하기 전에 목표와 요구 사항을 검토해야 합니다. 목표에 따라 모델의 구조와 세부 수준이 결정됩니다. 목표가 단지 로봇이 얼마나 빨리 움직일 수 있는지 파악하는 것이라면 직진 동작만 모델링해도 충분합니다. 장치가 지정된 경로를 따라 움직이도록 일련의 입력을 설계하는 것이 목표라면 회전 동작 컴포넌트가 필요합니다. 장애물을 피하는 것이 목표라면 시스템에 센서가 필요합니다. 이 튜토리얼에서는 로봇이 이동 경로에서 장애물을 감지하면 적시에 멈추도록 센서 파라미터를 설계하는 것을 목표로 모델을 구축합니다. 이 목표를 달성하려면 모델이 다음을 수행해야 합니다.

  • 모터가 정지했을 때 로봇이 얼마나 빨리 정지하는지 확인

  • 로봇이 2차원 공간에서 움직일 수 있도록 직진 및 회전 동작을 위한 일련의 명령을 전달

첫 번째 모델링 목표에서는 동작을 분석할 수 있으며 따라서 센서를 설계할 수 있습니다. 두 번째 목표에서는 설계를 테스트할 수 있습니다.

시스템 컴포넌트 및 인터페이스 식별하기

모델링 요구 사항을 파악했으면 시스템 컴포넌트를 식별하는 작업을 시작할 수 있습니다. 개별 컴포넌트를 식별하고 최상위 구조 내에서 이들 컴포넌트의 관계를 나타내면 복잡한 모델이라도 체계적으로 구축할 수 있습니다. 모델을 구축하기 전에 Simulink 외부에서 다음 단계를 수행해야 합니다.

이 작업에서는 다음 질문에 대한 답을 구해야 합니다.

  • 시스템의 구조적 컴포넌트와 기능적 컴포넌트는 무엇인가? 레이아웃에 물리적 구조와 기능적 구조가 표현되어 있으면 시스템을 이해하고, 시스템에 대한 정보를 전달하며, 시스템을 구축하고 테스트하는 데 도움이 됩니다. 시스템의 여러 부분을 각기 다른 단계의 설계 프로세스에 구현해야 하는 경우 레이아웃의 중요성은 더 커집니다.

  • 각 컴포넌트의 입력과 출력은 무엇인가? 컴포넌트 간 연결을 보여주는 그림을 그리십시오. 이 그림을 통해 모델 내 신호 흐름을 시각화하고, 각 신호의 소스와 싱크를 식별하고, 필요한 컴포넌트가 모두 존재하는지 확인할 수 있습니다.

  • 어느 정도 수준의 세부화가 필요한가? 다이어그램에 주요 시스템 파라미터를 포함시키십시오. 시스템을 그림으로 표현하면 관찰하고자 하는 동작에 필수적인 부분을 식별하여 모델링할 수 있습니다. 모델링 목표에 영향을 미치는 컴포넌트와 파라미터가 모두 모델에 표현되어야 하지만 복잡성과 가독성 사이의 상호 절충이 필요합니다. 모델링은 반복적인 과정일 수 있습니다. 세부 정보가 거의 없는 하이 레벨 모델로 시작하여 필요하면 조금씩 복잡도를 높여갈 수 있습니다.

대개의 경우 다음 사항을 고려하는 것이 도움이 됩니다.

  • 시스템의 어떤 부분에 테스트가 필요한가?

  • 테스트 데이터와 성공 기준은 무엇인가?

  • 분석과 설계를 위해 필요한 출력은 무엇인가?

로봇 동작 컴포넌트 식별하기

이 튜토리얼에서 설명하는 시스템은 2차원에서 2개의 전기 바퀴로 이동하는 로봇을 정의합니다. 여기에는 다음이 포함됩니다.

  • 직진 동작 특성

  • 회전 동작 특성

  • 2차원에서 시스템 위치를 결정하기 위한 변환

  • 로봇과 장애물 사이의 거리를 측정하기 위한 센서

The block diagram lists these components from left to right: force inputs, left wheel, right wheel, rotation computation, coordinate transformation, sensor.

이 시스템의 모델에는 2개의 동일한 바퀴, 바퀴에 가해지는 입력 힘, 회전 동특성, 좌표 변환, 센서가 포함됩니다. 모델은 Subsystem을 사용하여 각 컴포넌트를 표현합니다.

  1. 새 Simulink 모델을 엽니다. 새 모델 열기 항목을 참조하십시오.

  2. 라이브러리 브라우저를 엽니다. Simulink 라이브러리 브라우저 열기 항목을 참조하십시오.

  3. Subsystem 블록을 추가합니다. Ports & Subsystems 라이브러리에서 Subsystem 블록 5개를 새 모델로 끌어서 놓습니다.

  4. 서브시스템을 하나 클릭합니다. 형식 탭에서 자동 드롭다운 목록을 클릭합니다. 자동 블록 이름 숨기기 체크박스의 선택을 해제합니다.

    The Auto drop-down list is expanded. The Hide Automatic Block Names check box is cleared.

  5. 아래와 같이 Subsystem 블록을 정렬하고 블록의 이름을 바꿉니다. 블록 이름을 변경하려면 블록을 더블 클릭하여 텍스트를 편집합니다.

    Five Subsystem blocks have the names: Inputs, Left Wheel, Right Wheel, Rotation, and Coordinate Transformation.

컴포넌트 간 인터페이스 정의하기

서브시스템 간 입력과 출력의 연결을 식별합니다. 입력과 출력의 값은 시뮬레이션하는 동안 동적으로 변화합니다. 블록을 연결하는 선은 데이터 전송을 나타냅니다. 다음 표에 각 컴포넌트의 입력과 출력이 나와 있습니다.

블록입력출력관련 정보
Inputs없음

오른쪽 바퀴에 가해지는 힘

왼쪽 바퀴에 가해지는 힘

해당 없음
Right Wheel오른쪽 바퀴에 가해지는 힘오른쪽 바퀴 속도방향(음수는 반대 방향을 의미함)
Left Wheel왼쪽 바퀴에 가해지는 힘왼쪽 바퀴 속도방향(음수는 반대 방향을 의미함)
Rotation 오른쪽 바퀴와 왼쪽 바퀴 간 속도 차이회전각시계 반대 방향으로 측정됨
Coordinate Transform

정상 속도

회전각

X 방향의 속도

Y 방향의 속도

해당 없음
Sensor

X 좌표

Y 좌표

없음모델링에 필요한 블록 없음

일부 블록 입력은 블록 출력과 정확히 일치하지 않습니다. 따라서, 모델은 개별 컴포넌트의 동특성뿐만 아니라 다음을 계산해야 합니다.

  • 회전 계산에 대한 입력 — 두 바퀴 속도의 차이를 구한 후 2로 나눕니다.

  • 좌표 변환에 대한 입력 — 두 바퀴 속도의 평균을 구합니다.

  • 센서에 대한 입력 — 좌표 변환의 출력을 적분합니다.

바퀴 속도의 크기는 항상 동일하며, 이러한 가정 내에서 계산 결과가 정확합니다.

필요한 컴포넌트를 추가하고 연결을 완성합니다.

  1. 필요한 입력 포트와 출력 포트를 각 서브시스템에 추가합니다. Subsystem 블록을 더블 클릭합니다.

    An Inport block named In1 connects to an Outport block named Out1.

    Subsystem 블록에는 Inport(In1) 블록과 Outport(Out1) 블록이 각각 하나씩 있습니다. 이들 블록은 모델 계층 구조에서 바로 위 수준의 상위 블록과의 신호 인터페이스를 정의합니다.

    Inport 블록은 Subsystem 블록에 입력 포트를 만들고, 각 Outport 블록은 출력 포트를 만듭니다. 모델은 이들 블록의 이름을 입력/출력 포트의 이름으로 반영합니다. 다른 입력 신호와 출력 신호의 블록을 더 추가합니다. Simulink 편집기 도구 모음에서 부모까지 탐색 버튼 을 클릭하여 최상위 수준으로 돌아갑니다.

    각 블록에 대해 Inport 블록과 Outport 블록을 추가하고 이름을 바꿉니다.

    The five Subsystem blocks are shown with previews of the subsystem contents visible. In the Subsystem block named Inputs, Outport blocks named Left force and Right force are visible.

    Inport 블록을 복사하여 새 블록을 만들 때는 붙여넣기(Ctrl+V) 옵션을 사용합니다.

  2. 왼쪽 바퀴 속도 및 오른쪽 바퀴 속도에서 Coordinate Transform 서브시스템 및 Rotation 서브시스템에 대한 필수 입력을 계산합니다.

    1. Coordinate Transform 서브시스템에 대한 직진 속도(Linear speed) 입력을 계산합니다. Math Operations 라이브러리에서 Add 블록을 추가하고 두 바퀴 컴포넌트의 출력을 연결합니다. Gain 블록을 추가하고 이득 파라미터를 1/2로 설정합니다. Add 블록의 출력을 이 Gain 블록에 연결합니다.

    2. Rotation 서브시스템에 대한 속도 차이(Speed difference) 입력을 계산합니다. Math Operations 라이브러리에서 Subtract 블록을 추가합니다. 오른쪽 바퀴 속도를 + 입력과 연결하고 왼쪽 바퀴 속도를 - 입력과 연결합니다. 두 바퀴 컴포넌트의 출력을 연결합니다. Gain 블록을 추가하고 이득 파라미터를 1/2로 설정합니다. Subtract 블록의 출력을 이 Gain 블록에 연결합니다.

      The Subsystem block named Left Wheel is above the Subsystem block named Right Wheel. The input port of both blocks is named Force, and the output port is naemd Speed. Both output port connect to an Add block that connects to a Gain block with the value of 1/2. Both output ports also connect to a Subtract block that subtracts the speed of the left wheel from the speed of the right wheel and then connects to a Gain block with a value of 1/2.

  3. X 방향의 속도와 Y 방향의 속도에서 X, Y 좌표를 계산합니다. Continuous 라이브러리에서 Integrator 블록을 2개 추가하고 Coordinate Transform 블록의 출력을 연결합니다. Integrator 블록의 초기 조건은 0으로 설정된 상태로 둡니다.

    The Subsystem named Coordinate Transform has two input ports, named Linear speed and Angle, and two output ports named X speed and Y speed. Both output ports connect to an Integrator block.

  4. 시스템의 연결을 완성합니다.

    In the completed model, the Subsystem block named Subsystem connects to the Subsystem blocks named Left Wheel and Right Wheel. The wheel subsystems connect to an Add block that connects to a Gain block with the value of ½ that connects to the Subsystem block named Coordinate Transform. The wheel subsystems also connect to a Subtract block that subtracts the left wheel speed from the right wheel speed and connects to a Gain block with the value of ½. The Gain block connects to the Subsystem block named Rotation that connects to the Subsystem block named Coordinate Transform. Both of the output ports of the Coordinate Transform subsystem connect to an integrator block.

파라미터와 데이터

모델에 포함되는 파라미터와 해당 값을 결정합니다. 모델링 목표를 사용하여 이러한 값이 일정하게 고정되는지 아니면 시뮬레이션마다 변화하는지 확인합니다. 모델링 목표에 영향을 미치는 파라미터는 모델에 명시적으로 표현해야 합니다. 다음 표를 참고로 각 컴포넌트의 모델링에 적용할 세부 수준을 결정할 수 있습니다.

파라미터블록기호유형
질량

Left Wheel

Right Wheel

m2.5kg 변수
구름 저항

Left Wheel

Right Wheel

k_drag30Ns2/m변수
로봇 반지름Rotationr0.15m변수
초기 각도Rotation없음0rad고정
초기 속도

Left Wheel

Right Wheel

없음

0m/s

0m/s

고정
초기 (X, Y) 좌표Integrator없음(0, 0)m고정

Simulink는 MATLAB® 작업 공간을 사용하여 파라미터를 계산합니다. MATLAB 명령 창에서 다음 파라미터를 설정하십시오.

m = 2.5;
k_drag = 30;
r = 0.15;

관련 항목