일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- St
- RTOS
- 모두의연구소
- PCB
- 7 세그먼트
- GPIO
- 임베디드
- 임베디드시스템
- 아트웍
- Embedded System
- TM4C123GXL
- IoT
- 초보개발자
- 8051
- Arm
- terminal
- JLCPCB
- TM4C123
- Developer
- MAC OS
- EMBEDDED
- m4
- 전자공학
- 마이컴
- TI
- CCS
- bldc
- mcu
- easyeda
- Programming
- Today
- Total
Engineering Agit
[Robotic Arm project] - 02 'Inverse-kinematics' 본문
[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를 도달시키는 것이다.
구동을 위한 로직은 위의 그림과 같이 구성된다. 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 도식화하기
각 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 결과는 다음과 같다.
이는 추후에 Jacobian matrix 구성에 사용된다.
3. Inverse kinematic analysis
3 DoF 이하의 robotic arm의 경우에는 graphical method를 통한 IKA가 가능하다. 하지만 본 project의 경우에는 4 DoF이므로 GM을 이용한 해석이 힘들다. 따라서 다음과 같은 방식으로 IKA가 진행된다.
먼저 joint 3까지에 대한 GM을 진행하면 다음과 같다. 이때 joint 3와 joint 4의 연결 부분의 좌표를 (x,y,z) 혹은 (x0_3, y0_3, z0_3)이라 칭하도록 하자.
위에서 언급한 순서대로 진행하다보면 R3_4의 경우에는 굳이 위의 방식대로 구할 필요없이 이미 FKA에서 구한 matrix라는 사실을 알 수 있다. IKA의 재미있는 점은 end-effector의 orientation을 사용자가 상황에 맞게 설정할 수 있다는 점이다. 일단 계산의 편의를 위하여 end-effector의 orientation x4의 방향을 base의 orientation z0에 평행하고 방향이 반대인 벡터로 정의하면 다음과 같은 계산으로 end-effector에 대한 IKA 최종 결과를 유도할 수 있다.
4. Velocity of end-effector
End-effector의 이동속고와 회전속도는 사용자의 작업환경에 따라 다르다. 이를 위해 각 joint의 회전속도와 이동속도의 계산이 필요하다. 이는 산술적인 방식으로는 구하기 힘들고 수치해석적인 방법이 필요하다. 이때 'Jacobian matrix'를 이용한 LAM(Linear Approximation Method)가 사용된다. 전체적인 수식 구조는 다음과 같다.
이때 jacobian matrix의 구체적인 표기는 다음과 같이 된다.
하지만 이를 매번 구하기는 무리가 있으므로 다음과 같은 방법으로 jacobian matrix를 구성하도록 한다.
본 project의 robotic arm은 각 joint가 revolute joint이므로 다음과 같이 matrix를 구성할 수 있다.
각 joint의 end-effector 목표속도에 따른 속도를 알기 위해서는 jacobian matrix의 inverse matrix를 구해야 한다. 허나 구한 jacobian matrix는 4X6 matrix이므로 역행렬이 존재할 수 없다(역행렬이 존재하려면 정다각행렬이고 rank가 행이나 열의 수와 같아야 함). 따라서 위의 수식에서 일부를 택하여 역행렬이 존재할 수 있는 정다각행렬을 구성하는데 이를 'Simplified Jacobian matrix'라고 부른다. 일전에 선정되었던 조건 중에서 end-effector의 orientation x4가 고정되어 있기 때문에 wx와 wy의 값은 '0'으로 정해진다. 따라서 이를 기준으로 SJM을 구성하면 다음과 같은 수식이 완성된다.
이 수식을 토대로 SJM의 역행렬을 구하면 각 joint에 지령해야하는 값들을 알 수 있게 된다.
'Projects > 2019 Robotic Arm project' 카테고리의 다른 글
[Robotic Arm project] - 01 (0) | 2020.08.22 |
---|