MATLAB
Simulink 3D Animation을 이용한 MPU6050 가속도 센서의 visualization(#2)
jisungjay
2023. 12. 30. 15:22
요구사항 1번에 대해 구현해보겠습니다.
1. MATLAB 스크립트와 3d simulation 툴을 이용해 3D object를 구현할 수 있으며 움직임을 구현할 수 있다.. (입력: x,y,z축의 값/ 출력: 3D animation)
Matlab editor 상에서 오른쪽위 실행버튼 또는 F5키를 눌러 실행할 수 있습니다.
clear;
clc;
% Define world
world = sim3d.World();
viewport = world.createViewport();
viewport.Translation = [-6,0,0];
% Define Actor
actor1 = sim3d.Actor();
actor1.createShape('box', [2 0.5 1]);
actor1.Rotation = [0,0,1];
actor1.Color = [1, 0, 1];
actor1.Mobility = sim3d.utils.MobilityTypes.Movable;
% add actor to the world
add(world,actor1);
% start 3d animation
run(world,0.1,inf);
a=0;
val=0;
while true
if a == 10000000
a=0;
propagate(actor1,"Rotation",[val,val,val])
val= val + 0.005*pi;
if val > 2*pi
val = 0;
end
else
a=a+1;
end
end
- Define world 부분에서는 3d animation이 실행되는 환경을 구현하게 됩니다. 또한 viewport를 통해 3인칭 시점의 좌표를 지정해줄 수 있습니다.
- Define actor 부분에서는 실제 움직이는 object에 대한 정의를 하게됩니다. object의 모양('box'), 색깔, 초기 회전 방향, 움직임에 대한 enable 여부 등의 parameter를 설정합니다.
이후에 actor를 world에 추가하고 run하게 되면 3d animation이 실행되는 것을 볼 수 있습니다.
뒤의 while문에서는 단순히 물체를 회전시키기 위해 rotation이 되는 value값을 setting하고 있습니다. x, y, z 방향으로 2*pi 만큼 돌면 한바퀴를 돌게 됩니다.
다음 포스팅에서는 실제로 serial port로부터 값을 가져와 object에 회전값을 주는 부분까지 진행해보겠습니다.