Engineering Agit

[Robotic Arm project] - 02 'Inverse-kinematics' 본문

Projects/2019 Robotic Arm project

[Robotic Arm project] - 02 'Inverse-kinematics'

Sean_Kim95 2020. 8. 22. 16:09

◈ Introduction

 본 게시물은 robotic arm 제어를 위해 제어로직을 짜기 위한 선행공부에 해당한다. 그 방식으로 Inverse-kinematics(역기구학; 다관절 기구물의 end-effector의 경로와 속도를 알 때에 각 joint의 각도와 속도 값이 어떻게 될 것인가에 대해 구하는 방법)를 선정하였다.

https://en.m.wikipedia.org/wiki/Inverse_kinematics

 

1. Basic movement

 Robotic arm의 기본 구동은 사용자가 입력한 좌표에 end-effector를 도달시키는 것이다. 

<Fig. 1> Schematic logic to control robotic arm

 

 구동을 위한 로직은 위의 그림과 같이 구성된다.  Inverse-kinematics를 이용하여 각 모터의 target angle과 target velocity를 구하고 이를 각 모터에 명령하는 구조가 control logic의 핵심이다.

 

2. Kinematics

 Robotic arm의 구동을 위해서는 FK(Forward kinematics) 혹은 IK(Inverse kinematics) 방식을 이용한 기구학적 분석이 필요하다. 이를 위해서 'Angela Sodemann'의 유튜브 강좌를 참고하였다(https://www.youtube.com/user/asodemann3).

1. Denavit-Hartenburg의 기법을 이용하여 robotic arm 도식화하기

<Fig. 2-1>

 

 각 input angle(Theta0~Theta3)의 단위는 'radian'이며 sign convention은 그림의 표기한 방향이 '+'이다. 길이의 단위는 'm'로 한다. 

 

2. Forward kinematic analysis

 FKA에서는 각 joint의 움직임에 따른 end-effector의 위치를 구하기 위해 'Rotational matrix'와 'Displacement vector'를 구성한다. 이후 'HTM(Homogeneous Transformation Matrix)'를 위에서 구한 RM과 DV를 이용하여 구한다. <Fig. 2-1>의 FKA 결과는 다음과 같다.

<Fig. 2-1>
<Fig. 2-2>

 

 이는 추후에 Jacobian matrix 구성에 사용된다.

 

3. Inverse kinematic analysis

 3 DoF 이하의 robotic arm의 경우에는 graphical method를 통한 IKA가 가능하다. 하지만 본 project의 경우에는 4 DoF이므로 GM을 이용한 해석이 힘들다. 따라서 다음과 같은 방식으로 IKA가 진행된다.

<Fig. 3-1>

 

 먼저 joint 3까지에 대한 GM을 진행하면 다음과 같다. 이때 joint 3와 joint 4의 연결 부분의 좌표를 (x,y,z) 혹은 (x0_3, y0_3, z0_3)이라 칭하도록 하자.

<Fig. 3-2>

 

 위에서 언급한 순서대로 진행하다보면 R3_4의 경우에는 굳이 위의 방식대로 구할 필요없이 이미 FKA에서 구한 matrix라는 사실을 알 수 있다. IKA의 재미있는 점은 end-effector의 orientation을 사용자가 상황에 맞게 설정할 수 있다는 점이다. 일단 계산의 편의를 위하여 end-effector의 orientation x4의 방향을 base의 orientation z0에 평행하고 방향이 반대인 벡터로 정의하면 다음과 같은 계산으로 end-effector에 대한 IKA 최종 결과를 유도할 수 있다. 

<Fig. 3-3>

 

4. Velocity of end-effector

 End-effector의 이동속고와 회전속도는 사용자의 작업환경에 따라 다르다. 이를 위해 각 joint의 회전속도와 이동속도의 계산이 필요하다. 이는 산술적인 방식으로는 구하기 힘들고 수치해석적인 방법이 필요하다. 이때 'Jacobian matrix'를 이용한 LAM(Linear Approximation Method)가 사용된다. 전체적인 수식 구조는 다음과 같다.

<Fig. 4-1>

 

이때 jacobian matrix의 구체적인 표기는 다음과 같이 된다.

<Fig. 4-2>

 

하지만 이를 매번 구하기는 무리가 있으므로 다음과 같은 방법으로 jacobian matrix를 구성하도록 한다.

<Fig. 4-3>

 

본 project의 robotic arm은 각 joint가 revolute joint이므로 다음과 같이 matrix를 구성할 수 있다.

<Fig. 4-4>

 

각 joint의 end-effector 목표속도에 따른 속도를 알기 위해서는 jacobian matrix의 inverse matrix를 구해야 한다. 허나 구한 jacobian matrix는 4X6 matrix이므로 역행렬이 존재할 수 없다(역행렬이 존재하려면 정다각행렬이고 rank가 행이나 열의 수와 같아야 함). 따라서 위의 수식에서 일부를 택하여 역행렬이 존재할 수 있는 정다각행렬을 구성하는데 이를 'Simplified Jacobian matrix'라고 부른다. 일전에 선정되었던 조건 중에서 end-effector의 orientation x4가 고정되어 있기 때문에 wx와 wy의 값은 '0'으로 정해진다. 따라서 이를 기준으로 SJM을 구성하면 다음과 같은 수식이 완성된다.

<Fig. 4-5>

 

이 수식을 토대로 SJM의 역행렬을 구하면 각 joint에 지령해야하는 값들을 알 수 있게 된다.

'Projects > 2019 Robotic Arm project' 카테고리의 다른 글

[Robotic Arm project] - 01  (0) 2020.08.22
Comments