movejx()
기능
로봇이 관절 공간 안에서 목표 위치(pos)로 이동합니다.
목표 위치는 작업공간 상의 posx형으로 입력하므로 movel과 동일하게 이동합니다. 하지만 이 로봇의 모션은 관절공간에서 이루어지기 때문에 목표 위치까지 직선경로가 보장되지 않습니다. 추가적으로 하나의 작업공간좌표(posx)에 대응하는 8가지의 관절조합형태(robot configuration)중 하나를 sol(solution space)에 지정하여야 합니다.
Note
V3.2 버전부터, movejx는 2.x 호환 형태로만 제공되고, 새로운 posx type에 대한 해당 기능은 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
|
mod | int | DR_MV_MOD_ABS | 이동 기준
|
ra | int | DR_MV_RA_DUPLICATE | Reactive motion mode
|
sol | int | 0 | Solution space |
알아두기
단축 인수를 지원합니다. (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() 설명을 참조하십시오.
주의
SW V2.8 미만의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 이후 모션에 영향을 주기 때문에 모션이 수행되지 않으며, 블렌딩 에러 발생 시 실행 중인 태스크 프로그램이 종료됩니다.
SW V2.8 이상의 버전에서는 블렌딩 반지름 크기가 총 이동 거리의 1/2을 넘을 경우, 블렌딩 반지름 크기는 자동으로 총 이동 거리의 1/2로 변경되며, 변경 내역은 information log 메시지로 확인할 수 있습니다.
Robot configuration (형태 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 |
리턴
값 | 설명 |
---|---|
0 | 성공 |
음수값 | 오류 |
예외
예외 | 설명 |
---|---|
DR_Error (DR_ERROR_TYPE) | 인수들의 데이터형 오류 시 |
DR_Error (DR_ERROR_VALUE) | 인수의 값이 유효하지 않을 시 |
DR_Error (DR_ERROR_RUNTIME) | C Extension 모듈 에러 발생 시 |
DR_Error (DR_ERROR_STOP) | 프로그램 강제 종료 시 |
예제
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위치일 때의
# 관절각으로 이동