3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.2 3.2.1 3.2.0 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish
3.7.0 3.6.0 3.5.0 3.4.0 3.3.0 3.2.2 3.2.1 3.2.0 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish

ikin()

정의

ikin(pos, sol_space, ref, ref_pos_opt, iter_threshold)

기능

작업 공간내 기준 좌표계(ref)의 로봇 포즈에 상응하는 8개의 관절형상 중 지정한 관절형상(posx.sol)에 해당하는 관절각도를 리턴합니다. 관절각도는 옵션(ref_pos_opt)에 따라 기준 각도에 가장 가까운 값을 리턴합니다. 리턴 값 status를 통해 현재 로봇 포즈가 동작 영역을 벗어나는지 손목 축 특이점 영역에 있는지 확인 할 수 있습니다. posx.sol에 DR_SOL_AUTO(255)를 지정할 시, 도달 가능한 관절조합형태 중, 현재 robot configuration과 관절 공간 상에서 가장 가까운 (2-5축의 관절 공간의 L2 norm이 가장 작음) Solution Space로 이동합니다.

알아두기

  • SW 버전 V2.9 이후, 본 기능을 사용할 때 로봇의 정확도가 보정이 된 경우 정확도 보정 알고리즘이 동작합니다. 정확도 수준은 옵션(iter_threshold)에 따라 조정이 가능합니다. 또한 로봇 자세에 따라서 최대 0.1초의 지연이 있을 수 있습니다.

  • 로봇 각 모델 별로 알려진 보정 전 DH 파라미터 값에 해당하는 역기구학 해를 구하기 위해서는 ikin_norm() 명령어를 참조 하시기 바랍니다.

  • ikin의 return posj 값을 thread를 사용하여 전역변수 업데이트 하는 경우, 'Lock'을 사용하여 전역변수의 충돌을 막으십시오.

주의

res_pos_opt 파라미터를 입력하지 않을 경우 pos 만 반환됩니다. ref_pos_opt 파라미터를 입력하지 않은 상태에서 ref, status = ikin(...)  형태로 사용할 경우 Runtime error가 발생할 수 있습니다.

인수

인수명

자료형

기본값

설명

pos

posx

-

posx 또는

position list

list (float[6])

sol_space

int

-

solution space

  • None: 3.2부터는 사용하지 않음. (posx.sol 사용 권장)

  • 0~7: ~2.x drl 호환용.

  • DR_SOL_AUTO(255): ~2.x drl 호환용.

ref

int

DR_BASE

reference coordinate

  • DR_BASE : base coordinate

  • DR_WORLD : world coordinate

ref_pos_opt

int

0

멀티턴 해 생성시 옵션에 따른 기준 위치에 가까운 해 선택

  • 0 : posj(0,0,0,0,0,0) 조인트 각도 기준

  • 1 : 현재 조인트 각도 기준

iter_threshold

list (float[2])

0.005

정확도가 보정 된 경우, 정확도 보정 알고리즘의 수준

TCP position (X, Y, Z)의 norm 값 [mm]

0.01

정확도가 보정 된 경우, 정확도 보정 알고리즘의 수준

TCP orientation (A, B, C)의 norm 값 [deg]

Solution Space w.r.t. Robot Configuration

Solution space

Binary

Shoulder

Elbow

Wrist

0

000

Lefty

Below

No Flip

1

001

Lefty

Below

Flip

2

010

Lefty

Above

No Flip

3

011

Lefty

Above

Flip

4

100

Righty

Below

No Flip

5

101

Righty

Below

Flip

6

110

Righty

Above

No Flip

7

111

Righty

Above

Flip

255

Auto Calculation (the smallest L2 norm in the joint space of axes 2-5)

리턴

설명

posj

Joint space point

status

  • 0 : 조인트 값 정상 반환

  • 1 : 동작 영역을 벗어남

  • 2 : 손목 축 특이점

예외

예외

설명

DR_Error (DR_ERROR_TYPE)

인수들의 데이터형 오류 시

DR_Error (DR_ERROR_VALUE)

인수의 값이 유효하지 않을 시

DR_Error (DR_ERROR_RUNTIME)

C Extension 모듈 에러 발생 시

DR_Error (DR_ERROR_STOP)

프로그램 강제 종료 시

예제

Python
## 2.x 호환 코드
x1 = posx(370.9, 719.7, 651.5, 90, -180, 0)
q1, status = ikin(x1, 2, DR_BASE, ref_pos_opt=0) # 로봇끝단의 좌표가 x1이 되는 관절각 q1 (8가지 경우 중 첫번째), posj(0,0,0,0,0,0) 조인트 각도 기준
# q1=posj(60.3, 81.0, -60.4, -0.0, 159.4, -29.7) (M1013, tcp=(0,0,0)경우)
movej(q1,v=10,a=20)

## 3.2~ 코드
x1 = posx(370.9, 719.7, 651.5, 90, -180, 0, sol=2)
q1, status = ikin(x1, ref=DR_BASE, ref_pos_opt=0) # 로봇끝단의 좌표가 x1이 되는 관절각 q1 (8가지 경우 중 첫번째), posj(0,0,0,0,0,0) 조인트 각도 기준
# q1=posj(60.3, 81.0, -60.4, -0.0, 159.4, -29.7) (M1013, tcp=(0,0,0)경우)
movej(q1,v=10,a=20)

관련 명령어