본문 바로가기
반응형

로봇동역학8

<Two Link Manipulator - 2D> 8. Link1 회전 정의하고 움직이기 8. Link1 회전 정의하고 움직이기 이번에는 5,6,7번 강의에서 정의한 함수들을 사용 Link1에 모션을 주겠습니다. "3. Link 회전 정의하기"의 코드를 수정하였습니다. 비교하면서 보시면 이해가 쉬울겁니다. for 문을 추가하여 Link에 모션을 주었습니다. 수정한 코드는 빨간색으로, 이전과 동일한 코드는 파란색입니다. pause(0.2) 코드는 0.2초 정지한다는 뜻입니다. theta1=[0 5 10 15 20 25 30 35 40 45 50 55 60 55 50 45 40 35 30 35 40 45 50 55 60 65 70 65 60 55 50 45 40 35 30];size_theta=size(theta1);t_f=size_theta(1,2); for t=1:1:t_f Link1_a=[.. 2019. 7. 1.
<Two Link Manipulator - 2D> 7. Rotation, Translation 행렬을 Point에 곱해주는 합수 정의 7. Rotation, Translation 행렬을 Point에 곱해주는 합수 정의 Point에 3x3 Rotation matrix나 Translation matrix를 곱하여 Point를 회전시키거나 이동시킬 때,(점의 특성상 Point 자체의 회전운동은 정의되지 않습니다. 이 맥락에서는 원점중심의 회전을 의미한다.)행렬 곱을 수행하기 위해 [x y]를 [x y 1]로 바꿔주어야 하고, 결과로 나온 [x' y' 1]에서 1을 제거하여 다시 Point로 만들어 주어야 합니다. (아래 그림 참고)이 과정을 매번 코드로 나타내는 것은 비효율적이기 때문에 함수로 정의해서 사용하려고 합니다. 코드는 아래와 같습니다. function y=TwoD_RTP(Matrix,Point); Point_1x3=[Point(1.. 2019. 7. 1.
<Two Link Manipulator - 2D> 6. 3x3 Translation 함수 정의 6. 3x3 Translation 함수 정의 x,y축으로 움직일 거리를 을 입력하면Translation matrix를 만들어 주는 matlab 함수를 정의해 봅시다. unction y=TwoD_TMat(a,b); y=...[... 1 0 a;... 0 1 b;... 0 0 1;... ]; 함수는 m파일로 저장합니다.해당 m파일이 들어있는 폴더를 matlab 경로에 추가해줍니다. 함수를 한번 사용해보겠습니다. x축으로 3만큼, y축으로 2만큼 회전시키는 3x3 Translation matrix를 만들어 봅시다. a=3;b=2TMat1=TwoD_TMat(3,2) 코드를 입력한 결과입니다. 2019. 7. 1.
<Two Link Manipulator - 2D> 5. 3x3 Rotation 함수 정의 5. 3x3 Rotation 함수 정의Rotation angle θ 을 입력하면Rotation matrix를 만들어 주는 matlab 함수를 정의해 봅시다. function y=TwoD_RMat(Theta); y=Rotation_Matrix =...[... cosd(Theta) -sind(Theta) 0;... sind(Theta) cosd(Theta) 0;... 0 0 1;... ]; 함수는 m파일로 저장합니다.해당 m파일이 들어있는 폴더를 matlab 경로에 추가해줍니다. 함수를 한번 사용해보겠습니다. 30도 회전시키는 3x3 Rotation matrix를 만들어 봅시다. Theta=30;RotMat1=TwoD_RMat(Theta) 코드를 입력한 결과입니다. 2019. 7. 1.
<Two Link Manipulator - 2D> 4. 3x3 Transformation 행렬 설명 (2x2 회전행렬의 한계 극복) 4. 3x3 Transformation 행렬 설명 (2x2 회전행렬의 한계 극복) 이전 강의에서 회전행렬을 2x2로 정의했습니다. 링크가 하나이고 Origin에 연결되어 있는 경우에는 상관이 없지만Rotation과 함께 Translation이 발생하는 경우 굉장히 불편해 집니다. 예를들어 어떤 Point가 30도 회전하고 (2,3)만큼 움직이고 30도 회전하고 (5,4)만큼 움직이고 다시 30도 회전했다고 해 봅시다. 이를 수식으로 표현하면 아래와 같이 다중 괄호로 되어 있습니다. 다물체 동역학에서는 '역 과정'을 구해야 하는 경우가 있는데 수식이 다중 괄호로 되어 있으면 이를 전부 전개해서 풀어야 합니다. 이러한 한계를 극복하기 위해 등장한 것이 3x3 Transformation 행렬입니다. 굉장히 놀.. 2019. 7. 1.
<Two Link Manipulator - 2D> 3. Link 1 회전 정의 (2x2 회전행렬 이용) 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 .. 2019. 7. 1.
<Two Link Manipulator - 2D> 2. Link 1 추가하기 2. Link 1 추가하기 지난 강의에서 만들었던 Global Coordinate System에 Link 1 을 추가해 보도록 하겠습니다. Link 1 의 길이는 3으로 설정하였습니다. Link1_a=[0 0];Link1_b=[0 3]; 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 axis([-2 5 -2 5]);daspect([1,1,1]); plot 기능을 사용하여 링.. 2019. 7. 1.
<Two Link Manipulator - 2D> 1. Global Coordinate System 그리기 1. Global Coordinate System 그리기 두개의 링크로 구성된 로봇 팔을 메트랩으로 표현해보고 회전 행렬을 이용해서 움직이는 예제입니다. 먼저 글로벌 좌표계를 그려보도록 하겠습니다. 매트랩 코드는 빨간색 글씨로 되어있습니다. 먼저 세 점을 정의합니다. Global_Origin=[0 0]; Global_x=[1 0];Global_y=[0 1]; plot 기능을 사용하여 좌표계를 그려줍니다. 원점과 (1,0)을 연결하여 x축을 만들고원점과 (0,1)을 연결하여 y축을 만듭니다. x축은 빨간색 선으로, y축은 녹색 선으로 설정합니다. '-r' 에서 - 는 실선을 의미하고 r은 red를 의미합니다. Global_Origin=[0 0]; Global_x=[1 0];Global_y=[0 1]; pl.. 2019. 7. 1.
반응형