clc; clear;
% link별 DH 파라미터 입력
L(1) = Link([0 0.5 0 pi/2 0]); % 5번째 파라미터 0 추가 (revolute joint)
% theta, d , a, alpha, , prismatic_onoff
% theta=0 일 때 변수
L(2) = Link([0 0 0 0 1]); % prismatic joint
L(2).offset = 0.5; % prismatic joint에도 offset을 설정 가능
% Serial Link를 가진 로봇 생성
Arm2D = SerialLink(L, 'name', '2DOF serial2');
% 특정 각도에 대한 로봇 자세 출력
W = [-1 1 -1 1 -1 2];
Arm2D.plot([0 0], 'workspace', W); % Prismatic joint가 있을 경우 workspace를 수동 입력해야 한다.
% 도궤적에 대한 로봇 자세 출력
q = zeros(100,2);
for n = 1:100
t = n/10;
q(n,1) = pi/4 * sin(2*pi*(t/3));
q(n,2) = max(0.1, -0.5 * sin(2*pi*(t/3)) + 0.5); % prismatic joint 최소값 제한
end
Arm2D.plot(q, 'workspace', W);
ex2
clear all;
% link별 DH 파라미터 입력
L(1) = Link([0 0.5 0 -pi/2]); % 5번째 값에 1을 넣으면 prismatic joint
L(2) = Link([0 0 0 0 1]); % prismatic joint에도 offset을 설정 가능
L(2).offset = 0.5;
L(3) = Link([0 1 0 0]);
% L(3).offset = -pi/2;
% Serial Link를 가진 로봇 생성
Arm2D = SerialLink(L, 'name', '2DOF serial2');
% 특정 각도에 대한 로봇 자세 출력
W = [-3 3 -1 3 -3 3];
Arm2D.plot([0 0.5 0], 'workspace', W); % Prismatic joint가 있을 경우 workspace를 수동으로 입력해야 한다.
% 각도궤적에 대한 로봇 자세 출력
q = zeros(100,3);
for n = 1:100
t = n/10;
q(n,1) = pi/4 * sin(2*pi*(t/3));
q(n,2) = -0.5 * sin(2*pi*(t/3)) + 0.5; % prismatic joint는 0보다 커야 함
q(n,3) = pi/4 * sin(2*pi*(t/3));
end
Arm2D.plot(q, 'workspace', W, 'raise');
ex4
clear all;
% link별 DH 파라미터 입력 셋타 디 에이 알파
L(1) = Link([0 0 0 -pi/2]); L(1).offset = -pi/2;
L(2) = Link([0 1 0.5 0]); L(2).offset = -pi/2;
L(3) = Link([0 0.2 0.2 0 ]); L(3).offset = 0;
% Serial Link를 가진 로봇 생성
Arm2D = SerialLink(L, 'name', '2DOF serial1');
% Base HT 입력, Tool HT는 자동으로 Identity 행렬임
Arm2D.base = [0 1 0 0; -1 0 0 0; 0 0 1 0; 0 0 0 1];
% 특정 자세에 대한 로봇자세 출력
Arm2D.plot([0 0 0]);
0 Comments