3. Link 1 회전 정의 (2x2 회전행렬 이용)
Link 1의 회전 행렬을 정의합니다.
회전 행렬을 Link 1의 Point에 곱하여 나온 결과를 다시 Link 1 의 Point에 넣어줍니다.
아래 코드는 Link1 을 30도 회전시키는 코드입니다.
cosd는 60분법 각도를 받아들입니다. d를 제거하면 라디안 각을 받습니다.
theta1=30;
Rotation_Matrix=[cosd(theta1) -sind(theta1);...
sind(theta1) cosd(theta1)];
Link1_a=(Rotation_Matrix*Link1_a');
Link1_b=(Rotation_Matrix*Link1_b');
회전 행렬이 추가된 전체 코드는 아래와 같습니다.
Link1_a=[0 0];
Link1_b=[3 0];
theta1=30;
Rotation_Matrix=[cosd(theta1) -sind(theta1);...
sind(theta1) cosd(theta1)];
Link1_a=(Rotation_Matrix*Link1_a');
Link1_b=(Rotation_Matrix*Link1_b');
Global_Origin=[0 0];
Global_x=[1 0];
Global_y=[0 1];
plot([Global_Origin(1) Global_x(1)],[Global_Origin(2) Global_x(2)],'-r');
hold on
plot([Global_Origin(1) Global_y(1)],[Global_Origin(2) Global_y(2)],'-g');
hold on
plot([Link1_a(1) Link1_b(1)],[Link1_a(2) Link1_b(2)],'-k',...
'Marker','o',...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5]);
hold on
axis([-2 5 -2 5]);
daspect([1,1,1]);
코드를 실행한 결과입니다.
회전하기 전 Link1과 비교하는 코드를 추가해보겠습니다.
Link1_a_old=[0 0];
Link1_b_old=[3 0];
Link1_a=[0 0];
Link1_b=[3 0];
theta1=30;
Rotation_Matrix=[cosd(theta1) -sind(theta1);...
sind(theta1) cosd(theta1)];
Link1_a=(Rotation_Matrix*Link1_a');
Link1_b=(Rotation_Matrix*Link1_b');
Global_Origin=[0 0];
Global_x=[1 0];
Global_y=[0 1];
plot([Global_Origin(1) Global_x(1)],[Global_Origin(2) Global_x(2)],'-r');
hold on
plot([Global_Origin(1) Global_y(1)],[Global_Origin(2) Global_y(2)],'-g');
hold on
plot([Link1_a(1) Link1_b(1)],[Link1_a(2) Link1_b(2)],'-k',...
'Marker','o',...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5]);
hold on
plot([Link1_a_old(1) Link1_b_old(1)],[Link1_a_old(2) Link1_b_old(2)],'--k',...
'Marker','o',...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5]);
hold on
axis([-2 5 -2 5]);
daspect([1,1,1]);
'--k'에서 '--'는 점선을 의미합니다.
코드 실행 결과입니다.
'MATLAB 코딩 > 로봇동역학' 카테고리의 다른 글
<Two Link Manipulator - 2D> 6. 3x3 Translation 함수 정의 (0) | 2019.07.01 |
---|---|
<Two Link Manipulator - 2D> 5. 3x3 Rotation 함수 정의 (0) | 2019.07.01 |
<Two Link Manipulator - 2D> 4. 3x3 Transformation 행렬 설명 (2x2 회전행렬의 한계 극복) (0) | 2019.07.01 |
<Two Link Manipulator - 2D> 2. Link 1 추가하기 (0) | 2019.07.01 |
<Two Link Manipulator - 2D> 1. Global Coordinate System 그리기 (0) | 2019.07.01 |
댓글