mindstorms_with_matlab_logo.png



안녕하세요? 핸섬 교주 LGS입니다.

이번 시간에는 LEGO 마인드 스톰으로 SCARA(Selective Compliance Assembly Robot Arm) Robot을 만들어 보겠습니다.

SCARA 로봇이 어떤 녀석이냐구요? 아래 동영상을 잠시 감상하시죠~ ^^




수직방향의 자유도는 뺀 2 DOF(Degree Of Freedom 자유도) SCARA Robot을 만들 거예요

우선 SCARA 로봇을 도식적으로 나타내겠습니다.

SCARA Robot을 위에서 보면 아래 그림처럼 될거구요~

로봇팔의 끝(빨간색 팔의 끝)을 End-Effector라고 합니다. 보통 End-Effector에는 각종 도구를 답니다.

물건을 집을 수 있는 집게손이라든지, 위의 동영상에 나온것 처럼 진공을 이용한 Picker라든지...

scara_LGS01.png

이번시간에는 Kinematics에 대해서만 이야기하고 강의를 마치겠습니다. ^^

Kinematics 키네마틱스는 또 뭐다냐?? 하시는분을 위해 간단히 Kinematics에 관해 설명드리겠습니다.


vfleiS9iJP0OmKXvpWgwrKVALRJU9sn7Zt0YmBnVFgvhCi6fmMDqsixW_7nzDeCcpYzZK8ZiH0RidQIwsgyhp6tOXUdaEEWGapE5tDKGhJ2XRLApaNw


Mechanics를 분류하는 방법에는 여러가지가 있습니다만 가장 크게 분류하자면 

뉴턴(Newton) 아저씨가 시작한 고전 역학(Classical Mechanics)과 

고전 역학으로 설명할 수 없었던 물리현상들을 설명하기 위해 1900년대에 나타난 양자역학(Quantum Mechanics)으로 나눌 수 있습니다.


고전역학은 비교적 큰 크기의 물체가 비교적 느린속도록 움직일 때 기가막히게 잘 맞아 떨어집니다.

비교적이라는 말은 양자역학에 비해서 비교적이라는 말입니다. 

예를 들어 고전역학에서는 빛의 속도(30만km/s)에 준하는 속도로 움직이는 물체는 다루지 않습니다.


Classical Mechanics를 다시 크게 분류하면 Statics(정역학 靜力學)과 Dynamics(동역학 動力學)로 나눌 수 있구요.

Statics는 말 그대로 정지해 있는 물체에 대한 학문이고(정역학의 정자가 고요할 정靜), 

Dynamics는 움직이는 물체에 대한 학문입니다.

공부의 순서를 보면 Statics에 대한 이해를 바탕으로 Dynamics로 나아갑니다.




scara_LGS05.png 


Dynamics를 또다시 둘로 쪼개면 Kinematics와 Kinetics로 나눌 수 있습니다

Kinematics는 힘, 역학(力學),관성, 중력 이런거 전혀 신경쓰지 않고 오로지 각도와 위치에만 관심을 두는 학문입니다.

예를 들어 위의 SCARA Robot 같은 경우 로봇팔 관절의 각도 θ1과 θ2가 주어지면 End-Effector의 위치를 계산할 수 있습니다.

위와 같이 관절의 각도,위치(Joint Space)로부터 End-Effector의 (Reference Frame으로 부터의 )절대적 위치를 계산하는 것을 

Forward Kinematics라고 합니다.

반대로 End_Effector의 위치를 주고 각 관절의 각도를 역으로(Inverse) 계산해내는 것을 Inverse Kinematics라 그러구요


반면 Kinetics는 Kinematics에서 고려하지 않았던 역학에 대한 고려를 포함 시킵니다.

간단하게 말해서 End-Effoctor의 위치를 일정하게 유지하려면 각 관절에 힘(토크)를 얼마나 주어야하는가? 에 대한 질문에 

대답하는 것이 Kinetics입니다. (중력때문에 관절에 토크를 가하지 않으면 원하는 위치를 유지할 수 없습니다.)


Robot Control의 큰 흐름을 보면 Forward Kinematics --> Inverse Kinematics --> Kinetics (Dynamics) --> Control Theory의 순서로 진행이 됩니다.

이번시간에는 이 Kinematics중에서도 Forward Kinematics에 대해서 알아보겠다는 말씀.. ^^

Kinematics를 푸는 방법에도 여려가지가 있습니다.

가장  간단하게 종이와 연필로 그림을 그려서 삼각함수의 sin cos 법칙을 이용 기하학적으로 푸는 방법이 있습니다.


scara_LGS06.png

간단히 cos과 sin으로 x,y의 위치를 계산할 수 있습니다.


scara_LGS07.png 

 

그러나 기하학적 방법은 Link(로봇의 팔)의 개수가 늘어나기 시작하면 식이 매우 길어지고 복잡해지기 시작합니다.

