Breadcrumbs

movejx()

정의

movejx(pos, vel, acc, time, radius, ref, mod, ra, sol, velx)

기능

로봇이 관절 공간 안에서 목표 위치(pos)로 이동합니다.

목표 위치는 작업 공간 상의 posx형으로 입력하므로 movel과 동일하게 이동합니다. 하지만 이 로봇의 모션은 관절 공간에서 이루어지기 때문에 목표 위치까지 직선 경로가 보장되지 않습니다. 추가적으로 하나의 작업 공간 좌표(posx)에 대응하는 8가지의 관절 조합 형태(robot configuration)중 하나를 sol(solution space)에 지정하여야 합니다. sol에 DR_SOL_AUTO(255)를 지정할 시, 8가지의 관절 조합 형태 중, 현재 robot configuration과 관절 공간 상에서 가장 가까운 (2-5 축의 관절 공간의 L2 norm이 가장 작음) Solution Space로 이동합니다.

알아두기

V3.2 버전부터, movejx는 2.x 호환 형태로만 제공되고, 새로운 posx 타입에 대한 기능은 movej에서 지원됩니다.

인수

인수명

자료형

기본값

설명

pos

posx

-

posx 또는

position list

list (float[6])

vel (v)

float

None

velocity(모든 축에 동일) 또는

velocity(축별 velocity)

list (float[6])

None

acc (a)

float

None

acceleration(모든 축에 동일) 또는

acceleration(축별 acceleration)

list (float[6])

None

time (t)

float

None

도달 시간 [sec]

radius (r)

float

None

blending시 radius

ref

int

None

reference coordinate

  • DR_BASE: base coordinate

  • DR_WORLD: world coordinate

  • DR_TOOL: tool coordinate

  • user coordinate: 사용자 정의

mod

int

DR_MV_MOD_ABS

이동 기준

  • DR_MV_MOD_ABS: 절대

  • DR_MV_MOD_REL: 상대

ra

int

DR_MV_RA_DUPLICATE

Reactive motion mode

  • DR_MV_RA_DUPLICATE: duplicate

  • DR_MV_RA_OVERRIDE: override

sol

int

0

Solution space

  • 표. Robot Configuration 참고

velx

float

None

TCP speed limiting

알아두기

  • 단축 인수를 지원합니다. (v:vel, a:acc, t:time, r:radius)

  • vel이 None인 경우, _global_velj가 적용됩니다. (_global_velj 초깃값은 0.0이며, set_velj에 의해 설정 가능)

  • acc가 None인 경우, _global_accj가 적용됩니다. (_global_accj 초깃값은 0.0이며, set_accj에 의해 설정 가능)

  • time을 지정할 경우 vel, acc를 무시하고 time 기준으로 처리됩니다.

  • time이 None인 경우, 0으로 처리됩니다.

  • radius가 None이고 블렌딩 구간인 경우는 blending radius로 처리되며 아닌 경우는 0으로 처리됩니다.

  • ref가 None인 경우 _g_coord가 적용됩니다. (_g_coord 초깃값은 DR_BASE이며, set_ref_coord 명령에 의해 설정 가능)

  • 상대 모션으로 입력하는 경우(mod=DR_MV_MOD_REL), 선행 모션에 블렌딩을 사용하는 경우 에러가 발생하므로 movej() 또는 movel()을 이용하여 블렌딩하는 것을 권장합니다.

  • 옵션 ra 및 vel/acc에 따른 블렌딩을 수행할 경우 movej(), movel() 설명을 참조하십시오.

  • velx가 None으로 설정되어 있고, set_velx에서 clamp를 DR_ON으로 활성화된 경우, _global_velx가 적용됩니다. (_global_velx 초깃값은 0.0이며, set_velx에 의해 설정)

주의

  • SW V2.8 미만의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 이후 모션에 영향을 주기 때문에 모션이 수행되지 않습니다. 블렌딩 에러 발생하면 실행 중인 태스크 프로그램이 종료됩니다.

  • SW V2.8 이상의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 반지름 크기는 자동으로 총 이동 거리의 1/2로 변경됩니다. 변경 내역은 information log 메시지로 확인할 수 있습니다.

Robot configuration (형태 vs. solution space)

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

DR_SOL_AUTO(255)

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

리턴

설명

0

성공

음수값

오류

예외

예외

설명

DR_Error (DR_ERROR_TYPE)

인수들의 데이터형 오류 시

DR_Error (DR_ERROR_VALUE)

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

DR_Error (DR_ERROR_RUNTIME)

C Extension 모듈 에러 발생 시

DR_Error (DR_ERROR_STOP)

프로그램 강제 종료 시

예제

Python
P0 = posj(0,0,90,0,90,0)

movej(P0, v=30, a=30)

P1 = posx(400,500,800,0,180,0)
P2 = posx(400,500,500,0,180,0)

movel(P2, vel=100, acc=200)     # P2로 직선이동

X_tmp, sol_init = get_current_posx()   # P2위치에서 현재의 solution space를 얻어옴

movejx(P1, vel=30, acc=60, sol=sol_init)  
# 속도 30(deg/sec), 60(deg/sec2)로 TCP끝단이 P1위치일 때의 관절각으로
# 이동 (직전P2위치에서의 solution space 유지)

movejx(P2, time=5, sol=2)        
# TCP끝단이 P2위치일 때의 관절각으로 5초의 도착시간을 가지고
# 이동 (solution space를 강제로 2로 지정)

movejx(P1, vel=[10, 20, 30, 40, 50, 60], acc=[20, 20, 30, 30, 40, 40], radius=100, sol=2)
# TCP끝단이 P1위치일 때의 관절각으로 이동시키며 P1 위치로부터 100mm의
# 거리가 될 때 다음 모션을 수행하도록 설정

movejx(P2, v=30, a=60, ra= DR_MV_RA_OVERRIDE, sol=2)
# 이전 모션을 즉시 종료시키며 Blending하여 TCP끝단이 P2위치일 때의 
# 관절각으로 이동

movejx(P1, v=60, a=60, sol=255, velx=100)
# TCP 속도를 100mm/s 넘지 않도록 조절하며,
# TCP 끝단이 P1위치일 때의 관절각으로 이동

관련 명령어