1.4 Getting Data with MATLAB
1.4.1 Transform Sensor
실제 환경에서 데이터를 얻기 위해서는 센서가 필요. 시뮬레이션도 마찬가지.
Simscape > Multibody > Frames and Transforms > Transform Sensor
Transform Sensor
는 backward에서 forward 방향으로 데이터를 측정한다.
World 기준으로, trajectory에 관한 정보를 얻기 위해 Translation
의 $x$, $y$, $z$를 모두 체크한다.
Backward는 world frame에, forward는 우리가 알고자하는 위치에 연결한다.
그런데, 이렇게 얻은 데이터는 Physical Data이므로, 이를 Simulink 상에서 확인하기 위해서는 PS-Simulink Converter
가 필요하다.
1.4.2 Workspace에 데이터 기록
Scope > 속성 > 기록 > 작업 공간에 데이터 기록
위 항목을 체크하고, 변수 이름을 설정한다. 저장 형식은 Structure with Time
을 택한다.
1.4.3 Communication with MATLAB
이렇게 얻은 데이터를 MATLAB으로 가져와 출력하고자 한다.
적당한 .m
파일을 만든다. 단, .slx
파일과 같은 작업공간 내에 있어야 한다.
%Set the length of each link
l1 = 1;
l2 = 0.4;
l3 = 0.8;
l4 = 0.8;
%Run simulation to get the result
result = sim('Getting_data') %the name of simulink model
x = result.xyz_pos.signals(1).values;
y = result.xyz_pos.signals(2).values;
z = result.xyz_pos.signals(3).values;
%Get the trajectory of the coupler
plot(x,z)
hold on
title Trajectory
xlabel 'X position'
ylabel 'Y position'
grid on
axis equal
%Save it
위 코드는 simulink model로부터 position 데이터를 얻어와 플로팅하는 내용을 담고 있다. 실행하기에 앞서, simulink의 모든 링크 길이를 $l1$, $l2$, $l3$, $l4$로 수정해야 한다. 또한 Rigid Transform
역시 수정.
저장한 뒤 MATLAB을 실행한다.
이렇게 환경이 다양하게 변하는 시스템을 MATLAB과 communication하며 실행할 수 있다.
1.4.4 Simulation 녹화
Mechanics Explorers > Tools > Video Creator