Simulink에서 시스템 설계하기
모델 기반 설계 패러다임은 물리적 구성요소와 시스템의 모델에 중점을 두며 설계, 테스트, 구현 활동의 기반을 제공합니다. 이 튜토리얼에서는 구성요소를 설계하여 기존 시스템 모델에 추가합니다.
시스템 모델 열기
이 모델은 가정용 로봇 진공 청소기처럼 두 바퀴를 사용하여 이동하거나 회전할 수 있는 납작한 형태의 로봇입니다. MATLAB® 명령줄에 다음을 입력하여 모델을 엽니다.
open_system('system_model.slx')
이 튜토리얼에서는 이 시스템을 분석하고 여기에 기능을 추가합니다.
설계한 구성요소와 설계 목표 식별하기
설계 목표를 지정하는 것은 설계 작업에서 중요한 첫 단계입니다. 단순한 시스템이라도 설계 목표가 여러 개 있을 수 있고, 심지어 서로 경합 관계에 있을 수도 있습니다. 이 예제 모델에서는 다음과 같은 목표를 고려할 수 있습니다.
바퀴가 원하는 속도로 돌아가도록 힘 입력에 변화를 주는 제어기를 설계합니다.
장치가 미리 정해진 경로로 이동하도록 하는 입력을 설계합니다.
장치가 선을 따라 이동하도록 센서와 제어기를 설계합니다.
장치가 장애물을 피하면서 가능한 한 최단 경로를 사용하여 특정 지점에 도달하도록 계획 알고리즘을 설계합니다.
장치가 장애물을 피하면서 특정 지점으로 이동하도록 센서와 알고리즘을 설계합니다.
이 튜토리얼에서는 경고 시스템을 설계합니다. 장애물과의 거리를 측정하는 센서의 파라미터를 결정해야 합니다. 완벽한 센서는 장애물과의 거리를 정확하게 측정합니다. 경고 시스템은 이러한 측정값을 고정 간격으로 샘플링하여 출력이 항상 측정값 오차 0.05m 이내에 있도록 합니다. 이 시스템은 로봇이 장애물에 부딪히기 전에 정지할 수 있도록 적시에 경고를 생성합니다.
시뮬레이션을 통해 시스템 동작 분석하기
새 구성요소를 설계하려면 로봇의 직진 동작을 분석하여 다음을 확인해야 합니다.
바퀴에 제공되는 전력이 끊겼을 때 로봇이 최고 속도로 이동할 수 있는 거리
로봇의 최고 속도
모델을 실행합니다. 이 모델은 힘 입력을 받으면 동작을 시작하고 로봇이 정상 속도에 도달할 때까지 기다리다가 입력 힘을 0으로 설정합니다.
모델에서 Inputs 서브시스템을 더블 클릭합니다.
기존 스텝 입력을 삭제하고 Pulse Generator 블록을 추가합니다.
다음과 같이 Pulse Generator 블록에 대한 파라미터를 설정합니다.
진폭:
1
기간:
20
펄스 폭:
15
이 파라미터는 최고 속도에 도달할 수 있도록 설계되었습니다. 파라미터를 변경하여 영향을 확인할 수 있습니다.
모델을 20초 동안 실행합니다.
첫 번째 스코프는 시간 3
에서 전력이 끊겼을 때 속도가 빠르게 감소하기 시작하는 것을 보여줍니다. 그런 다음 속도가 점근적으로 0에 접근하지만, 0에 완전히 도달하지는 않습니다. 이것이 모델링의 한계입니다. 외부 힘이 작용하지 않는 느린 속도에서의 동특성은 보다 복잡한 표현이 필요합니다. 하지만 현재 목표에서는 근사가 가능합니다. 위치 신호를 확대합니다.
시간 3
에서 로봇의 위치는 약 0.55m입니다. 시뮬레이션이 종료될 때 위치는 0.71m보다 작습니다. 전력이 끊긴 후 로봇이 이동한 거리는 0.16m에 못 미친다고 말할 수 있습니다.
최고 속도를 구하려면 다음을 수행하십시오.
시간 1초~3초에서 속도 출력이 안정적인 부분을 확대합니다.
확대/축소 버튼을 다시 클릭하여 확대/축소 모드에서 나갑니다. 커서 측정 버튼
을 클릭합니다.
두 번째 커서를 속도 곡선이 평평한 부분에 둡니다.
커서 측정 패널의 값 열에 로봇의 최고 속도가 0.183m/s으로 표시됩니다. 로봇이 0.05m 이동하는 데 걸리는 시간을 계산하기 위해 0.05m를 0.183m/s로 나눕니다. 결과로 0.27초가 나옵니다.
구성요소를 설계하고 설계 검증하기
센서 설계는 다음 구성요소로 이루어집니다.
로봇과 장애물과의 거리에 대한 측정값 — 이 예제에서는 측정값이 완벽하다고 가정합니다.
경고 시스템에서 거리를 측정하는 시간 간격 — 측정값 오차를 0.05m 미만으로 유지하려면 이 샘플링 간격이 0.27초보다 작아야 합니다. 0.25초를 사용하겠습니다.
센서가 경고를 생성하는 거리 — 분석에 따르면 장애물에서 0.16m 떨어진 지점부터 감속을 시작해야 합니다. 실제 경고 생성 거리는 개별 측정값들의 오차 0.05m도 고려해야 합니다.
설계한 구성요소 추가하기
센서를 구축합니다.
아래와 같이 포트를 갖는 서브시스템을 만듭니다.
거리 측정 서브시스템을 생성합니다. Sensor model 블록에서 아래와 같이 Subtract, 함수
magnitude^2
을 사용하는 Math Function, Sum, Sqrt 블록을 사용합니다. 입력 포트의 순서가 변경된 것에 유의하십시오.모델에 대해 샘플링을 수행합니다. Discrete 라이브러리에서 Zero-Order Hold 블록을 서브시스템에 추가하고 샘플 시간 파라미터를
0.25
로 설정합니다.경고 논리를 모델링합니다. Logic and Bit Operations 라이브러리에서 Compare to Constant 블록을 추가하고 파라미터를 다음과 같이 설정합니다.
연산자:
<=
상수 값:
0.21
출력 데이터형:
boolean
이 논리형 블록은 입력이
0.21
보다 작거나 같으면 출력을1
로 설정합니다.블록 연결을 마무리합니다.
설계 검증하기
Constant 블록을 Sensor model 서브시스템에 대한 입력으로 사용하고 장애물 위치 X = 0.65, Y = 0을 설정하여 설계를 테스트합니다. 이 테스트에서는 X 방향에서의 설계 기능을 검증합니다. 다른 경로에 대해 유사한 테스트를 만들 수 있습니다. 이 모델은 경고 생성만 합니다. 로봇을 제어하지는 않습니다.
장애물 위치를 설정합니다. Sources 라이브러리에서 Constant 블록을 2개 추가하고 상수 값을
0.65
및0
으로 설정합니다. 로봇의 위치 출력을 센서의 입력에 연결합니다.Alert 출력에 스코프를 추가합니다.
모델을 실행합니다.
로봇 위치가 장애물 위치로부터 0.21m 이내로 들어왔을 때 경고 상태가 1
이 되며 이 구성요소의 설계 요구 사항이 충족되는 것을 확인할 수 있습니다.
정형적으로 명세된 요구 사항이 있고 복잡한 구성요소를 갖는 실제 시스템을 지원하기 위해 Simulink® 제품군에는 설계 프로세스를 보다 세부적으로 조정하고 자동화하는 툴이 추가로 포함되어 있습니다. Requirements Toolbox™는 요구 사항을 정형적으로 정의하고 이를 모델 구성요소와 연결하는 툴을 제공합니다. Simulink Control Design™은 로봇 제어기를 구축할 때 설계를 용이하게 해줍니다. Simulink Verification and Validation™ 제품은 구성요소와 시스템 테스트를 위한 정형적 프레임워크를 설정합니다.