movej()
기능
로봇이 현재 관절위치에서 목표 관절위치(pos)로 이동합니다.
pos에 posj가 입력될 경우 기존처럼 movej로 동작
pos에 posx가 입력될 경우 기존 movejx처럼 동작 (posx 입력할 경우 ref 변수 추가 입력 가능) → 2.x 버전의 movejx 기능과 동일합니다.
Note
V3.2 버전부터, movejx 기능은 새로운 posx type과 함께 movej 에서 지원됩니다.
인수
인수명 | 자료형 | 기본값 | 설명 |
pos | posj | - | posj 또는 joint angle list posx |
list (float[6]) | |||
posx | |||
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 |
mod | int | DR_MV_MOD_ABS | 이동 기준
|
ra | int | DR_MV_RA_DUPLICATE | Reactive motion mode
|
ref | int | None | reference coordinate
|
알아두기
단축 인수를 지원합니다. (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으로 처리됩니다.
진행 중인 모션(선행모션)이 종료되지 않은 상태에서 새로운 모션명령(후행모션)이 실행되면 선행모션과 후행모션이 부드럽게 연결됩니다(모션 블렌딩 기능). 이 때 선행모션의 목표점을 유지하거나 취소할 수 있도록 결정하는 옵션 ra를 후행모션에 설정할 수 있습니다. (유지 : ra= DR_MV_RA_DUPLICATE / 취소 : ra= DR_MV_RA_OVERRIDE) 예를 들어 아래의 그림에서 목표점이 Target#1인 선행모션의 진행 중 ‘2nd motion event’ 지점에서 후행모션이 실행된 경우 후행모션의 옵션 ra= DR_MV_RA_DUPLICATE 이면 선행모션의 목표점을 유지하므로 주황색 궤적과 같이 움직이며 ra= DR_MV_RA_OVERRIDE 이면 선행모션의 목표점을 취소하므로 초록색 궤적과 같이 움직이게 됩니다.

주의
ra=DR_MV_RA_DUPLICATE 및 radius>0 조건으로 후속 모션이 블렌딩 될 경우 선행모션의 잔여거리, 속도, 가속도로 결정되는 잔여모션시간이 후행모션의 모션시간보다 큰 경우 후행모션이 먼저 종료된 후 선행모션이 종료될 수 있습니다.
관련한 사항은 아래 이미지를 잠고하십시오.

SW V2.8 미만의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 이후 모션에 영향을 주기 때문에 모션이 수행되지 않으며, 블렌딩 에러 발생 시 실행 중인 태스크 프로그램이 종료됩니다.
SW V2.8 이상의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 반지름 크기는 자동으로 총 이동 거리의 1/2로 변경되며, 변경 내역은 information log 메시지로 확인할 수 있습니다.
리턴
값 | 설명 |
---|---|
0 | 성공 |
음수값 | 실패 |
예외
예외 | 설명 |
---|---|
DR_Error (DR_ERROR_TYPE) | 인수들의 데이터형 오류 시 |
DR_Error (DR_ERROR_VALUE) | 인수의 값이 유효하지 않을 시 |
DR_Error (DR_ERROR_RUNTIME) | C Extension 모듈 에러 발생 시 |
DR_Error (DR_ERROR_STOP) | 프로그램 강제 종료 시 |
예제
Q1 = posj(0,0,90,0,90,0)
Q2 = posj(0,0,0,0,90,0)
movej(Q1, vel=10, acc=20)
# 속도 10(deg/sec), 가속도 20(deg/sec2)로 Q1관절각으로 이동
movej(Q2, time=5)
# Q2관절각까지 5초의 도착시간을 가지고 이동
movej(Q1, v=30, a=60, r=200)
# Q1관절각으로 이동하며 Q1의 공간위치로부터 200mm의 거리가 될 때 다음
# 모션을 수행하도록 설정
movej(Q2, v=30, a=60, ra= DR_MV_RA_OVERRIDE)
# 직전모션을 즉시 종료시키며 Blending하여 Q2관절각으로 이동
## movejx function
P1 = posx(400,500,800,0,180,0, sol=2)
movej(P1, v=30, a=60)