기하학적 방법말고 좀더 세련된 방법으로 Matrix(행렬)이용하는 방법이 있습죠~ o(^o^)o


2차원 평면상에서 어떤 물체를 기술할 때 2가지의 정보가 필요합니다.

그 물체가 어디에 있는가?(위치 Position)와 그 물체의 자세(방향 Orientation)은 어떻게 되어 있는가 이 두가지만 있으면

2차원 평면상에서 그 물체를 정확히 표현할 수 있습니다.


scara_LGS09.png  

위와 같이 임의의  위치와 방향(각도)를 가지는 물체에 붙에었는 좌표계를 표시하기 위한 matrix를 Transfomation Matrix라고 합니다.

Transformation Matrix는 아래처럼 생겼구요


scara_LGS10.png 

물체의 위치(즉 물체에 붙어 있는 좌표계의 원점의 위치)는 x,y로 나타낼 수 있고

물체의 자세(즉 물체에 붙어 있는 좌표게의 각도)는 sin과 cos으로 나타날 수 있습니다.(방향코사인)

Transformation Matrix를 큰 구획으로 나누어보면 Translation Matrix와 Rotation Matrix 부분으로 나누어 집니다.


scara_LGS15.png  


Translation Matrix는 회전 없이 상하좌우의 위치를 나타내는 Matrix입니다.

scara_LGS04.png

평면상에서 어떤 점 x, y를 dx, dy만큼 움직이고 싶다면 Translation Matrix를 곱해주시면 되요.

너무 간단해서 설명드릴 것이 없네요 ^^;; 직접 Matrix를 곱해보시면 x,y에 있는 점이 x+dx , y+dy로 움직임을 알 수 있습니다.


scara_LGS02.png

평면상에서 어떤점 x, y를 원점을 중심으로 θ만큼 반시계 반향으로 회전하고자 하시면 Rotation Matrix를 곱해주시면 되구요~ ^^

cos, sin의 위치와 (-)마이너스 부호의 위치가 헷갈리시다면 간단하게 (2,0)을 90도 회전하는 것으로 각각의 위치를 파악할 수 있습니다.

(2,0)을 원점을 중심으로 반시계방향으로 90도 회전하면 (0,2)가 되겠죠? ^^

scara_LGS03.png



Transformation matrix를 잘 보시면 Rotation matrix와 Translation matrix를 짬뽕시킨 것입니다. ㅎㅎ

만약 로봇의 팔과 좌표계(Frame)의 방향이 일치한다면


scara_LGS16.png


우선 ① 기준 좌표계(Frame)을  ② 원점을 중심으로 θ만큼 화전시킨 후 ③회전된 좌표계에서 x축으로 L1만큼 이동시키면 되겠죠? ^^

결국 Transformation matrix는 아래와 같이 됩니다.


scara_LGS11.png 


좌표계가 아니라 점(원점)의 입장에서 본다면

scara_LGS08.png

② 원점을을 x축으로 팔의 길이만큼 옮긴 후  ③ 다시 원점을 중심으로 θ만큼 화전시키면 되겠죠? 


Link가 여러개 series로 연결되어 있으면 n번째 로봇팔 끝의 위치와 방향은

(즉 n번째 로봇팔 끝에 붙어 있는 Frame의 위치와 방향을 Reference Frame(원점)에서 바라보면)


 scara_LGS12.png


으로 간단하게 계산 할 수 있습니다. Transformation Matrix 곱하실때 방향 조심하시구요~

마지막으로 계산된 Transformation matrix를 보면(Translation, Rotation matrix)  좌표계의 위치와 각도를 바로 알 수가 있습니다.

MATLAB으로 실습해보겠습니다요~ o(^o^)o

scara_LGS13.png 


scara_LGS14.png


각각의 길이가 모두 1m인 3개의 Link로 구성된 Robot arm에 대해 각 joint의 값을 45도, 45도, -45도로 주었을때의 그림입니다.

맞게 잘 그려지네요 ^^

폄면에서는 임의의 좌표계를 표현하려면 3개의 값만 있으면 되죠? (x, y, θ)

3차원 공간의 경우 Frame을 기술하기 위해서는 6개의 값이 필요합니다. (좌표 x, y. z와 각도 α, β, γ) 즉 자유도가 6개로 늘어납니다.

평면이 아니라 3차원에서 Forward Kinematics를 하시려면 위의 골자와 아주 비슷한데 Frame의 각도를 기술하는 방법이 조금 복잡해집니다.;;

3차원 공간상의 Rotation Matrix에 관한 자세한 설명은 아래 Link를 참조하세요~

http://en.wikipedia.org/wiki/Rotation_matrix



자~ 이번시간은 여기까지 입니다.

다음 시간에 뵙겠습니다. =(=^ㅅ^=)=

profile